Moved Shaders src to CodeWalker.Shaders

This commit is contained in:
Carmine Giugliano
2019-11-18 16:25:40 +01:00
Unverified
parent 5eaea931bf
commit 2013535aec
86 changed files with 6 additions and 6 deletions
-542
View File
@@ -1,542 +0,0 @@
#include "Shadowmap.hlsli"
Texture2D<float4> Colourmap : register(t0);
Texture2D<float4> Bumpmap : register(t2);
Texture2D<float4> Specmap : register(t3);
Texture2D<float4> Detailmap : register(t4);
Texture2D<float4> Colourmap2 : register(t5);
SamplerState TextureSS : register(s0);
cbuffer PSSceneVars : register(b0)
{
ShaderGlobalLightParams GlobalLights;
uint EnableShadows;
uint RenderMode;//0=default, 1=normals, 2=tangents, 3=colours, 4=texcoords, 5=diffuse, 6=normalmap, 7=spec, 8=direct
uint RenderModeIndex;
uint RenderSamplerCoord;
}
cbuffer PSGeomVars : register(b2)
{
uint EnableTexture;//1+=diffuse1, 2+=diffuse2
uint EnableTint;
uint EnableNormalMap;
uint EnableSpecMap;
uint EnableDetailMap;
uint IsDecal;
uint IsEmissive;
uint IsDistMap;
float bumpiness;
float AlphaScale;
float HardAlphaBlend;
float useTessellation;
float4 detailSettings;
float3 specMapIntMask;
float specularIntensityMult;
float specularFalloffMult;
float specularFresnel;
float wetnessMultiplier;
uint SpecOnly;
float4 TextureAlphaMask;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Shadows : TEXCOORD3;
float4 LightShadow : TEXCOORD4;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tint : COLOR2;
float4 Tangent : TEXCOORD5;
float4 Bitangent : TEXCOORD6;
float3 CamRelPos : TEXCOORD7;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
float4 c = float4(0.5, 0.5, 0.5, 1);
if (RenderMode == 0) c = float4(1, 1, 1, 1);
if (EnableTexture > 0)
{
float2 texc = input.Texcoord0;
if (RenderMode >= 5)
{
if (RenderSamplerCoord == 2) texc = input.Texcoord1;
else if (RenderSamplerCoord == 3) texc = input.Texcoord2;
}
c = Colourmap.Sample(TextureSS, texc);
if (EnableTexture > 1) //2+ enables diffuse2
{
float4 c2 = Colourmap2.Sample(TextureSS, input.Texcoord1);
c = c2.a * c2 + (1 - c2.a) * c;
}
if (IsDistMap) c = float4(c.rgb*2, (c.r+c.g+c.b) - 1);
if ((IsDecal == 0) && (c.a <= 0.33)) discard;
if ((IsDecal == 1) && (c.a <= 0.0)) discard;
if(IsDecal==0) c.a = 1;
if (IsDecal == 2)
{
float4 mask = TextureAlphaMask * c;
c.a = saturate(mask.r + mask.g + mask.b + mask.a);
c.rgb = 0;
}
c.a = saturate(c.a*AlphaScale);
}
if (EnableTint > 0)
{
c.rgb *= input.Tint.rgb;
}
if (IsDecal == 1)
{
c.a *= input.Colour0.a;
}
float3 norm = normalize(input.Normal);
if (RenderMode == 1) //normals
{
c.rgb = norm*0.5+0.5;
}
else if (RenderMode == 2) //tangents
{
c.rgb = normalize(input.Tangent.rgb)*0.5+0.5;
}
else if (RenderMode == 3) //colours
{
c.rgb = input.Colour0.rgb;
if (RenderModeIndex == 2) c.rgb = input.Colour1.rgb;
}
else if (RenderMode == 4) //texcoords
{
c.rgb = float3(input.Texcoord0, 0);
if (RenderModeIndex == 2) c.rgb = float3(input.Texcoord1, 0);
if (RenderModeIndex == 3) c.rgb = float3(input.Texcoord2, 0);
}
float3 spec = 0;
if (RenderMode == 0)
{
float4 nv = Bumpmap.Sample(TextureSS, input.Texcoord0); //sample r1.xyzw, v2.xyxx, t3.xyzw, s3 (BumpSampler)
float4 sv = Specmap.Sample(TextureSS, input.Texcoord0); //sample r2.xyzw, v2.xyxx, t4.xyzw, s4 (SpecSampler)
float2 nmv = nv.xy;
float4 r0 = 0, r1, r2, r3;
if (EnableNormalMap)
{
if (EnableDetailMap)
{
//detail normalmapp
r0.xy = input.Texcoord0 * detailSettings.zw; //mul r0.xy, v2.xyxx, detailSettings.zwzz
r0.zw = r0.xy * 3.17; //mul r0.zw, r0.xxxy, l(0.000000, 0.000000, 3.170000, 3.170000)
r0.xy = Detailmap.Sample(TextureSS, r0.xy).xy - 0.5; //sample r1.xyzw, r0.xyxx, t2.xyzw, s2 (DetailSampler) //mad r0.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
r0.zw = Detailmap.Sample(TextureSS, r0.zw).xy - 0.5; //sample r1.xyzw, r0.zwzz, t2.xyzw, s2 (DetailSampler) //mad r0.zw, r1.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000) //r0.zw = r0.zw*0.5; //mul r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
r0.xy = r0.xy + r0.zw; //mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), r0.zwzz
r0.yz = r0.xy * detailSettings.y; //mul r0.yz, r0.xxyx, detailSettings.yyyy
//r0.x = -r0.x*detailSettings.x; //mul r0.x, -r0.x, detailSettings.x
nmv = r0.yz*sv.w + nv.xy; //mad r0.yz, r0.yyzy, r2.wwww, r1.xxyx //add detail to normal, using specmap(!)
}
norm = NormalMap(nmv, bumpiness, input.Normal.xyz, input.Tangent.xyz, input.Bitangent.xyz);
}
if (EnableSpecMap == 0)
{
sv = float4(0.1,0.1,0.1,0.1);
}
float r1y = norm.z - 0.35; ////r1.y = r0.w*r1.x - 0.35; //mad r1.y, r0.w, r1.x, l(-0.350000)
float3 globalScalars = float3(0.5, 0.5, 0.5);
float globalScalars2z = 1;// 0.65; //wet darkness?
float wetness = 0;// 10.0;
r0.x = 0;// .5;
r0.z = 1 - globalScalars2z; //add r0.z, -globalScalars2.z, l(1.000000)
r0.y = saturate(r1y*1.538462); //mul_sat r0.y, r1.y, l(1.538462)
r0.y = r0.y * wetness; //mul r0.y, r0.y, gDynamicBakesAndWetness.z
r0.y = r0.y * r0.z; //mul r0.y, r0.z, r0.y
r1.yz = input.Colour0.xy * globalScalars.zy; //mul r1.yz, v1.xxyx, globalScalars.zzyz //vertex.colour0
r0.y = r0.y * r1.y; //mul r0.y, r0.y, r1.y
r0.x = r0.x * sv.w + 1.0; //mad r0.x, r0.x, r2.w, l(1.000000)
sv.xy = sv.xy*sv.xy; //mul r2.xy, r2.xyxx, r2.xyxx
r0.z = sv.w * specularFalloffMult; //mul r0.z, r2.w, specularFalloffMult
r3.y = r0.z * 0.001953125; //mul r3.y, r0.z, l(0.001953) (1/512)
r0.z = dot(sv.xyz, specMapIntMask); //dp3 r0.z, r2.xyzx, specMapIntMask.xyzx
r0.z = r0.z*specularIntensityMult; //mul r0.z, r0.z, specularIntensityMult
r3.x = r0.x * r0.z; //mul r3.x, r0.x, r0.z
r0.z = saturate(r0.z*r0.x + 0.4); //mad_sat r0.z, r0.z, r0.x, l(0.400000)
//sv.xy = r0.z*float2(0.5, 0.488281); //mul r2.xy, r0.zzzz, l(0.500000, 0.488281, 0.000000, 0.000000)
r0.z = 1 - r3.x*0.5; //mad r0.z, -r3.x, l(0.500000), l(1.000000)
r0.z = r0.z * r0.y; //mul r0.z, r0.z, r0.y
r0.y = r0.y * wetnessMultiplier; //mul r0.y, r0.y, wetnessMultiplier
r0.z = 1 - r0.z*0.5; //mad r0.z, r0.z, l(-0.500000), l(1.000000)
float3 tc = c.rgb * r0.x;
c.rgb = tc * r0.z; //diffuse factors...
float3 incident = normalize(input.CamRelPos);
float3 refl = normalize(reflect(incident, norm));
float specb = saturate(dot(refl, GlobalLights.LightDir));
float specp = max(exp(specb * 10) - 1, 0);
spec += GlobalLights.LightDirColour.rgb * 0.00006 * specp * r0.z * sv.x * specularIntensityMult;// ((specularIntensityMult != 0) ? 1 : 0);
if (SpecOnly == 1)
{
c.a *= (EnableSpecMap == 0) ? nv.a : saturate(specp);
}
}
float4 fc = c;
c.rgb = FullLighting(c.rgb, spec, norm, input.Colour0, GlobalLights, EnableShadows, input.Shadows.x, input.LightShadow);
if (IsEmissive==1)
{
c.rgb += fc.rgb;
}
else
{
}
//c.rgb = max(c.rgb, 0);
c.a = saturate(c.a);
return c;
}
//normal_spec_detail.fxc_PS_DeferredTextured
//mul r0.xy, v2.xyxx, detailSettings.zwzz
//mul r0.zw, r0.xxxy, l(0.000000, 0.000000, 3.170000, 3.170000)
//sample r1.xyzw, r0.xyxx, t2.xyzw, s2 (DetailSampler)
//mad r0.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
//sample r1.xyzw, r0.zwzz, t2.xyzw, s2 (DetailSampler)
//mad r0.zw, r1.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
//mul r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
//mad r0.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), r0.zwzz
//mul r0.yz, r0.xxyx, detailSettings.yyyy
//mul r0.x, -r0.x, detailSettings.x
//sample r1.xyzw, v2.xyxx, t3.xyzw, s3 (BumpSampler)
//sample r2.xyzw, v2.xyxx, t4.xyzw, s4 (SpecSampler)
//mad r0.yz, r0.yyzy, r2.wwww, r1.xxyx
//mad r0.yz, r0.yyzy, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
//max r0.w, bumpiness, l(0.001000)
//mul r1.xy, r0.wwww, r0.yzyy
//dp2 r0.y, r0.yzyy, r0.yzyy
//add r0.y, -r0.y, l(1.000000)
//sqrt r0.y, |r0.y|
//mul r1.yzw, r1.yyyy, v5.xxyz
//mad r1.xyz, r1.xxxx, v4.xyzx, r1.yzwy
//mad r0.yzw, r0.yyyy, v3.xxyz, r1.xxyz
//dp3 r1.x, r0.yzwy, r0.yzwy
//rsq r1.x, r1.x
//mad r1.y, r0.w, r1.x, l(-0.350000)
//mul r0.yzw, r0.yyzw, r1.xxxx
//mad o1.xyz, r0.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
//add r0.z, -globalScalars2.z, l(1.000000)
//mul_sat r0.y, r1.y, l(1.538462)
//mul r0.y, r0.y, gDynamicBakesAndWetness.z
//mul r0.y, r0.z, r0.y
//mul r1.yz, v1.xxyx, globalScalars.zzyz
//mul r0.y, r0.y, r1.y
//mad r0.x, r0.x, r2.w, l(1.000000)
//mul r2.xy, r2.xyxx, r2.xyxx
//mul r0.z, r2.w, specularFalloffMult
//mul r3.y, r0.z, l(0.001953)
//dp3 r0.z, r2.xyzx, specMapIntMask.xyzx
//mul r0.z, r0.z, specularIntensityMult
//mul r3.x, r0.x, r0.z
//mad_sat r0.z, r0.z, r0.x, l(0.400000)
//mul r2.xy, r0.zzzz, l(0.500000, 0.488281, 0.000000, 0.000000)
//mad r0.z, -r3.x, l(0.500000), l(1.000000)
//mul r0.z, r0.z, r0.y
//mul r0.y, r0.y, wetnessMultiplier
//mad r0.z, r0.z, l(-0.500000), l(1.000000)
//sample r4.xyzw, v2.xyxx, t0.xyzw, s0 //DiffuseSampler
//mul r4.xyzw, r0.xxxx, r4.xyzw
//mul o0.xyz, r0.zzzz, r4.xyzx
//mul r0.x, r4.w, v1.w
//mul o0.w, r0.x, globalScalars.x
//add r0.x, wetnessMultiplier, l(-0.200000)
//mul_sat r0.x, r0.x, l(10.000000)
//mad_sat r0.z, v3.z, l(128.000000), l(-127.000000)
//mul o1.w, r0.x, r0.z
//mov r2.z, l(0.970000)
//mov r3.z, specularFresnel
//add r0.xzw, r2.xxyz, -r3.xxyz
//max r0.xzw, r0.xxzw, l(0.000000, 0.000000, 0.000000, 0.000000)
//mad r0.xyz, r0.xzwx, r0.yyyy, r3.xyzx
//sqrt o2.xy, r0.xyxx
//mov o2.z, r0.z
//mov o2.w, l(1.000000)
//mad r1.x, v1.x, globalScalars.z, gLightArtificialIntAmbient0.w
//mul r0.xy, r1.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000)
//sqrt o3.xy, r0.xyxx
//mov o3.zw, l(0,0,0,1.001884)
/*
//normal_spec.fxc_PS_DeferredTextured
//
max r0.x, bumpiness, l(0.001000) //cb12[1].w
sample r1.xyzw, v2.xyxx, BumpSampler.xyzw, s2
mad r0.yz, r1.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
mul r0.xw, r0.xxxx, r0.yyyz
dp2 r0.y, r0.yzyy, r0.yzyy
add r0.y, -r0.y, l(1.000000)
sqrt r0.y, |r0.y|
mul r1.xyz, r0.wwww, v5.xyzx
mad r0.xzw, r0.xxxx, v4.xxyz, r1.xxyz
mad r0.xyz, r0.yyyy, v3.xyzx, r0.xzwx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mad r1.x, r0.z, r0.w, l(-0.350000)
mul r0.xyz, r0.wwww, r0.xyzx
mad o1.xyz, r0.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
mul_sat r0.x, r1.x, l(1.538462)
mul r0.x, r0.x, gDynamicBakesAndWetness.z //cb5[3].z
add r0.y, -globalScalars2.z, l(1.000000) //cb2[12].z
mul r0.x, r0.y, r0.x
mul r1.yz, v1.xxyx, globalScalars.zzyz //vertex.colour0, cb2[11].zzyz
mul r0.x, r0.x, r1.y
sample r2.xyzw, v2.xyxx, SpecSampler.xyzw, s3
mul r2.xy, r2.xyxx, r2.xyxx
mul r0.y, r2.w, specularFalloffMult //cb12[0].y
mul r3.y, r0.y, l(0.001953)
dp3 r0.y, r2.xyzx, specMapIntMask.xyzx //cb12[1].xyzx
mul r3.x, r0.y, specularIntensityMult //cb12[0].z
mad_sat r0.y, r0.y, specularIntensityMult, l(0.400000) //cb12[0].z
mul r2.xy, r0.yyyy, l(0.500000, 0.488281, 0.000000, 0.000000)
mad r0.y, -r3.x, l(0.500000), l(1.000000)
mul r0.y, r0.y, r0.x
mul r0.x, r0.x, wetnessMultiplier; //cb12[2].x
mad r0.y, r0.y, l(-0.500000), l(1.000000)
sample r4.xyzw, v2.xyxx, DiffuseSampler.xyzw, s0
mul o0.xyz, r0.yyyy, r4.xyzx
mul r0.y, r4.w, v1.w //vertex.colour0
mul o0.w, r0.y, globalScalars.x //cb2[11].x
add r0.y, wetnessMultiplier, l(-0.200000) //cb12[2].x
mul_sat r0.y, r0.y, l(10.000000)
mad_sat r0.z, v3.z, l(128.000000), l(-127.000000)
mul o1.w, r0.y, r0.z
mov r2.z, l(0.970000)
mov r3.z, specularFresnel //cb12[0].x
add r0.yzw, r2.xxyz, -r3.xxyz
max r0.yzw, r0.yyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
mad r0.xyz, r0.yzwy, r0.xxxx, r3.xyzx
sqrt o2.xy, r0.xyxx
mov o2.z, r0.z
mov o2.w, l(1.000000)
mad r1.x, v1.x, globalScalars.z, gLightArtificialIntAmbient0.w //vertex.colour0, cb2[11].z, cb3[45].w
mul r0.xy, r1.xzxx, l(0.500000, 0.500000, 0.000000, 0.000000)
sqrt o3.xy, r0.xyxx
mov o3.zw, l(0,0,0,1.001884)
ret
// Approximately 54 instruction slots used
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// DiffuseSampler sampler NA NA s0 1
// BumpSampler sampler NA NA s2 1
// SpecSampler sampler NA NA s3 1
// DiffuseSampler texture float4 2d t0 1
// BumpSampler texture float4 2d t2 1
// SpecSampler texture float4 2d t3 1
// misc_globals cbuffer NA NA cb2 1
// lighting_globals cbuffer NA NA cb3 1
// more_stuff cbuffer NA NA cb5 1
// megashader_locals cbuffer NA NA cb12 1
//
//
// Buffer Definitions:
//
// cbuffer misc_globals
// {
//
// float4 globalFade; // Offset: 0 Size: 16 [unused]
// float globalHeightScale; // Offset: 16 Size: 4 [unused]
// float4 g_Rage_Tessellation_CameraPosition;// Offset: 32 Size: 16 [unused]
// float4 g_Rage_Tessellation_CameraZAxis;// Offset: 48 Size: 16 [unused]
// float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset: 64 Size: 16 [unused]
// float4 g_Rage_Tessellation_LinearScale;// Offset: 80 Size: 16 [unused]
// float4 g_Rage_Tessellation_Frustum[4];// Offset: 96 Size: 64 [unused]
// float4 g_Rage_Tessellation_Epsilons;// Offset: 160 Size: 16 [unused]
// float4 globalScalars; // Offset: 176 Size: 16
// float4 globalScalars2; // Offset: 192 Size: 16
// float4 globalScalars3; // Offset: 208 Size: 16 [unused]
// float4 globalScreenSize; // Offset: 224 Size: 16 [unused]
// uint4 gTargetAAParams; // Offset: 240 Size: 16 [unused]
// float4 colorize; // Offset: 256 Size: 16 [unused]
// float4 gGlobalParticleShadowBias; // Offset: 272 Size: 16 [unused]
// float gGlobalParticleDofAlphaScale;// Offset: 288 Size: 4 [unused]
// float gGlobalFogIntensity; // Offset: 292 Size: 4 [unused]
// float4 gPlayerLFootPos; // Offset: 304 Size: 16 [unused]
// float4 gPlayerRFootPos; // Offset: 320 Size: 16 [unused]
//
// }
//
// cbuffer lighting_globals
// {
//
// float4 gDirectionalLight; // Offset: 0 Size: 16 [unused]
// float4 gDirectionalColour; // Offset: 16 Size: 16 [unused]
// int gNumForwardLights; // Offset: 32 Size: 4 [unused]
// float4 gLightPositionAndInvDistSqr[8];// Offset: 48 Size: 128 [unused]
// float4 gLightDirectionAndFalloffExponent[8];// Offset: 176 Size: 128 [unused]
// float4 gLightColourAndCapsuleExtent[8];// Offset: 304 Size: 128 [unused]
// float gLightConeScale[8]; // Offset: 432 Size: 116 [unused]
// float gLightConeOffset[8]; // Offset: 560 Size: 116 [unused]
// float4 gLightNaturalAmbient0; // Offset: 688 Size: 16 [unused]
// float4 gLightNaturalAmbient1; // Offset: 704 Size: 16 [unused]
// float4 gLightArtificialIntAmbient0;// Offset: 720 Size: 16
// float4 gLightArtificialIntAmbient1;// Offset: 736 Size: 16 [unused]
// float4 gLightArtificialExtAmbient0;// Offset: 752 Size: 16 [unused]
// float4 gLightArtificialExtAmbient1;// Offset: 768 Size: 16 [unused]
// float4 gDirectionalAmbientColour; // Offset: 784 Size: 16 [unused]
// float4 globalFogParams[5]; // Offset: 800 Size: 80 [unused]
// float4 globalFogColor; // Offset: 880 Size: 16 [unused]
// float4 globalFogColorE; // Offset: 896 Size: 16 [unused]
// float4 globalFogColorN; // Offset: 912 Size: 16 [unused]
// float4 globalFogColorMoon; // Offset: 928 Size: 16 [unused]
// float4 gReflectionTweaks; // Offset: 944 Size: 16 [unused]
//
// }
//
// cbuffer more_stuff
// {
//
// float4 gEntitySelectColor[2]; // Offset: 0 Size: 32 [unused]
// float4 gAmbientOcclusionEffect; // Offset: 32 Size: 16 [unused]
// float4 gDynamicBakesAndWetness; // Offset: 48 Size: 16
// float4 gAlphaRefVec0; // Offset: 64 Size: 16 [unused]
// float4 gAlphaRefVec1; // Offset: 80 Size: 16 [unused]
// float gAlphaTestRef; // Offset: 96 Size: 4 [unused]
// bool gTreesUseDiscard; // Offset: 100 Size: 4 [unused]
// float gReflectionMipCount; // Offset: 104 Size: 4 [unused]
// bool gUseTransparencyAA; // Offset: 108 Size: 4 [unused]
// bool gUseFogRay; // Offset: 112 Size: 4 [unused]
//
// }
//
// cbuffer megashader_locals
// {
//
// float specularFresnel; // Offset: 0 Size: 4
// float specularFalloffMult; // Offset: 4 Size: 4
// float specularIntensityMult; // Offset: 8 Size: 4
// float3 specMapIntMask; // Offset: 16 Size: 12
// float bumpiness; // Offset: 28 Size: 4
// float wetnessMultiplier; // Offset: 32 Size: 4
// float useTessellation; // Offset: 36 Size: 4 [unused]
// float HardAlphaBlend; // Offset: 40 Size: 4 [unused]
//
// }
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float
// COLOR 0 xyzw 1 NONE float xy w
// TEXCOORD 0 xy 2 NONE float xy
// TEXCOORD 1 xyz 3 NONE float xyz
// TEXCOORD 4 xyz 4 NONE float xyz
// TEXCOORD 5 xyz 5 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
// SV_Target 1 xyzw 1 TARGET float xyzw
// SV_Target 2 xyzw 2 TARGET float xyzw
// SV_Target 3 xyzw 3 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer CB2[13], immediateIndexed
dcl_constantbuffer CB3[46], immediateIndexed
dcl_constantbuffer CB5[4], immediateIndexed
dcl_constantbuffer CB12[3], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_input_ps linear v1.xyw
dcl_input_ps linear v2.xy
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_input_ps linear v5.xyz
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_temps 5
*/
-796
View File
@@ -1,796 +0,0 @@
#include "Quaternion.hlsli"
#include "Shadowmap.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4 WindVector;
}
cbuffer VSEntityVars : register(b2)
{
float4 CamRel;
float4 Orientation;
uint HasSkeleton;
uint HasTransforms;
uint TintPaletteIndex;
uint Pad1;
float3 Scale;
uint IsInstanced;
}
cbuffer VSModelVars : register(b3)
{
float4x4 Transform;
}
cbuffer VSGeomVars : register(b4)
{
uint EnableTint;
float TintYVal;
uint IsDecal;
uint EnableWind;
float4 WindOverrideParams;
float4 globalAnimUV0;
float4 globalAnimUV1;
}
cbuffer VSInstGlobals : register(b5)
{
float4 gInstanceVars[24]; //instance rotation matrices
}
cbuffer VSInstLocals : register(b6)
{
float3 vecBatchAabbMin; // Offset: 0 Size: 12
float instPad0;
float3 vecBatchAabbDelta; // Offset: 16 Size: 12
float instPad1;
float4 vecPlayerPos; // Offset: 32 Size: 16
float2 _vecCollParams; // Offset: 48 Size: 8
float2 instPad2;
float4 fadeAlphaDistUmTimer; // Offset: 256 Size: 16
float4 uMovementParams; // Offset: 272 Size: 16
float4 _fakedGrassNormal; // Offset: 288 Size: 16 [unused]
float3 gScaleRange; // Offset: 304 Size: 12
float instPad3;
float4 gWindBendingGlobals; // Offset: 320 Size: 16
float2 gWindBendScaleVar; // Offset: 336 Size: 8
float gAlphaTest; // Offset: 344 Size: 4 [unused]
float gAlphaToCoverageScale; // Offset: 348 Size: 4 [unused]
float3 gLodFadeInstRange; // Offset: 352 Size: 12 [unused]
uint gUseComputeShaderOutputBuffer;// Offset: 364 Size: 4
}
cbuffer BoneMatrices : register(b7) //rage_bonemtx
{
row_major float3x4 gBoneMtx[255]; // Offset: 0 Size: 12240
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Shadows : TEXCOORD3;
float4 LightShadow : TEXCOORD4;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tint : COLOR2;
float4 Tangent : TEXCOORD5;
float4 Bitangent : TEXCOORD6;
float3 CamRelPos : TEXCOORD7;
};
Texture2D<float4> TintPalette : register(t0);
SamplerState TextureSS : register(s0);
struct rage__fwGrassInstanceListDef__InstanceData //16 bytes, Key:2740378365 rage__fwGrassInstanceListDef__InstanceData//3985044770
{
uint PosXY_u16; // Offset: 0
uint PosZ_u16_NormXY_u8; // Offset: 4
uint ColorRGB_Scale_u8; // Offset: 8
uint Ao_Pad3_u8; // Offset: 12
};
StructuredBuffer<rage__fwGrassInstanceListDef__InstanceData> GrassInstances : register(t2);
float3 GetGrassInstancePosition(float3 ipos, float3 vc0, float3 vc1, uint iid)
{
float3 opos = ipos;
float4 windBendParam = float4(gWindBendScaleVar.xy, gWindBendingGlobals.xy);
if (EnableWind == 0)
{
windBendParam = 0;
}
float4 r0, r1, r2, r3, r4, r5, r6, r7;
uint4 u0, u1, u2, u6;
//r0.x = iid; //ld_structured r0.x, v5.x, l(0), t0.xxxx
//ushr r0.y, r0.x, l(16)
//and r0.y, r0.y, l(255)
//utof r0.y, r0.y
u0.y = (iid >> 16) & 255;
r0.y = (float)u0.y;
r1.y = r0.y * 0.0039215686; //mul r1.y, r0.y, l(0.003922)
//r2.x=iid //mov r2.x, v5.x
//r2.yz=1 //mov r2.yz, l(0,1.000000,1.000000,0)
u0.y = (iid >> 24); //ushr r0.y, r0.x, l(24)
u1.x = u0.x & 0xFFFF; //and r1.x, r0.x, l(0x0000ffff)
r0.x = (float)u0.y; //utof r0.x, r0.y
r1.z = r0.x * 0.0039215686; //mul r1.z, r0.x, l(0.003922)
r0.xyz = (gUseComputeShaderOutputBuffer != 0) ? float3(u1.x, r1.yz) : float3(iid, 1, 1); //movc r0.xyz, gUseComputeShaderOutputBuffer, r1.xyzx, r2.xyzx
float amo = r0.z*r0.y; //mul o4.x, r0.z, r0.y //alpha multiplier output
r0.xyz = float3(iid, 1, 1);
//ld_structured r1.xyzw, r0.x, l(0), t1.xyzw
rage__fwGrassInstanceListDef__InstanceData inst = GrassInstances[iid];
u1.x = inst.PosXY_u16;
u1.y = inst.PosZ_u16_NormXY_u8;
u1.z = inst.ColorRGB_Scale_u8;
u1.w = inst.Ao_Pad3_u8;
////debug positioning
//float px = (float)((u1.x & 0xFFFF));
//float py = (float)((u1.x >> 16) & 0xFFFF);
//float pz = (float)((u1.y & 0xFFFF));
//float3 pab = float3(px, py, pz)*0.000015;
//float3 fpos = vecBatchAabbMin.xyz + vecBatchAabbDelta.xyz * pab;
//return opos + fpos - vecPlayerPos.xyz;
u2.w = u1.z >> 8; //ushr r2.w, r1.z, l(8)
u2.xy = u1.xy >> 16; //ushr r2.xy, r1.xyxx, l(16)
u2.yz = u2.yw & 255; //and r2.yz, r2.yywy, l(0, 255, 255, 0)
r3.y = (float)u2.x; //utof r3.y, r2.x
r2.x = (float)u2.y; //utof r2.x, r2.y
u0.w = u1.y >> 24; //ushr r0.w, r1.y, l(24)
r2.y = (float)u0.w; //utof r2.y, r0.w
r2.xy = r2.xy*0.0078431373 - 1.0; //mad r2.xy, r2.xyxx, l(0.007843, 0.007843, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
r0.w = dot(r2.xy, r2.xy); //dp2 r0.w, r2.xyxx, r2.xyxx
r0.w = 1.0 - r0.w; //add r0.w, -r0.w, l(1.000000)
r2.z = sqrt(r0.w); //sqrt r2.z, r0.w
r0.w = r2.z*-0.018729 + 0.074261; //mad r0.w, r2.z, l(-0.018729), l(0.074261)
r0.w = r0.w*r2.z - 0.212114; //mad r0.w, r0.w, r2.z, l(-0.212114)
r0.w = r0.w*r2.z + 1.570729; //mad r0.w, r0.w, r2.z, l(1.570729)
r2.w = 1.0 - r2.z; //add r2.w, -r2.z, l(1.000000)
r2.w = sqrt(r2.w); //sqrt r2.w, r2.w
r2.xyz = -r2.z*float3(0, 0, 1) + r2.xyz; //mad r2.xyz, -r2.zzzz, l(0.000000, 0.000000, 1.000000, 0.000000), r2.xyzx
r0.w = r0.w*r2.w; //mul r0.w, r0.w, r2.w
r0.w = r0.w * vecPlayerPos.w; //mul r0.w, r0.w, vecPlayerPos.w
r5.x = sin(r0.w); //sincos r5.x, r6.x, r0.w
r6.x = cos(r0.w);
//r0.w = dot(r2.xyz, r2.xyz); //dp3 r0.w, r2.xyzx, r2.xyzx
//r0.w = 1.0 / sqrt(r0.w); //rsq r0.w, r0.w
//r2.xyz = r2.xyz*r0.w; //mul r2.xyz, r0.wwww, r2.xyzx
r2.xyz = normalize(r2.xyz);
r2.xyz = r2.xyz * r5.x; //mul r2.xyz, r5.xxxx, r2.xyzx
r2.xyz = r6.x*float3(0, 0, 1) + r2.xyz; //mad r2.xyz, r6.xxxx, l(0.000000, 0.000000, 1.000000, 0.000000), r2.xyzx
r5.xy = r2.yz*float2(1, 0); //mul r5.xy, r2.yzyy, l(1.000000, 0.000000, 0.000000, 0.000000)
r5.xy = r2.zx*float2(0, 1) - r5.xy; //mad r5.xy, r2.zxzz, l(0.000000, 1.000000, 0.000000, 0.000000), -r5.xyxx
r0.w = dot(r5.xy, r5.xy); //dp2 r0.w, r5.xyxx, r5.xyxx
r0.w = sqrt(r0.w); //sqrt r0.w, r0.w
r5.xy = r5.xy / r0.w; //div r5.xy, r5.xyxx, r0.wwww
r0.w = 1.0 - r2.z; //add r0.w, -r2.z, l(1.000000)
r2.w = r5.x*r0.w; //mul r2.w, r5.x, r0.w
r5.x = r2.w*r5.x + r2.z; //mad r5.x, r2.w, r5.x, r2.z
r5.z = r5.y*r2.w; //mul r5.z, r5.y, r2.w
r2.w = r5.y*r5.y; //mul r2.w, r5.y, r5.y
r5.w = r2.w*r0.w + r2.z; //mad r5.w, r2.w, r0.w, r2.z
u0.w = r2.z < 1.0; //lt r0.w, r2.z, l(1.000000)
r2.xyz = r2.xyz*float3(-1, -1, 1); //mul r2.xyz, r2.xyzx, l(-1.000000, -1.000000, 1.000000, 0.000000)
r2.xyz = (u0.w != 0) ? r2.xyz : float3(0, 0, 1); //movc r2.xyz, r0.wwww, r2.xyzx, l(0, 0, 1.000000, 0)
r5.xyz = (u0.w != 0) ? r5.xzw : float3(1, 0, 1); //movc r5.xyz, r0.wwww, r5.xzwx, l(1.000000, 0, 1.000000, 0)
r0.w = vc0.y * 6.283185; //mul r0.w, v2.y, l(6.283185)
r6.xyz = fadeAlphaDistUmTimer.z*uMovementParams.zzw + r0.w; //mad r6.xyz, fadeAlphaDistUmTimer.zzzz, uMovementParams.zzwz, r0.wwww
r6.xyz = sin(r6.xyz); //sincos r6.xyz, null, r6.xyzx
r0.w = 1.0 - vc0.z; //add r0.w, -v2.z, l(1.000000)
r7.z = r0.w * uMovementParams.y; //mul r7.z, r0.w, uMovementParams.y
r7.xy = vc0.x * uMovementParams.x; //mul r7.xy, v2.xxxx, uMovementParams.xxxx
r6.xyz = r6.xyz * r7.xyz; //mul r6.xyz, r6.xyzx, r7.xyzx
u0.w = u1.z >> 24; //ushr r0.w, r1.z, l(24)
r0.w = (float)u0.w; //utof r0.w, r0.w
r0.w = r0.w * 0.0039215686; //mul r0.w, r0.w, l(0.003922)
r2.w = gScaleRange.y - gScaleRange.x; //add r2.w, -gScaleRange.x, gScaleRange.y
r0.w = r2.w*r0.w + gScaleRange.x; //mad r0.w, r2.w, r0.w, gScaleRange.x
r2.w = gScaleRange.z * gScaleRange.y; //mul r2.w, gScaleRange.z, gScaleRange.y
u0.x = iid & 7; //and r0.x, r0.x, l(7)
u0.x = u0.x * 3; //imul null, r0.x, r0.x, l(3)
r2.w = dot(gInstanceVars[u0.x].ww, r2.ww); //dp2 r2.w, gInstanceVars[r0.x + 0].wwww, r2.wwww
r2.w = -gScaleRange.y * gScaleRange.z + r2.w; //mad r2.w, -gScaleRange.y, gScaleRange.z, r2.w
r0.w = r0.w + r2.w; //add r0.w, r0.w, r2.w
r0.w = max(r0.w, 0.0); //max r0.w, r0.w, l(0.000000)
r0.w = r0.w * r0.z; //mul r0.w, r0.z, r0.w //compute cull scale fadeout?
r0.yzw = opos*r0.w + r6.xyz; //mad r0.yzw, v0.xxyz, r0.wwww, r6.xxyz //scale and offset (movement?)
r6.xyz = r0.z * gInstanceVars[u0.x + 1].xyz; //mul r6.xyz, r0.zzzz, gInstanceVars[r0.x + 1].xyzx //rotate vertex positions with instance matrix
r6.xyz = r0.y * gInstanceVars[u0.x].xyz + r6.xyz; //mad r6.xyz, r0.yyyy, gInstanceVars[r0.x + 0].xyzx, r6.xyzx
r0.yzw = r0.w * gInstanceVars[u0.x + 2].xyz + r6.xyz; //mad r0.yzw, r0.wwww, gInstanceVars[r0.x + 2].xxyz, r6.xxyz
//instance matrices!!!
u6.xyzw = u1.xyzw & uint4(0xFFFF, 0xFFFF, 255, 255); //and r6.xyzw, r1.xyzw, l(0x0000ffff, 0x0000ffff, 255, 255)
u1.x = u1.z >> 16; //ushr r1.x, r1.z, l(16)
u1.x = u1.x & 255; //and r1.x, r1.x, l(255)
r3.xzw = (float3)u6.xyw; //utof r3.xzw, r6.xxyw
r4.z = (float)u1.x; //utof r4.z, r1.x
r4.y = (float)u2.z; //utof r4.y, r2.z
r4.x = (float)u6.z; //utof r4.x, r6.z
float3 tnt = r4.xyz * 0.0039215686; //mul o1.xyz, r4.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) ///colour tint output
float aoo = r3.w * 0.0039215686; //mul o4.y, r3.w, l(0.003922) //ambient occlusion value output
r1.xyz = r3.xyz*vecBatchAabbDelta.xyz; //mul r1.xyz, r3.xyzx, vecBatchAabbDelta.xyzx
r1.xyz = r1.xyz/65535 + vecBatchAabbMin.xyz; //mad r1.xyz, r1.xyzx, l(0.000015, 0.000015, 0.000015, 0.000000), vecBatchAabbMin.xyzx
r1.w = dot(r1.xyz, r1.xyz); //dp3 r1.w, r1.xyzx, r1.xyzx
r1.w = cos(r1.w); //sincos null, r1.w, r1.w
r1.w = r1.w*0.5 + 0.5; //mad r1.w, r1.w, l(0.500000), l(0.500000)
r1.w = r1.w*windBendParam.y + 1.0; //gWindBendScaleVar.y + 1.0; //mad r1.w, gWindBendScaleVar.y, r1.w, l(1.000000)
r1.w = r1.w*windBendParam.x; //gWindBendScaleVar.x; //mul r1.w, r1.w, gWindBendScaleVar.x
r3.xy = r1.w*windBendParam.zw; //gWindBendingGlobals.xy; //mul r3.xy, r1.wwww, gWindBendingGlobals.xyxx
r5.w = r3.x; //mov r5.w, r3.x
r4.x = dot(r0.yzw, r5.xyw); //dp3 r4.x, r0.yzwy, r5.xywx
r3.zw = r5.yz; //mov r3.zw, r5.yyyz
r4.y = dot(r0.wyz, r3.yzw); //dp3 r4.y, r0.wyzw, r3.yzwy
r4.z = dot(r0.yzw, r2.xyz); //dp3 r4.z, r0.yzwy, r2.xyzx
r0.yzw = r1.xyz + r4.xyz; //add r0.yzw, r1.xxyz, r4.xxyz //add vertex position to instance position
r1.yzw = r0.yzw - (vecPlayerPos.xyz - float3(0,0,-0.2)); //add r1.yzw, r0.yyzw, -vecPlayerPos.xxyz
r1.w = dot(r1.yzw, r1.yzw); //dp3 r1.w, r1.yzwy, r1.yzwy
r2.w = 1.0 / sqrt(r1.w); //rsq r2.w, r1.w
r1.w = _vecCollParams.x - r1.w; //add r1.w, -r1.w, _vecCollParams.x
r1.w = saturate(_vecCollParams.y * r1.w); //mul_sat r1.w, r1.w, _vecCollParams.y
r1.w = r1.w * 0.5; //mul r1.w, r1.w, l(0.500000)
r1.yz = r1.yz * r2.w; //mul r1.yz, r1.yyzy, r2.wwww
r1.yz = r1.yz * r1.w; //mul r1.yz, r1.yyzy, r1.wwww
r0.yz = r1.yz * vc1.z + r0.yz; //mad r0.yz, r1.yyzy, v3.zzzz, r0.yyzy //contribute player collision
//float3 fpos = r0.yzw;
return r0.yzw - vecPlayerPos.xyz;
//return CamRel.xyz + opos;
}
float3x4 BoneMatrix(float4 weights, float4 indices)
{
uint4 binds = (uint4)(indices * 255.001953);
float3x4 b0 = gBoneMtx[binds.x];
float3x4 b1 = gBoneMtx[binds.y];
float3x4 b2 = gBoneMtx[binds.z];
float3x4 b3 = gBoneMtx[binds.w];
float4 t0 = b0[0]*weights.x + b1[0]*weights.y + b2[0]*weights.z + b3[0]*weights.w;
float4 t1 = b0[1]*weights.x + b1[1]*weights.y + b2[1]*weights.z + b3[1]*weights.w;
float4 t2 = b0[2]*weights.x + b1[2]*weights.y + b2[2]*weights.z + b3[2]*weights.w;
return float3x4(t0, t1, t2);
}
float3 BoneTransform(float3 ipos, float3x4 m)
{
float3 r;
float4 p = float4(ipos, 1);
r.x = dot(m[0], p);
r.y = dot(m[1], p);
r.z = dot(m[2], p);
return r;
}
float3 BoneTransformNormal(float3 inorm, float3x4 m)
{
float3 r;
r.x = dot(m[0].xyz, inorm);
r.y = dot(m[1].xyz, inorm);
r.z = dot(m[2].xyz, inorm);
return r;
}
float3 ModelTransform(float3 ipos, float3 vc0, float3 vc1, uint iid)
{
if (IsInstanced)
{
return GetGrassInstancePosition(ipos, vc0, vc1, iid);
}
else
{
float3 tpos = (HasTransforms == 1) ? mul(float4(ipos, 1), Transform).xyz : ipos;
float3 spos = tpos * Scale;
float3 bpos = mulvq(spos, Orientation);
if (EnableWind)
{
bpos = GeomWindMotion(bpos, vc0, WindVector, WindOverrideParams);
}
return CamRel.xyz + bpos;
}
}
float4 ScreenTransform(float3 opos)
{
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
//if (IsDecal == 1)
//{
// //cpos.z -= 0.003; //todo: correct decal z-bias
//}
cpos.z = DepthFunc(cpos.zw);
return cpos;
}
float3 NormalTransform(float3 inorm)
{
float3 tnorm = (HasTransforms == 1) ? mul(inorm, (float3x3)Transform) : inorm;
float3 bnorm = normalize(mulvq(tnorm, Orientation));
return bnorm;
}
float4 ColourTint(float tx, float tx2, uint iid)
{
float4 tnt = 1;
if (IsInstanced)
{
//RenderableGrassInstance inst = GrassInstances[iid];
//tnt = Unpack4x8UNF(inst.Colour);
rage__fwGrassInstanceListDef__InstanceData inst = GrassInstances[iid];
uint c = inst.ColorRGB_Scale_u8;
float3 rgb = float3(c & 0xFF, (c >> 8) & 0xFF, (c >> 16) & 0xFF);
tnt = float4(rgb * 0.003922, 1);
}
else if (EnableTint > 0)
{
float tu = (EnableTint == 1) ? tx : tx2;
tnt = TintPalette.SampleLevel(TextureSS, float2(tu, TintYVal), 0);
}
return tnt;
}
float2 GlobalUVAnim(float2 uv)
{
float2 r;
float3 uvw = float3(uv, 1);
r.x = dot(globalAnimUV0.xyz, uvw);
r.y = dot(globalAnimUV1.xyz, uvw);
return r;
}
//grass_batch.fxc_VS_Transform
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer rage_matrices
// {
//
// row_major float4x4 gWorld; // Offset: 0 Size: 64 [unused]
// row_major float4x4 gWorldView; // Offset: 64 Size: 64 [unused]
// row_major float4x4 gWorldViewProj; // Offset: 128 Size: 64
// row_major float4x4 gViewInverse; // Offset: 192 Size: 64 [unused]
//
// }
//
// cbuffer grassglobals
// {
//
// bool bVehColl0Enabled; // Offset: 0 Size: 4
// bool bVehColl1Enabled; // Offset: 4 Size: 4
// bool bVehColl2Enabled; // Offset: 8 Size: 4
// bool bVehColl3Enabled; // Offset: 12 Size: 4
// float4 depthValueBias; // Offset: 16 Size: 16 [unused]
//
// }
//
// cbuffer grassbatchlocals
// {
//
// float3 vecBatchAabbMin; // Offset: 0 Size: 12
// float3 vecBatchAabbDelta; // Offset: 16 Size: 12
// float4 vecPlayerPos; // Offset: 32 Size: 16
// float2 _vecCollParams; // Offset: 48 Size: 8
// float4 _vecVehColl0B; // Offset: 64 Size: 16
// float4 _vecVehColl0M; // Offset: 80 Size: 16
// float4 _vecVehColl0R; // Offset: 96 Size: 16
// float4 _vecVehColl1B; // Offset: 112 Size: 16
// float4 _vecVehColl1M; // Offset: 128 Size: 16
// float4 _vecVehColl1R; // Offset: 144 Size: 16
// float4 _vecVehColl2B; // Offset: 160 Size: 16
// float4 _vecVehColl2M; // Offset: 176 Size: 16
// float4 _vecVehColl2R; // Offset: 192 Size: 16
// float4 _vecVehColl3B; // Offset: 208 Size: 16
// float4 _vecVehColl3M; // Offset: 224 Size: 16
// float4 _vecVehColl3R; // Offset: 240 Size: 16
// float4 fadeAlphaDistUmTimer; // Offset: 256 Size: 16
// float4 uMovementParams; // Offset: 272 Size: 16
// float4 _fakedGrassNormal; // Offset: 288 Size: 16 [unused]
// float3 gScaleRange; // Offset: 304 Size: 12
// float4 gWindBendingGlobals; // Offset: 320 Size: 16
// float2 gWindBendScaleVar; // Offset: 336 Size: 8
// float gAlphaTest; // Offset: 344 Size: 4 [unused]
// float gAlphaToCoverageScale; // Offset: 348 Size: 4 [unused]
// float3 gLodFadeInstRange; // Offset: 352 Size: 12 [unused]
// uint gUseComputeShaderOutputBuffer;// Offset: 364 Size: 4
// float2 gInstCullParams; // Offset: 368 Size: 8 [unused]
// uint gNumClipPlanes; // Offset: 376 Size: 4 [unused]
// float4 gClipPlanes[16]; // Offset: 384 Size: 256 [unused]
// float3 gCameraPosition; // Offset: 640 Size: 12 [unused]
// uint gLodInstantTransition; // Offset: 652 Size: 4 [unused]
// float4 gLodThresholds; // Offset: 656 Size: 16 [unused]
// float2 gCrossFadeDistance; // Offset: 672 Size: 8 [unused]
// float2 gLodFadeStartDist; // Offset: 680 Size: 8 [unused]
// float2 gLodFadeRange; // Offset: 688 Size: 8 [unused]
// float2 gLodFadePower; // Offset: 696 Size: 8 [unused]
// float2 gLodFadeTileScale; // Offset: 704 Size: 8 [unused]
// uint gIsShadowPass; // Offset: 712 Size: 4 [unused]
// float3 gLodFadeControlRange; // Offset: 720 Size: 12 [unused]
// float4 bDebugSwitches; // Offset: 736 Size: 16 [unused]
//
// }
//
// cbuffer grassbatch_instmtx
// {
//
// float4 gInstanceVars[24]; // Offset: 0 Size: 384
//
// }
//
// Resource bind info for InstanceBuffer
// {
//
// struct
// {
//
// uint InstId_u16_CrossFade_Scale_u8;// Offset: 0
//
// } $Element; // Offset: 0 Size: 4
//
// }
//
// Resource bind info for RawInstanceBuffer
// {
//
// struct
// {
//
// uint PosXY_u16; // Offset: 0
// uint PosZ_u16_NormXY_u8; // Offset: 4
// uint ColorRGB_Scale_u8; // Offset: 8
// uint Ao_Pad3_u8; // Offset: 12
//
// } $Element; // Offset: 0 Size: 16
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// InstanceBuffer texture struct r/o t0 1
// RawInstanceBuffer texture struct r/o t1 1
// rage_matrices cbuffer NA NA cb1 1
// grassglobals cbuffer NA NA cb4 1
// grassbatch_instmtx cbuffer NA NA cb7 1
// grassbatchlocals cbuffer NA NA cb11 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyz
// NORMAL 0 xyz 1 NONE float xyz
// COLOR 0 xyzw 2 NONE float xyz
// COLOR 1 xyzw 3 NONE float x z
// TEXCOORD 0 xy 4 NONE float xy
// SV_InstanceID 0 x 5 INSTID uint x
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyzw 2 NONE float xyzw
// TEXCOORD 2 xyzw 3 NONE float xyzw
// TEXCOORD 5 xy 4 NONE float xy
//
/*
vs_4_0
dcl_globalFlags refactoringAllowed | enableRawAndStructuredBuffers
dcl_constantbuffer CB1[12], immediateIndexed
dcl_constantbuffer CB4[1], immediateIndexed
dcl_constantbuffer CB11[23], immediateIndexed
dcl_constantbuffer CB7[24], dynamicIndexed
dcl_resource_structured t0, 4
dcl_resource_structured t1, 16
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v2.xyz
dcl_input v3.xz
dcl_input v4.xy
dcl_input_sgv v5.x, instance_id
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xy
dcl_temps 8
ld_structured r0.x, v5.x, l(0), t0.xxxx
ushr r0.y, r0.x, l(16)
and r0.y, r0.y, l(255)
utof r0.y, r0.y
mul r1.y, r0.y, l(0.003922)
mov r2.x, v5.x
mov r2.yz, l(0,1.000000,1.000000,0)
ushr r0.y, r0.x, l(24)
and r1.x, r0.x, l(0x0000ffff)
utof r0.x, r0.y
mul r1.z, r0.x, l(0.003922)
movc r0.xyz, gUseComputeShaderOutputBuffer, r1.xyzx, r2.xyzx
ld_structured r1.xyzw, r0.x, l(0), t1.xyzw
ushr r2.w, r1.z, l(8)
ushr r2.xy, r1.xyxx, l(16)
and r2.yz, r2.yywy, l(0, 255, 255, 0)
utof r3.y, r2.x
utof r2.x, r2.y
utof r4.y, r2.z
ushr r0.w, r1.y, l(24)
utof r2.y, r0.w
mad r2.xy, r2.xyxx, l(0.007843, 0.007843, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
dp2 r0.w, r2.xyxx, r2.xyxx
add r0.w, -r0.w, l(1.000000)
sqrt r2.z, r0.w
mad r0.w, r2.z, l(-0.018729), l(0.074261)
mad r0.w, r0.w, r2.z, l(-0.212114)
mad r0.w, r0.w, r2.z, l(1.570729)
add r2.w, -r2.z, l(1.000000)
mad r2.xyz, -r2.zzzz, l(0.000000, 0.000000, 1.000000, 0.000000), r2.xyzx
sqrt r2.w, r2.w
mul r0.w, r0.w, r2.w
mul r0.w, r0.w, vecPlayerPos.w
sincos r5.x, r6.x, r0.w
dp3 r0.w, r2.xyzx, r2.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r2.xyzx
mul r2.xyz, r5.xxxx, r2.xyzx
mad r2.xyz, r6.xxxx, l(0.000000, 0.000000, 1.000000, 0.000000), r2.xyzx
mul r5.xy, r2.yzyy, l(1.000000, 0.000000, 0.000000, 0.000000)
mad r5.xy, r2.zxzz, l(0.000000, 1.000000, 0.000000, 0.000000), -r5.xyxx
dp2 r0.w, r5.xyxx, r5.xyxx
sqrt r0.w, r0.w
div r5.xy, r5.xyxx, r0.wwww
add r0.w, -r2.z, l(1.000000)
mul r2.w, r5.x, r0.w
mad r5.x, r2.w, r5.x, r2.z
mul r5.z, r5.y, r2.w
mul r2.w, r5.y, r5.y
mad r5.w, r2.w, r0.w, r2.z
lt r0.w, r2.z, l(1.000000)
mul r2.xyz, r2.xyzx, l(-1.000000, -1.000000, 1.000000, 0.000000)
movc r2.xyz, r0.wwww, r2.xyzx, l(0,0,1.000000,0)
movc r5.xyz, r0.wwww, r5.xzwx, l(1.000000,0,1.000000,0)
mul r0.w, v2.y, l(6.283185)
mad r6.xyz, fadeAlphaDistUmTimer.zzzz, uMovementParams.zzwz, r0.wwww
sincos r6.xyz, null, r6.xyzx
add r0.w, -v2.z, l(1.000000)
mul r7.z, r0.w, uMovementParams.y
mul r7.xy, v2.xxxx, uMovementParams.xxxx
mul r6.xyz, r6.xyzx, r7.xyzx
ushr r0.w, r1.z, l(24)
utof r0.w, r0.w
mul r0.w, r0.w, l(0.003922)
add r2.w, -gScaleRange.x, gScaleRange.y
mad r0.w, r2.w, r0.w, gScaleRange.x
mul r2.w, gScaleRange.z, gScaleRange.y
and r0.x, r0.x, l(7)
imul null, r0.x, r0.x, l(3)
dp2 r2.w, gInstanceVars[r0.x + 0].wwww, r2.wwww
mad r2.w, -gScaleRange.y, gScaleRange.z, r2.w
add r0.w, r0.w, r2.w
max r0.w, r0.w, l(0.000000)
mul r0.w, r0.z, r0.w
mul o4.x, r0.z, r0.y //alpha multiplier output
mad r0.yzw, v0.xxyz, r0.wwww, r6.xxyz //scale and offset (movement?)
mul r6.xyz, r0.zzzz, gInstanceVars[r0.x + 1].xyzx //rotate vertex positions with instance matrix
mad r6.xyz, r0.yyyy, gInstanceVars[r0.x + 0].xyzx, r6.xyzx
mad r0.yzw, r0.wwww, gInstanceVars[r0.x + 2].xxyz, r6.xxyz
and r6.xyzw, r1.xyzw, l(0x0000ffff, 0x0000ffff, 255, 255)
ushr r1.x, r1.z, l(16)
and r1.x, r1.x, l(255)
utof r4.z, r1.x
utof r3.xzw, r6.xxyw
utof r4.x, r6.z
mul o1.xyz, r4.xyzx, l(0.003922, 0.003922, 0.003922, 0.000000) ///colour tint output
mul o4.y, r3.w, l(0.003922) //ambient occlusion value output
mul r1.xyz, r3.xyzx, vecBatchAabbDelta.xyzx
mad r1.xyz, r1.xyzx, l(0.000015, 0.000015, 0.000015, 0.000000), vecBatchAabbMin.xyzx
dp3 r1.w, r1.xyzx, r1.xyzx
sincos null, r1.w, r1.w
mad r1.w, r1.w, l(0.500000), l(0.500000)
mad r1.w, gWindBendScaleVar.y, r1.w, l(1.000000)
mul r1.w, r1.w, gWindBendScaleVar.x
mul r3.xy, r1.wwww, gWindBendingGlobals.xyxx
mov r5.w, r3.x
dp3 r4.x, r0.yzwy, r5.xywx
mov r3.zw, r5.yyyz
dp3 r4.y, r0.wyzw, r3.yzwy
dp3 r4.z, r0.yzwy, r2.xyzx
add r0.yzw, r1.xxyz, r4.xxyz //add vertex position to instance position
add r1.yzw, r0.yyzw, -vecPlayerPos.xxyz
dp3 r1.w, r1.yzwy, r1.yzwy
rsq r2.w, r1.w
add r1.w, -r1.w, _vecCollParams.x
mul_sat r1.w, r1.w, _vecCollParams.y
mul r1.w, r1.w, l(0.500000)
mul r1.yz, r1.yyzy, r2.wwww
mul r1.yz, r1.yyzy, r1.wwww
mad r0.yz, r1.yyzy, v3.zzzz, r0.yyzy //contribute player collision
add r1.x, -r0.w, _vecVehColl0R.w
add r1.yz, r0.yyzy, -_vecVehColl0B.xxyx
dp2 r1.y, _vecVehColl0M.xyxx, r1.yzyy
mul_sat r1.y, r1.y, _vecVehColl0M.w
mad r1.yz, r1.yyyy, _vecVehColl0M.xxyx, _vecVehColl0B.xxyx
add r1.yz, r0.yyzy, -r1.yyzy
dp2 r1.w, r1.yzyy, r1.yzyy
add r2.w, -r1.w, _vecVehColl0R.y
mul_sat r2.w, r2.w, _vecVehColl0R.z
mad r1.x, r2.w, r1.x, r0.w
mul r2.w, r2.w, _vecVehColl0R.x
mul r3.x, _vecVehColl0R.x, l(0.500000)
mul r3.x, r3.x, r3.x
lt r3.x, r1.w, r3.x
rsq r1.w, r1.w
mul r1.yz, r1.wwww, r1.yyzy
mul r1.yz, r1.yyzy, r2.wwww
mad r4.xy, r1.yzyy, v3.zzzz, r0.yzyy
add r1.y, _vecVehColl0R.w, l(-0.250000)
movc r4.z, r3.x, r1.y, r1.x
add r1.x, r0.w, -_vecVehColl0R.w
ge r1.x, l(2.000000), |r1.x|
movc r1.xyz, r1.xxxx, r4.xyzx, r0.yzwy
movc r0.yzw, bVehColl0Enabled, r1.xxyz, r0.yyzw //contribute vehicle collision 0
add r1.x, -r0.w, _vecVehColl1R.w
add r1.yz, r0.yyzy, -_vecVehColl1B.xxyx
dp2 r1.y, _vecVehColl1M.xyxx, r1.yzyy
mul_sat r1.y, r1.y, _vecVehColl1M.w
mad r1.yz, r1.yyyy, _vecVehColl1M.xxyx, _vecVehColl1B.xxyx
add r1.yz, r0.yyzy, -r1.yyzy
dp2 r1.w, r1.yzyy, r1.yzyy
add r2.w, -r1.w, _vecVehColl1R.y
mul_sat r2.w, r2.w, _vecVehColl1R.z
mad r1.x, r2.w, r1.x, r0.w
mul r2.w, r2.w, _vecVehColl1R.x
mul r3.x, _vecVehColl1R.x, l(0.500000)
mul r3.x, r3.x, r3.x
lt r3.x, r1.w, r3.x
rsq r1.w, r1.w
mul r1.yz, r1.wwww, r1.yyzy
mul r1.yz, r1.yyzy, r2.wwww
mad r4.xy, r1.yzyy, v3.zzzz, r0.yzyy
add r1.y, _vecVehColl1R.w, l(-0.250000)
movc r4.z, r3.x, r1.y, r1.x
add r1.x, r0.w, -_vecVehColl1R.w
ge r1.x, l(2.000000), |r1.x|
movc r1.xyz, r1.xxxx, r4.xyzx, r0.yzwy
movc r0.yzw, bVehColl1Enabled, r1.xxyz, r0.yyzw //contribute vehicle collision 1
add r1.x, -r0.w, _vecVehColl2R.w
add r1.yz, r0.yyzy, -_vecVehColl2B.xxyx
dp2 r1.y, _vecVehColl2M.xyxx, r1.yzyy
mul_sat r1.y, r1.y, _vecVehColl2M.w
mad r1.yz, r1.yyyy, _vecVehColl2M.xxyx, _vecVehColl2B.xxyx
add r1.yz, r0.yyzy, -r1.yyzy
dp2 r1.w, r1.yzyy, r1.yzyy
add r2.w, -r1.w, _vecVehColl2R.y
mul_sat r2.w, r2.w, _vecVehColl2R.z
mad r1.x, r2.w, r1.x, r0.w
mul r2.w, r2.w, _vecVehColl2R.x
mul r3.x, _vecVehColl2R.x, l(0.500000)
mul r3.x, r3.x, r3.x
lt r3.x, r1.w, r3.x
rsq r1.w, r1.w
mul r1.yz, r1.wwww, r1.yyzy
mul r1.yz, r1.yyzy, r2.wwww
mad r4.xy, r1.yzyy, v3.zzzz, r0.yzyy
add r1.y, _vecVehColl2R.w, l(-0.250000)
movc r4.z, r3.x, r1.y, r1.x
add r1.x, r0.w, -_vecVehColl2R.w
ge r1.x, l(2.000000), |r1.x|
movc r1.xyz, r1.xxxx, r4.xyzx, r0.yzwy
movc r0.yzw, bVehColl2Enabled, r1.xxyz, r0.yyzw //contribute vehicle collision 2
add r1.x, -r0.w, _vecVehColl3R.w
add r1.yz, r0.yyzy, -_vecVehColl3B.xxyx
dp2 r1.y, _vecVehColl3M.xyxx, r1.yzyy
mul_sat r1.y, r1.y, _vecVehColl3M.w
mad r1.yz, r1.yyyy, _vecVehColl3M.xxyx, _vecVehColl3B.xxyx
add r1.yz, r0.yyzy, -r1.yyzy
dp2 r1.w, r1.yzyy, r1.yzyy
add r2.w, -r1.w, _vecVehColl3R.y
mul_sat r2.w, r2.w, _vecVehColl3R.z
mad r1.x, r2.w, r1.x, r0.w
mul r2.w, r2.w, _vecVehColl3R.x
mul r3.x, _vecVehColl3R.x, l(0.500000)
mul r3.x, r3.x, r3.x
lt r3.x, r1.w, r3.x
rsq r1.w, r1.w
mul r1.yz, r1.wwww, r1.yyzy
mul r1.yz, r1.yyzy, r2.wwww
mad r4.xy, r1.yzyy, v3.zzzz, r0.yzyy
add r1.y, _vecVehColl3R.w, l(-0.250000)
movc r4.z, r3.x, r1.y, r1.x
add r1.x, r0.w, -_vecVehColl3R.w
ge r1.x, l(2.000000), |r1.x|
movc r1.xyz, r1.xxxx, r4.xyzx, r0.yzwy
movc r0.yzw, bVehColl3Enabled, r1.xxyz, r0.yyzw //contribute vehicle collision 3
mul r1.xyzw, r0.zzzz, gWorldViewProj[1].xyzw
mad r1.xyzw, r0.yyyy, gWorldViewProj[0].xyzw, r1.xyzw
mad r1.xyzw, r0.wwww, gWorldViewProj[2].xyzw, r1.xyzw //screen transform
mov o3.xyz, r0.yzwy
add o0.xyzw, r1.xyzw, gWorldViewProj[3].xyzw //main position output
mov o1.w, v3.x
mul r0.yzw, v1.yyyy, gInstanceVars[r0.x + 1].xxyz //rotate normals with instance matrix
mad r0.yzw, v1.xxxx, gInstanceVars[r0.x + 0].xxyz, r0.yyzw
mad r0.xyz, v1.zzzz, gInstanceVars[r0.x + 2].xyzx, r0.yzwy
dp3 r1.x, r0.xyzx, r5.xywx
dp3 r1.y, r0.zxyz, r3.yzwy
dp3 r1.z, r0.xyzx, r2.xyzx
dp3 r0.x, r1.xyzx, r1.xyzx
rsq r0.x, r0.x
mul o2.xyz, r0.xxxx, r1.xyzx //lighting stuff
mov o2.w, v4.x //main texcoords
mov o3.w, v4.y
ret
*/
// Approximately 224 instruction slots used
-68
View File
@@ -1,68 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
};
struct RenderableBox
{
float3 Corner;
uint Colour;
float3 Edge1;
float Pad1;
float3 Edge2;
float Pad2;
float3 Edge3;
float Pad3;
};
StructuredBuffer<RenderableBox> Boxes : register(t1);
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
RenderableBox box = Boxes[iid];
//float3 mpos = input.Position.xyz * box.Size;
//float3 ipos = mulvq(mpos, box.Orientation);
//float3 inorm = mulvq(input.Normal, box.Orientation);
float3 p = input.Position.xyz;
float3 n = input.Normal;
//float3 s = float3(box.Length1, box.Length2, box.Length3);
float3 ipos = (p.x*box.Edge1 + p.y*box.Edge2 + p.z*box.Edge3);// *s;
float3 inorm = normalize(n.x*box.Edge1 + n.y*box.Edge2 + n.z*box.Edge3);
float3 spos = (box.Corner + ipos) * Scale;
float3 rpos = mulvq(spos, Orientation);
float3 opos = CamRel.xyz + rpos;// bpos ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = inorm;// mulvq(inorm, Orientation));// NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 c = Unpack4x8UNF(box.Colour).abgr;
//c = float4(abs(input.Normal),1);
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = 0.5;// input.Texcoord0;
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = c;// float4(0.5, 0.5, 0.5, 1); //input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour1
output.Tint = 0;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-62
View File
@@ -1,62 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
//float3 Normal : NORMAL;
};
struct RenderableCapsule
{
float3 Point1;
float Radius;
float4 Orientation;
float Length;
uint Colour;
float Pad0;
float Pad1;
};
StructuredBuffer<RenderableCapsule> Capsules : register(t1);
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
RenderableCapsule cap = Capsules[iid];
float3 mpos = input.Position.xyz*cap.Radius;
mpos.y += input.Position.w*cap.Length;
float3 ipos = mulvq(mpos, cap.Orientation);
float3 inorm = mulvq(input.Position.xyz, cap.Orientation);// input.Normal;
float3 spos = (ipos + cap.Point1) * Scale;
float3 rpos = mulvq(spos, Orientation);
float3 opos = CamRel.xyz + rpos;// bpos ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = normalize(mulvq(inorm, Orientation));// NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 c = Unpack4x8UNF(cap.Colour).abgr;
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = 0.5;// input.Texcoord0;
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = c;// float4(0.5, 0.5, 0.5, 1); //input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour1
output.Tint = 0;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-62
View File
@@ -1,62 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
};
struct RenderableCylinder
{
float3 Point1;
float Radius;
float4 Orientation;
float Length;
uint Colour;
float Pad0;
float Pad1;
};
StructuredBuffer<RenderableCylinder> Cylinders : register(t1);
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
RenderableCylinder cyl = Cylinders[iid];
float3 mpos = input.Position.xyz*cyl.Radius;
mpos.y += input.Position.w*cyl.Length;
float3 ipos = mulvq(mpos, cyl.Orientation);
float3 inorm = mulvq(input.Normal, cyl.Orientation);// input.Normal;
float3 spos = (ipos + cyl.Point1) * Scale;
float3 rpos = mulvq(spos, Orientation);
float3 opos = CamRel.xyz + rpos;// bpos ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = normalize(mulvq(inorm, Orientation));// NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 c = Unpack4x8UNF(cyl.Colour).abgr;
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = 0.5;// input.Texcoord0;
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = c;// float4(0.5, 0.5, 0.5, 1); //input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour1
output.Tint = 0;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-46
View File
@@ -1,46 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord0 : TEXCOORD0;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = 0.5; // NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5; // input.Texcoord;
output.Texcoord2 = 0.5; // input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(otang, 1);
output.Bitangent = float4(cross(otang, onorm), 0);
return output;
}
-75
View File
@@ -1,75 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal.xyz, bone);
float3 btang = BoneTransformNormal(input.Tangent.xyz, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = NormalTransform(btang);
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1; // input.Texcoord;
output.Texcoord2 = 0.5; // input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(otang, input.Tangent.w);
output.Bitangent = float4(cross(otang, onorm) * input.Tangent.w, 0);
return output;
}
/*
WIND FOR CLOTHING
mul r1.xyz, v8.xxzx, umGlobalParams.xxyx //colour[1].XXZX
mul r1.xyz, r1.xyzx, umPedGlobalOverrideParams.xxyx
mul r0.w, v8.y, l(6.283185) //colour[1].Y
mul r2.xyz, umPedGlobalOverrideParams.zzwz, umGlobalParams.zzwz
mad r2.xyz, globalScalars2.xxxx, r2.xyzx, r0.wwww
sincos r2.xyz, null, r2.xyzx
mad r1.xyz, r2.xyzx, r1.xyzx, r4.xyzx //OUTPUT - r4 is base bone transform, r1,r2?
translation:
r1.xyz = umGlobalParams.xxy * umPedGlobalOverrideParams.xxy * vc[1].xxz;
r2.xyz = umGlobalParams.zzw * umPedGlobalOverrideParams.zzw * globalScalars2.xxx + (vc[1].y * 6.283185)
pos.xyz += r1 * cos(r2);
*/
-49
View File
@@ -1,49 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord0 : TEXCOORD0;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal.xyz, bone);
float3 btang = BoneTransformNormal(input.Tangent.xyz, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = NormalTransform(btang);
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5; // input.Texcoord;
output.Texcoord2 = 0.5; // input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(otang, input.Tangent.w);
output.Bitangent = float4(cross(otang, onorm) * input.Tangent.w, 0);
return output;
}
-45
View File
@@ -1,45 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = 0.5; // NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5; // input.Texcoord;
output.Texcoord2 = 0.5; // input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5, 0.5, 0.5, 1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(otang, 1);
output.Bitangent = float4(cross(otang, onorm), 0);
return output;
}
-46
View File
@@ -1,46 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = 0.5; // NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5; // input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5, 0.5, 0.5, 1); //input.Colour;
output.Tint = tnt;
output.Tangent = float4(otang, 1);
output.Bitangent = float4(cross(otang, onorm), 0);
return output;
}
-47
View File
@@ -1,47 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = 0.5; // NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = input.Texcoord2;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5, 0.5, 0.5, 1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(otang, 1);
output.Bitangent = float4(cross(otang, onorm), 0);
return output;
}
-47
View File
@@ -1,47 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal.xyz, bone);
float3 btang = BoneTransformNormal(input.Tangent.xyz, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = NormalTransform(btang);
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5; // input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5, 0.5, 0.5, 1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(otang, input.Tangent.w);
output.Bitangent = float4(cross(otang, onorm) * input.Tangent.w, 0);
return output;
}
-47
View File
@@ -1,47 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 bpos = BoneTransform(input.Position.xyz, bone);
float3 opos = ModelTransform(bpos, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = BoneTransformNormal(input.Normal.xyz, bone);
float3 btang = BoneTransformNormal(input.Tangent.xyz, bone);
float3 onorm = NormalTransform(bnorm);
float3 otang = NormalTransform(btang);
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = onorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5; // input.Texcoord;
output.Texcoord2 = 0.5; // input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5, 0.5, 0.5, 1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(otang, input.Tangent.w);
output.Bitangent = float4(cross(otang, onorm) * input.Tangent.w, 0);
return output;
}
-40
View File
@@ -1,40 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-41
View File
@@ -1,41 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-42
View File
@@ -1,42 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = input.Texcoord2;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-43
View File
@@ -1,43 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = input.Texcoord2;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
return output;
}
-42
View File
@@ -1,42 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
return output;
}
-41
View File
@@ -1,41 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour1.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b, input.Colour1.b, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
return output;
}
-39
View File
@@ -1,39 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-40
View File
@@ -1,40 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Colour0 : COLOR0;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5, 0.5, 0.5, 1); //input.Colour;
output.Tint = tnt;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-41
View File
@@ -1,41 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5; // NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0, 0, 0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = input.Texcoord2;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5, 0.5, 0.5, 1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-42
View File
@@ -1,42 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Colour0 : COLOR0;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = input.Texcoord2;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
return output;
}
-41
View File
@@ -1,41 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Colour0 : COLOR0;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
return output;
}
-40
View File
@@ -1,40 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour0.xyz, iid);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b, 0, iid); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GlobalUVAnim(input.Texcoord0);
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
return output;
}
-56
View File
@@ -1,56 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
//float3 Normal : NORMAL;
};
struct RenderableSphere
{
float3 Center;
float Radius;
float3 Pad0;
uint Colour;
};
StructuredBuffer<RenderableSphere> Spheres : register(t1);
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
RenderableSphere sph = Spheres[iid];
float3 ipos = (input.Position.xyz) * sph.Radius;// *0.5;
float3 inorm = input.Position.xyz;// input.Normal; //unit sphere pos == normal
float3 spos = (ipos + sph.Center) * Scale;
float3 rpos = mulvq(spos, Orientation);
float3 opos = CamRel.xyz + rpos;// bpos ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = normalize(mulvq(inorm, Orientation));// NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 c = Unpack4x8UNF(sph.Colour).abgr;
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = 0.5;// input.Texcoord0;
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = c;// float4(0.5, 0.5, 0.5, 1); //input.Colour0;//float4(abs(input.Position.xyz), 1);//
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour1
output.Tint = 0;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-27
View File
@@ -1,27 +0,0 @@
#include "Common.hlsli"
#include "Quaternion.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
}
cbuffer VSBoxVars : register(b1)
{
float4 Orientation;
float4 BBMin;
float4 BBRng; //max-min
float3 CamRel;
float Pad1;
float3 Scale;
float Pad2;
}
float4 main(float4 pos: POSITION) : SV_POSITION
{
float3 bpos = (BBMin.xyz + pos.xyz*BBRng.xyz) * Scale;
float3 opos = mulvq(bpos, Orientation);
float3 f = CamRel + opos;
float4 cpos = mul(float4(f,1), ViewProj);
cpos.z = DepthFunc(cpos.zw);
return cpos;
}
-32
View File
@@ -1,32 +0,0 @@
#include "Common.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4x4 ViewInv;
float SegmentCount;
float VertexCount;
float Pad1;
float Pad2;
}
cbuffer VSSphereVars : register(b1)
{
float3 Center;
float Radius;
}
float4 main(uint id : SV_VertexID) : SV_POSITION
{
static const float twopi = 6.283185307179586476925286766559;
uint seg = id;
float t = twopi*((float)seg)/SegmentCount;
float ct = cos(t);
float st = sin(t);
float r = Radius;
float3 o = float3(ct*r, st*r, 0);
float3 f = Center.xyz + mul(o, (float3x3)ViewInv);
float4 cpos = mul(float4(f,1), ViewProj);
cpos.z = DepthFunc(cpos.zw);
return cpos;
}
-9
View File
@@ -1,9 +0,0 @@
cbuffer PSVars : register(b0)
{
float4 Colour;
}
float4 main() : SV_TARGET
{
return Colour;
}
-102
View File
@@ -1,102 +0,0 @@
#include "Shadowmap.hlsli"
Texture2D<float4> Colourmap : register(t0);
SamplerState TextureSS : register(s0);
cbuffer PSSceneVars : register(b0)
{
ShaderGlobalLightParams GlobalLights;
uint EnableShadows;
uint RenderMode;//0=default, 1=normals, 2=tangents, 3=colours, 4=texcoords, 5=diffuse, 6=normalmap, 7=spec, 8=direct
uint RenderModeIndex;
uint RenderSamplerCoord;
}
cbuffer PSGeomVars : register(b2)
{
uint EnableTexture;
uint EnableTint;
uint Pad100;
uint Pad101;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Shadows : TEXCOORD3;
float4 LightShadow : TEXCOORD4;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tint : COLOR2;
float4 Tangent : TANGENT;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
float4 c = float4(0.2, 0.2, 0.2, 1);
if (EnableTexture == 1)
{
float2 texc = input.Texcoord0;
if (RenderMode >= 5)
{
if (RenderSamplerCoord == 2) texc = input.Texcoord1;
else if (RenderSamplerCoord == 3) texc = input.Texcoord2;
}
c = Colourmap.Sample(TextureSS, texc);
//c = Depthmap.SampleLevel(DepthmapSS, input.Texcoord, 0); c.a = 1;
//if ((IsDecal == 0) && (c.a <= 0.33)) discard;
//if ((IsDecal == 1) && (c.a <= 0.0)) discard;
//if(IsDecal==0) c.a = 1;
c.a = 1;
}
//else //if(RenderMode!=8)//
//{
// c = float4(input.Colour0.rgb, 1);
//}
if (EnableTint > 0)
{
c.rgb *= input.Tint.rgb;
}
//if (IsDecal == 1)
//{
// c.a *= input.Colour0.a;
//}
float3 norm = normalize(input.Normal);
if (RenderMode == 1) //normals
{
c.rgb = norm*0.5+0.5;
}
else if (RenderMode == 2) //tangents
{
c.rgb = normalize(input.Tangent.rgb)*0.5+0.5;
}
else if (RenderMode == 3) //colours
{
c.rgb = input.Colour0.rgb;
if (RenderModeIndex == 2) c.rgb = input.Colour1.rgb;
}
else if (RenderMode == 4) //texcoords
{
c.rgb = float3(input.Texcoord0, 0);
if (RenderModeIndex == 2) c.rgb = float3(input.Texcoord1, 0);
if (RenderModeIndex == 3) c.rgb = float3(input.Texcoord2, 0);
}
c.rgb = FullLighting(c.rgb, 0, norm, input.Colour0, GlobalLights, EnableShadows, input.Shadows.x, input.LightShadow);
c.a = saturate(c.a);
return c;
}
-39
View File
@@ -1,39 +0,0 @@
#include "BasicVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz, input.Colour0.xyz, input.Colour0.xyz, 0);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b, 0, 0); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = input.Texcoord0;
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1); //input.Colour
output.Tint = tnt;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-49
View File
@@ -1,49 +0,0 @@
cbuffer clouds_locals : register(b0)
{
float3 gSkyColor; // Offset: 0 Size: 12 [unused]
float gPad00;
float3 gEastMinusWestColor; // Offset: 16 Size: 12 [unused]
float gPad01;
float3 gWestColor; // Offset: 32 Size: 12 [unused]
float gPad02;
float3 gSunDirection; // Offset: 48 Size: 12
float gPad03;
float3 gSunColor; // Offset: 64 Size: 12
float gPad04;
float3 gCloudColor; // Offset: 80 Size: 12 [unused]
float gPad05;
float3 gAmbientColor; // Offset: 96 Size: 12 [unused]
float gPad06;
float3 gBounceColor; // Offset: 112 Size: 12 [unused]
float gPad07;
float4 gDensityShiftScale; // Offset: 128 Size: 16 [unused]
float4 gScatterG_GSquared_PhaseMult_Scale;// Offset: 144 Size: 16
float4 gPiercingLightPower_Strength_NormalStrength_Thickness;// Offset: 160 Size: 16
float3 gScaleDiffuseFillAmbient; // Offset: 176 Size: 12 [unused]
float gPad08;
float3 gWrapLighting_MSAARef; // Offset: 192 Size: 12 [unused]
float gPad09;
float4 gNearFarQMult; // Offset: 208 Size: 16 [unused]
float3 gAnimCombine; // Offset: 224 Size: 12 [unused]
float gPad10;
float3 gAnimSculpt; // Offset: 240 Size: 12 [unused]
float gPad11;
float3 gAnimBlendWeights; // Offset: 256 Size: 12 [unused]
float gPad12;
float4 gUVOffset[2]; // Offset: 272 Size: 32
row_major float4x4 gCloudViewProj; // Offset: 304 Size: 64
float4 gCameraPos; // Offset: 368 Size: 16
float2 gUVOffset1; // Offset: 384 Size: 8
float2 gUVOffset2; // Offset: 392 Size: 8
float2 gUVOffset3; // Offset: 400 Size: 8
float2 gRescaleUV1; // Offset: 408 Size: 8
float2 gRescaleUV2; // Offset: 416 Size: 8
float2 gRescaleUV3; // Offset: 424 Size: 8
float gSoftParticleRange; // Offset: 432 Size: 4 [unused]
float gEnvMapAlphaScale; // Offset: 436 Size: 4 [unused]
float2 cloudLayerAnimScale1; // Offset: 440 Size: 8
float2 cloudLayerAnimScale2; // Offset: 448 Size: 8
float2 cloudLayerAnimScale3; // Offset: 456 Size: 8
};
-301
View File
@@ -1,301 +0,0 @@
#include "Clouds.hlsli"
Texture2D<float4> DensitySampler : register(t0);
Texture2D<float4> NormalSampler : register(t1);
Texture2D<float4> DetailDensitySampler : register(t2);
Texture2D<float4> DetailNormalSampler : register(t3);
Texture2D<float4> DetailDensity2Sampler : register(t4);
Texture2D<float4> DetailNormal2Sampler : register(t5);
Texture2D<float4> DepthMapTexSampler : register(t6);
SamplerState TextureSS : register(s0);
cbuffer PSSceneVars : register(b1)
{
float4 LightDirection;
uint EnableHDR;
uint Pad0;
uint Pad1;
uint Pad2;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION; // 0 xyzw 0 POS float xyzw
float4 o0 : TEXCOORD0; // 0 xyzw 0 NONE float
float4 o1 : TEXCOORD1; // 1 xyzw 1 NONE float xyzw
float4 o2 : TEXCOORD2; // 2 xyzw 2 NONE float xyzw
float4 o3 : TEXCOORD3; // 3 xyzw 3 NONE float xyzw
float2 o4 : TEXCOORD4; // 4 xy 4 NONE float xy
float4 o5 : TEXCOORD5; // 5 xyzw 5 NONE float xyzw
float4 o6 : TEXCOORD6; // 6 xyzw 6 NONE float xy w
float4 o7 : TEXCOORD7; // 7 xyzw 7 NONE float xyzw
float3 o8 : TEXCOORD8; // 8 xyz 8 NONE float xyz
float4 o9 : TEXCOORD9; // 9 xyzw 9 NONE float xyzw
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
float2 texc = input.o4;
float4 d = DensitySampler.Sample(TextureSS, texc);
float4 n = NormalSampler.Sample(TextureSS, texc);
float dv = saturate((1.0 - d.g) * input.o1.w);
float3 dc = gSunColor;
return float4(dc, saturate(dv));
}
/*
//clouds_animsoft.fxc_PSCloudsVertScatterPiercing_AnimSoft
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer misc_globals
// {
//
// float4 globalFade; // Offset: 0 Size: 16 [unused]
// float globalHeightScale; // Offset: 16 Size: 4 [unused]
// float4 g_Rage_Tessellation_CameraPosition;// Offset: 32 Size: 16 [unused]
// float4 g_Rage_Tessellation_CameraZAxis;// Offset: 48 Size: 16 [unused]
// float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset: 64 Size: 16 [unused]
// float4 g_Rage_Tessellation_LinearScale;// Offset: 80 Size: 16 [unused]
// float4 g_Rage_Tessellation_Frustum[4];// Offset: 96 Size: 64 [unused]
// float4 g_Rage_Tessellation_Epsilons;// Offset: 160 Size: 16 [unused]
// float4 globalScalars; // Offset: 176 Size: 16 [unused]
// float4 globalScalars2; // Offset: 192 Size: 16 [unused]
// float4 globalScalars3; // Offset: 208 Size: 16
// float4 globalScreenSize; // Offset: 224 Size: 16 [unused]
// uint4 gTargetAAParams; // Offset: 240 Size: 16 [unused]
// float4 colorize; // Offset: 256 Size: 16 [unused]
// float4 gGlobalParticleShadowBias; // Offset: 272 Size: 16 [unused]
// float gGlobalParticleDofAlphaScale;// Offset: 288 Size: 4 [unused]
// float gGlobalFogIntensity; // Offset: 292 Size: 4 [unused]
// float4 gPlayerLFootPos; // Offset: 304 Size: 16 [unused]
// float4 gPlayerRFootPos; // Offset: 320 Size: 16 [unused]
//
// }
//
// cbuffer clouds_locals
// {
//
// float3 gSkyColor; // Offset: 0 Size: 12
// float3 gEastMinusWestColor; // Offset: 16 Size: 12
// float3 gWestColor; // Offset: 32 Size: 12
// float3 gSunDirection; // Offset: 48 Size: 12
// float3 gSunColor; // Offset: 64 Size: 12
// float3 gCloudColor; // Offset: 80 Size: 12
// float3 gAmbientColor; // Offset: 96 Size: 12
// float3 gBounceColor; // Offset: 112 Size: 12
// float4 gDensityShiftScale; // Offset: 128 Size: 16
// float4 gScatterG_GSquared_PhaseMult_Scale;// Offset: 144 Size: 16 [unused]
// float4 gPiercingLightPower_Strength_NormalStrength_Thickness;// Offset: 160 Size: 16
// float3 gScaleDiffuseFillAmbient; // Offset: 176 Size: 12
// float3 gWrapLighting_MSAARef; // Offset: 192 Size: 12
// float4 gNearFarQMult; // Offset: 208 Size: 16
// float3 gAnimCombine; // Offset: 224 Size: 12
// float3 gAnimSculpt; // Offset: 240 Size: 12
// float3 gAnimBlendWeights; // Offset: 256 Size: 12
// float4 gUVOffset[2]; // Offset: 272 Size: 32 [unused]
// row_major float4x4 gCloudViewProj; // Offset: 304 Size: 64 [unused]
// float4 gCameraPos; // Offset: 368 Size: 16 [unused]
// float2 gUVOffset1; // Offset: 384 Size: 8 [unused]
// float2 gUVOffset2; // Offset: 392 Size: 8 [unused]
// float2 gUVOffset3; // Offset: 400 Size: 8 [unused]
// float2 gRescaleUV1; // Offset: 408 Size: 8 [unused]
// float2 gRescaleUV2; // Offset: 416 Size: 8 [unused]
// float2 gRescaleUV3; // Offset: 424 Size: 8 [unused]
// float gSoftParticleRange; // Offset: 432 Size: 4
// float gEnvMapAlphaScale; // Offset: 436 Size: 4 [unused]
// float2 cloudLayerAnimScale1; // Offset: 440 Size: 8 [unused]
// float2 cloudLayerAnimScale2; // Offset: 448 Size: 8 [unused]
// float2 cloudLayerAnimScale3; // Offset: 456 Size: 8 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// DensitySampler sampler NA NA s2 1
// NormalSampler sampler NA NA s3 1
// DetailDensitySampler sampler NA NA s4 1
// DetailNormalSampler sampler NA NA s5 1
// DetailDensity2Sampler sampler NA NA s6 1
// DetailNormal2Sampler sampler NA NA s7 1
// DepthMapTexSampler sampler NA NA s10 1
// DensitySampler texture float4 2d t2 1
// NormalSampler texture float4 2d t3 1
// DetailDensitySampler texture float4 2d t4 1
// DetailNormalSampler texture float4 2d t5 1
// DetailDensity2Sampler texture float4 2d t6 1
// DetailNormal2Sampler texture float4 2d t7 1
// DepthMapTexSampler texture float4 2d t10 1
// misc_globals cbuffer NA NA cb2 1
// clouds_locals cbuffer NA NA cb12 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xyzw 0 NONE float
// TEXCOORD 1 xyzw 1 NONE float xyzw
// TEXCOORD 2 xyzw 2 NONE float xyzw
// TEXCOORD 3 xyzw 3 NONE float xyzw
// TEXCOORD 4 xy 4 NONE float xy
// TEXCOORD 5 xyzw 5 NONE float xyzw
// TEXCOORD 6 xyzw 6 NONE float xy w
// TEXCOORD 7 xyzw 7 NONE float xyzw
// TEXCOORD 8 xyz 8 NONE float xyz
// TEXCOORD 9 xyzw 9 NONE float xyzw
// SV_Position 0 xyzw 10 POS float
// SV_ClipDistance 0 xyzw 11 CLIPDST float
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer CB2[14], immediateIndexed
dcl_constantbuffer CB12[28], immediateIndexed
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, mode_default
dcl_sampler s7, mode_default
dcl_sampler s10, mode_default
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t10
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.xyzw
dcl_input_ps linear v4.xy
dcl_input_ps linear v5.xyzw
dcl_input_ps linear v6.xyw
dcl_input_ps linear v7.xyzw
dcl_input_ps linear v8.xyz
dcl_input_ps linear v9.xyzw
dcl_output o0.xyzw
dcl_temps 5
sample r0.xyzw, v5.zwzz, t7.xyzw, s7
mad r0.xy, r0.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
dp2 r0.w, r0.xyxx, r0.xyxx
add r0.w, -r0.w, l(1.000000)
max r0.w, r0.w, l(0.000000)
sqrt r0.z, r0.w
sample r1.xyzw, v4.xyxx, t3.xyzw, s3
mad r1.xy, r1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
dp2 r0.w, r1.xyxx, r1.xyxx
add r0.w, -r0.w, l(1.000000)
max r0.w, r0.w, l(0.000000)
sqrt r1.z, r0.w
sample r2.xyzw, v5.xyxx, t5.xyzw, s5
mad r2.xy, r2.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
dp2 r0.w, r2.xyxx, r2.xyxx
add r0.w, -r0.w, l(1.000000)
max r0.w, r0.w, l(0.000000)
sqrt r2.z, r0.w
sample r3.xyzw, v4.xyxx, t2.yxzw, s2
sample r4.xyzw, v5.xyxx, t4.xyzw, s4
mov r3.y, r4.y
sample r4.xyzw, v5.zwzz, t6.xyzw, s6
mov r3.z, r4.y
mad r3.xyz, -r3.xyzx, r3.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
mul r3.xyz, r3.xyzx, cb12[16].xyzx
mul r4.xyz, r3.xyzx, cb12[14].xyzx
mul r2.xyz, r2.xyzx, r4.yyyy
mad r1.xyz, r1.xyzx, r4.xxxx, r2.xyzx
mad r0.xyz, r0.xyzx, r4.zzzz, r1.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
mul r1.xyz, r0.yyyy, v3.xyzx
mad r0.xyw, r0.xxxx, v2.xyxz, r1.xyxz
mad r0.xyz, r0.zzzz, v1.xyzx, r0.xywx
mad_sat r1.xyz, r0.xzzx, l(0.500000, -0.800000, 0.571429, 0.000000), l(0.500000, 0.200000, 0.428571, 0.000000)
mad r2.xyz, r1.xxxx, cb12[1].xyzx, cb12[2].xyzx
mad r1.xyw, cb12[7].xyxz, r1.yyyy, r2.xyxz
mad r1.xyz, cb12[0].xyzx, r1.zzzz, r1.xywx
dp3 r0.w, r0.xyzx, cb12[3].xyzx
dp3_sat r0.x, r0.xyzx, v7.xyzx
mul r0.x, r0.x, cb12[10].z
mad_sat r0.y, r0.w, cb12[12].x, cb12[12].y
mul r0.yzw, r0.yyyy, cb12[4].xxyz
mul r0.yzw, r0.yyzw, cb12[11].xxxx
mad r0.yzw, cb12[11].yyyy, r1.xxyz, r0.yyzw
mad r0.yzw, cb12[6].xxyz, cb12[11].zzzz, r0.yyzw
mad r1.x, r3.x, cb12[15].x, v3.w
mad r1.x, r3.y, cb12[15].y, r1.x
mad r1.x, r3.z, cb12[15].z, r1.x
max r1.y, r4.z, r4.y
max r1.y, r1.y, r4.x
mul r1.z, r1.y, v2.w
mad r1.y, -v2.w, r1.y, l(1.000000)
mad r1.x, -r1.y, r1.x, r1.z
add r1.x, r1.x, -cb12[8].x
mul_sat r1.x, r1.x, cb12[8].y
add r1.y, -r1.x, l(1.000000)
mul r1.x, r1.x, v1.w
add r1.z, -cb12[10].w, l(1.000000)
mad_sat r1.y, r1.y, cb12[10].w, r1.z
mul r2.xyz, r1.yyyy, v8.xyzx
mad r0.yzw, cb12[5].xxyz, r0.yyzw, r2.xxyz
mul r1.z, r0.x, v7.w
mad r0.x, -r0.x, v7.w, v7.w
mad r0.x, v7.w, r0.x, r1.z
mul r0.x, r1.y, r0.x
mul r1.yzw, r0.xxxx, cb12[4].xxyz
mad r0.xyz, r1.yzwy, cb12[10].yyyy, r0.yzwy
mad r0.xyz, r0.xyzx, v9.wwww, v9.xyzx
mul o0.xyz, r0.xyzx, cb2[13].zzzz
div r0.xy, v6.xyxx, v6.wwww
sample r0.xyzw, r0.xyxx, t10.xyzw, s10
add r0.x, -r0.x, l(1.000000)
add r0.y, r0.x, -cb12[13].z
ge r0.x, r0.x, l(1.000000)
div r0.y, cb12[13].w, r0.y
add r0.y, r0.y, -v6.w
movc r0.x, r0.x, cb12[27].x, r0.y
div_sat r0.x, r0.x, cb12[27].x
mul o0.w, r0.x, r1.x
ret
// Approximately 82 instruction slots used
*/
-398
View File
@@ -1,398 +0,0 @@
#include "Common.hlsli"
#include "Quaternion.hlsli"
#include "Clouds.hlsli"
cbuffer VSSceneVars : register(b1)
{
float4x4 ViewProj;
float4x4 ViewInv;
}
cbuffer VSEntityVars : register(b2)
{
float4 CamRel;
float4 Orientation;
float4 Scale;
}
cbuffer VSModelVars : register(b3)
{
float4x4 Transform;
}
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
float4 Tangent : TANGENT;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION; // 0 xyzw 0 POS float xyzw
float4 o0 : TEXCOORD0; // 0 xyzw 0 NONE float
float4 o1 : TEXCOORD1; // 1 xyzw 1 NONE float xyzw
float4 o2 : TEXCOORD2; // 2 xyzw 2 NONE float xyzw
float4 o3 : TEXCOORD3; // 3 xyzw 3 NONE float xyzw
float2 o4 : TEXCOORD4; // 4 xy 4 NONE float xy
float4 o5 : TEXCOORD5; // 5 xyzw 5 NONE float xyzw
float4 o6 : TEXCOORD6; // 6 xyzw 6 NONE float xy w
float4 o7 : TEXCOORD7; // 7 xyzw 7 NONE float xyzw
float3 o8 : TEXCOORD8; // 8 xyz 8 NONE float xyz
float4 o9 : TEXCOORD9; // 9 xyzw 9 NONE float xyzw
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 spos = input.Position.xyz * Scale.xyz*0.05;
float3 bpos = mulvq(spos, Orientation);
float3 opos = CamRel.xyz + bpos;
float4 cpos = mul(float4(opos, 1), ViewProj);
float3 tnorm = input.Normal;
float3 bnorm = normalize(mulvq(tnorm, Orientation));
float4 vc = input.Colour0;
float2 tc = input.Texcoord0;
float2 o4xy = (gUVOffset[0].xy * cloudLayerAnimScale1) + (tc * gRescaleUV1) + gUVOffset1;
float2 o5xy = (gUVOffset[0].zw * cloudLayerAnimScale2) + (tc * gRescaleUV2) + gUVOffset2;
float2 o5zw = (gUVOffset[1].xy * cloudLayerAnimScale3) + (tc * gRescaleUV3) + gUVOffset3;
output.Position = cpos;
output.o0 = 0;
output.o1 = float4(bnorm, vc.w);
output.o2 = float4(0, 0, 0, vc.y);
output.o3 = float4(0, 0, 0, vc.z);
output.o4 = o4xy;
output.o5 = float4(o5xy, o5zw);
output.o6 = 0;
output.o7 = 0;
output.o8 = 0;
output.o9 = 0;
return output;
}
/*
//clouds_animsoft.fxc_VSCloudsVertScatterPiercing
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer rage_matrices
// {
//
// row_major float4x4 gWorld; // Offset: 0 Size: 64
// row_major float4x4 gWorldView; // Offset: 64 Size: 64 [unused]
// row_major float4x4 gWorldViewProj; // Offset: 128 Size: 64
// row_major float4x4 gViewInverse; // Offset: 192 Size: 64 [unused]
//
// }
//
// cbuffer rage_clipplanes
// {
//
// float4 ClipPlanes; // Offset: 0 Size: 16
//
// }
//
// cbuffer lighting_globals
// {
//
// float4 gDirectionalLight; // Offset: 0 Size: 16 [unused]
// float4 gDirectionalColour; // Offset: 16 Size: 16 [unused]
// int gNumForwardLights; // Offset: 32 Size: 4 [unused]
// float4 gLightPositionAndInvDistSqr[8];// Offset: 48 Size: 128 [unused]
// float4 gLightDirectionAndFalloffExponent[8];// Offset: 176 Size: 128 [unused]
// float4 gLightColourAndCapsuleExtent[8];// Offset: 304 Size: 128 [unused]
// float gLightConeScale[8]; // Offset: 432 Size: 116 [unused]
// float gLightConeOffset[8]; // Offset: 560 Size: 116 [unused]
// float4 gLightNaturalAmbient0; // Offset: 688 Size: 16 [unused]
// float4 gLightNaturalAmbient1; // Offset: 704 Size: 16 [unused]
// float4 gLightArtificialIntAmbient0;// Offset: 720 Size: 16 [unused]
// float4 gLightArtificialIntAmbient1;// Offset: 736 Size: 16 [unused]
// float4 gLightArtificialExtAmbient0;// Offset: 752 Size: 16 [unused]
// float4 gLightArtificialExtAmbient1;// Offset: 768 Size: 16 [unused]
// float4 gDirectionalAmbientColour; // Offset: 784 Size: 16 [unused]
// float4 globalFogParams[5]; // Offset: 800 Size: 80
// float4 globalFogColor; // Offset: 880 Size: 16
// float4 globalFogColorE; // Offset: 896 Size: 16
// float4 globalFogColorN; // Offset: 912 Size: 16
// float4 globalFogColorMoon; // Offset: 928 Size: 16
// float4 gReflectionTweaks; // Offset: 944 Size: 16 [unused]
//
// }
//
// cbuffer clouds_locals
// {
//
// float3 gSkyColor; // Offset: 0 Size: 12 [unused]
// float3 gEastMinusWestColor; // Offset: 16 Size: 12 [unused]
// float3 gWestColor; // Offset: 32 Size: 12 [unused]
// float3 gSunDirection; // Offset: 48 Size: 12
// float3 gSunColor; // Offset: 64 Size: 12
// float3 gCloudColor; // Offset: 80 Size: 12 [unused]
// float3 gAmbientColor; // Offset: 96 Size: 12 [unused]
// float3 gBounceColor; // Offset: 112 Size: 12 [unused]
// float4 gDensityShiftScale; // Offset: 128 Size: 16 [unused]
// float4 gScatterG_GSquared_PhaseMult_Scale;// Offset: 144 Size: 16
// float4 gPiercingLightPower_Strength_NormalStrength_Thickness;// Offset: 160 Size: 16
// float3 gScaleDiffuseFillAmbient; // Offset: 176 Size: 12 [unused]
// float3 gWrapLighting_MSAARef; // Offset: 192 Size: 12 [unused]
// float4 gNearFarQMult; // Offset: 208 Size: 16 [unused]
// float3 gAnimCombine; // Offset: 224 Size: 12 [unused]
// float3 gAnimSculpt; // Offset: 240 Size: 12 [unused]
// float3 gAnimBlendWeights; // Offset: 256 Size: 12 [unused]
// float4 gUVOffset[2]; // Offset: 272 Size: 32
// row_major float4x4 gCloudViewProj; // Offset: 304 Size: 64
// float4 gCameraPos; // Offset: 368 Size: 16
// float2 gUVOffset1; // Offset: 384 Size: 8
// float2 gUVOffset2; // Offset: 392 Size: 8
// float2 gUVOffset3; // Offset: 400 Size: 8
// float2 gRescaleUV1; // Offset: 408 Size: 8
// float2 gRescaleUV2; // Offset: 416 Size: 8
// float2 gRescaleUV3; // Offset: 424 Size: 8
// float gSoftParticleRange; // Offset: 432 Size: 4 [unused]
// float gEnvMapAlphaScale; // Offset: 436 Size: 4 [unused]
// float2 cloudLayerAnimScale1; // Offset: 440 Size: 8
// float2 cloudLayerAnimScale2; // Offset: 448 Size: 8
// float2 cloudLayerAnimScale3; // Offset: 456 Size: 8
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// rage_clipplanes cbuffer NA NA cb0 1
// rage_matrices cbuffer NA NA cb1 1
// lighting_globals cbuffer NA NA cb3 1
// clouds_locals cbuffer NA NA cb12 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyzw
// COLOR 0 xyzw 1 NONE float xyzw
// NORMAL 0 xyz 2 NONE float xyz
// TEXCOORD 0 xy 3 NONE float xy
// TANGENT 0 xyzw 4 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD 0 xyzw 0 NONE float xyzw
// TEXCOORD 1 xyzw 1 NONE float xyzw
// TEXCOORD 2 xyzw 2 NONE float xyzw
// TEXCOORD 3 xyzw 3 NONE float xyzw
// TEXCOORD 4 xy 4 NONE float xy
// TEXCOORD 5 xyzw 5 NONE float xyzw
// TEXCOORD 6 xyzw 6 NONE float xyzw
// TEXCOORD 7 xyzw 7 NONE float xyzw
// TEXCOORD 8 xyz 8 NONE float xyz
// TEXCOORD 9 xyzw 9 NONE float xyzw
// SV_Position 0 xyzw 10 POS float xyzw
// SV_ClipDistance 0 xyzw 11 CLIPDST float xyzw
//
vs_4_0
dcl_constantbuffer CB1[12], immediateIndexed
dcl_constantbuffer CB0[1], immediateIndexed
dcl_constantbuffer CB3[59], immediateIndexed
dcl_constantbuffer CB12[29], immediateIndexed
dcl_input v0.xyzw
dcl_input v1.xyzw
dcl_input v2.xyz
dcl_input v3.xy
dcl_input v4.xyzw
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xy
dcl_output o5.xyzw
dcl_output o6.xyzw
dcl_output o7.xyzw
dcl_output o8.xyz
dcl_output o9.xyzw
dcl_output_siv o10.xyzw, position
dcl_output_siv o11.xyzw, clip_distance
dcl_temps 5
mul r0.xyz, v0.yyyy, gWorld[1].xyzx
mad r0.xyz, v0.xxxx, gWorld[0].xyzx, r0.xyzx
mad r0.xyz, v0.zzzz, gWorld[2].xyzx, r0.xyzx
mad r0.xyz, v0.wwww, gWorld[3].xyzx, r0.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
sqrt r1.w, r0.w
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, r0.xyzx
div r1.xyz, r0.xyzx, r1.wwww
mov o0.xyzw, r1.xyzw
mul r3.xyz, v2.yyyy, gWorld[1].xyzx
mad r3.xyz, v2.xxxx, gWorld[0].xyzx, r3.xyzx
mad r3.xyz, v2.zzzz, gWorld[2].xyzx, r3.xyzx
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul o1.xyz, r0.wwww, r3.xyzx
mov o1.w, v1.w
mul r3.xyz, v4.yyyy, gWorld[1].xyzx
mad r3.xyz, v4.xxxx, gWorld[0].xyzx, r3.xyzx
mad r3.xyz, v4.zzzz, gWorld[2].xyzx, r3.xyzx
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul o2.xyz, r0.wwww, r3.xyzx
mov o2.w, v1.y
mul r3.xyz, v2.yzxy, v4.zxyz
mad r3.xyz, v4.yzxy, v2.zxyz, -r3.xyzx
mul r3.xyz, r3.xyzx, v4.wwww
mul r4.xyz, r3.yyyy, gWorld[1].xyzx
mad r3.xyw, r3.xxxx, gWorld[0].xyxz, r4.xyxz
mad r3.xyz, r3.zzzz, gWorld[2].xyzx, r3.xywx
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r0.w, r0.w
mul o3.xyz, r0.wwww, r3.xyzx
mov o3.w, v1.z
mad r3.xy, v3.xyxx, gRescaleUV1.xyxx, gUVOffset1.xyxx
mad o4.xy, gUVOffset[0].xyxx, cloudLayerAnimScale1.xyxx, r3.xyxx
mad r3.xy, v3.xyxx, gRescaleUV2.xyxx, gUVOffset2.xyxx
mad o5.xy, gUVOffset[0].zwzz, cloudLayerAnimScale2.xyxx, r3.xyxx
mad r3.xy, v3.xyxx, gRescaleUV3.xyxx, gUVOffset3.xyxx
mad o5.zw, gUVOffset[1].xxxy, cloudLayerAnimScale3.xxxy, r3.xxxy
mul r3.xyzw, r0.yyyy, gCloudViewProj[1].xyzw
mad r3.xyzw, r0.xxxx, gCloudViewProj[0].xyzw, r3.xyzw
mad r3.xyzw, r0.zzzz, gCloudViewProj[2].xyzw, r3.xyzw
add r3.xyzw, r3.xyzw, gCloudViewProj[3].xyzw
mul r0.xyw, r3.xwxy, l(0.500000, 0.500000, 0.000000, 0.500000)
mad o6.y, r3.w, l(0.500000), -r0.w
add o6.x, r0.y, r0.x
mov o6.zw, r3.wwww
dp3 r0.x, -r1.xyzx, gSunDirection.xyzx
mad r0.xyw, -r0.xxxx, gSunDirection.xyxz, -r1.xyxz
dp3 r1.x, r1.xyzx, gSunDirection.xyzx
dp3 r1.y, r0.xywx, r0.xywx
rsq r1.y, r1.y
mul o7.xyz, r0.xywx, r1.yyyy
mov_sat r0.x, r1.x
log r0.x, r0.x
mul r0.x, r0.x, gPiercingLightPower_Strength_NormalStrength_Thickness.x
exp o7.w, r0.x
dp2 r0.x, r1.xxxx, gScatterG_GSquared_PhaseMult_Scale.xxxx
mad r0.y, r1.x, r1.x, l(1.000000)
add r0.w, gScatterG_GSquared_PhaseMult_Scale.y, l(1.000000)
add r0.x, -r0.x, r0.w
log r0.x, |r0.x|
mul r0.x, r0.x, l(1.500000)
exp r0.x, r0.x
div r0.x, r0.y, r0.x
mul r0.x, r0.x, gScatterG_GSquared_PhaseMult_Scale.z
mul r0.xyw, r0.xxxx, gSunColor.xyxz
mul o8.xyz, r0.xywx, gScatterG_GSquared_PhaseMult_Scale.wwww
dp3_sat r0.x, r2.xyzx, globalFogParams[3].xyzx
dp3_sat r0.y, r2.xyzx, globalFogParams[4].xyzx
log r0.y, r0.y
mul r0.y, r0.y, globalFogParams[4].w
exp r0.y, r0.y
log r0.x, r0.x
mul r0.x, r0.x, globalFogParams[3].w
exp r0.x, r0.x
add r1.xyz, -globalFogColorE.xyzx, globalFogColorMoon.xyzx
mad r1.xyz, r0.yyyy, r1.xyzx, globalFogColorE.xyzx
add r2.xyz, -r1.xyzx, globalFogColor.xyzx
mad r0.xyw, r0.xxxx, r2.xyxz, r1.xyxz
add r0.xyw, r0.xyxw, -globalFogColorN.xyxz
add r1.x, r1.w, -globalFogParams[0].x
max r1.x, r1.x, l(0.000000)
mul r1.y, r1.x, -globalFogParams[1].z
mul r1.y, r1.y, l(1.442695)
exp r1.y, r1.y
add r1.y, -r1.y, l(1.000000)
mad r0.xyw, r1.yyyy, r0.xyxw, globalFogColorN.xyxz
div r1.y, r1.x, r1.w
mul r1.x, r1.x, globalFogParams[1].w
mul r0.z, r0.z, r1.y
lt r1.y, l(0.010000), |r0.z|
mul r0.z, r0.z, globalFogParams[2].z
mul r1.z, r0.z, l(-1.442695)
exp r1.z, r1.z
add r1.z, -r1.z, l(1.000000)
div r0.z, r1.z, r0.z
movc r0.z, r1.y, r0.z, l(1.000000)
mul r0.z, r0.z, r1.x
min r0.z, r0.z, l(1.000000)
mul r0.z, r0.z, l(1.442695)
exp r0.z, r0.z
min r0.z, r0.z, l(1.000000)
add r0.z, -r0.z, l(1.000000)
mul_sat r0.z, r0.z, globalFogParams[2].y
add r1.x, -v1.x, l(1.000000)
max r0.z, r0.z, r1.x
mul r0.xyw, r0.zzzz, r0.xyxw
add r0.z, -r0.z, l(1.000000)
mul r1.y, r1.x, globalFogParams[2].w
mad r1.x, -r1.x, globalFogParams[2].w, l(1.000000)
mul r2.x, r1.y, globalFogColor.w
mul r2.y, r1.y, globalFogColorE.w
mul r2.z, r1.y, globalFogColorN.w
mad o9.xyz, r0.xywx, r1.xxxx, r2.xyzx
mul o9.w, r0.z, r1.x
lt r0.x, r3.z, l(0.000000)
div r0.y, l(0.100000), r3.w
movc r0.x, r0.x, r0.y, r3.z
lt r0.y, r3.w, r3.z
add r0.z, r3.w, l(-0.100000)
movc r0.y, r0.y, r0.z, r3.z
ne r0.z, l(0.000000, 0.000000, 0.000000, 0.000000), gCameraPos.w
movc r0.x, r0.z, r0.x, r0.y
lt r0.y, l(0.000000), r3.w
movc o10.z, r0.y, r0.x, r3.z
mov o10.xyw, r3.xyxw
mul r0.xyzw, v0.yyyy, gWorldViewProj[1].xyzw
mad r0.xyzw, v0.xxxx, gWorldViewProj[0].xyzw, r0.xyzw
mad r0.xyzw, v0.zzzz, gWorldViewProj[2].xyzw, r0.xyzw
add r0.xyzw, r0.xyzw, gWorldViewProj[3].xyzw
dp4 o11.x, r0.xyzw, ClipPlanes.xyzw
mov o11.yzw, l(0,0,0,0)
ret
// Approximately 135 instruction slots used
*/
-661
View File
@@ -1,661 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{0D14B076-0ABF-434E-AB9F-36E7800D8887}</ProjectGuid>
<RootNamespace>CodeWalkerShaders</RootNamespace>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
</ClCompile>
<FxCompile>
<ObjectFileOutput>$(ProjectDir)%(Filename).cso</ObjectFileOutput>
<ShaderModel>4.0</ShaderModel>
</FxCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>true</SDLCheck>
</ClCompile>
<FxCompile>
<ObjectFileOutput>$(ProjectDir)%(Filename).cso</ObjectFileOutput>
<ShaderModel>4.0</ShaderModel>
</FxCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<FxCompile>
<ObjectFileOutput>$(ProjectDir)%(Filename).cso</ObjectFileOutput>
<ShaderModel>4.0</ShaderModel>
</FxCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
<FxCompile>
<ObjectFileOutput>$(ProjectDir)%(Filename).cso</ObjectFileOutput>
<ShaderModel>4.0</ShaderModel>
</FxCompile>
</ItemDefinitionGroup>
<ItemGroup>
<FxCompile Include="BasicPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_Box.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_Capsule.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_Cylinder.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCCT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCCTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCCTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCTT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCTTT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PBBNCTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PNCCT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCCTT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCCTTT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCCTTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCCTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCCTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PNCTT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PNCTTT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="BasicVS_PNCTTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_PNCTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BasicVS_Sphere.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BoundingBoxVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="BoundsPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="BoundingSphereVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="CablePS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="CableVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="CloudsPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="CloudsVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="DistantLightsPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="DistantLightsVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="MarkerPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="MarkerVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="PathBoxPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="PathBoxVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="PathDynVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="PathPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="PathVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="PPBloomFilterBPHCS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="PPBloomFilterVCS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="PPCopyPixelsPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="PPFinalPassPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="PPFinalPassVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="PPLumBlendCS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="PPReduceTo0DCS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="PPReduceTo1DCS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Compute</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="ShadowPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="ShadowVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="ShadowVS_Skin.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
</FxCompile>
<FxCompile Include="SkydomePS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="SkydomeVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="SkyMoonPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="SkyMoonVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="SkySunPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="SkySunVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TerrainPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="TerrainVS_PNCCT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TerrainVS_PNCCTT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TerrainVS_PNCCTTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TerrainVS_PNCCTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TerrainVS_PNCCTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TerrainVS_PNCTTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TerrainVS_PNCTTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="TreesLodPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="TreesLodVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="WaterPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="WaterVS_PCT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="WaterVS_PNCT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="WaterVS_PNCTX.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="WaterVS_PT.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
<FxCompile Include="WidgetPS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Pixel</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
</FxCompile>
<FxCompile Include="WidgetVS.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
</FxCompile>
</ItemGroup>
<ItemGroup>
<None Include="BasicVS.hlsli" />
<None Include="Clouds.hlsli" />
<None Include="Common.hlsli" />
<None Include="Quaternion.hlsli" />
<None Include="Shadowmap.hlsli" />
<None Include="Skydome.hlsli" />
<None Include="TerrainVS.hlsli" />
<None Include="WaterVS.hlsli" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
-90
View File
@@ -1,90 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<FxCompile Include="BasicPS.hlsl" />
<FxCompile Include="TerrainPS.hlsl" />
<FxCompile Include="TerrainVS_PNCTTX.hlsl" />
<FxCompile Include="TerrainVS_PNCCT.hlsl" />
<FxCompile Include="TerrainVS_PNCCTT.hlsl" />
<FxCompile Include="TerrainVS_PNCCTTTX.hlsl" />
<FxCompile Include="TerrainVS_PNCCTTX.hlsl" />
<FxCompile Include="TerrainVS_PNCCTX.hlsl" />
<FxCompile Include="TerrainVS_PNCTTTX.hlsl" />
<FxCompile Include="MarkerVS.hlsl" />
<FxCompile Include="MarkerPS.hlsl" />
<FxCompile Include="SkydomeVS.hlsl" />
<FxCompile Include="SkydomePS.hlsl" />
<FxCompile Include="BoundingSphereVS.hlsl" />
<FxCompile Include="BoundsPS.hlsl" />
<FxCompile Include="BoundingBoxVS.hlsl" />
<FxCompile Include="TreesLodVS.hlsl" />
<FxCompile Include="TreesLodPS.hlsl" />
<FxCompile Include="ShadowVS.hlsl" />
<FxCompile Include="ShadowPS.hlsl" />
<FxCompile Include="BasicVS_PNCT.hlsl" />
<FxCompile Include="BasicVS_PNCTT.hlsl" />
<FxCompile Include="BasicVS_PNCTX.hlsl" />
<FxCompile Include="BasicVS_PNCCT.hlsl" />
<FxCompile Include="BasicVS_PNCCTT.hlsl" />
<FxCompile Include="BasicVS_PNCCTTT.hlsl" />
<FxCompile Include="BasicVS_PNCCTX.hlsl" />
<FxCompile Include="BasicVS_PNCTTX.hlsl" />
<FxCompile Include="BasicVS_PNCCTTX.hlsl" />
<FxCompile Include="BasicVS_PNCTTTX.hlsl" />
<FxCompile Include="BasicVS_PNCCTTTX.hlsl" />
<FxCompile Include="BasicVS_Box.hlsl" />
<FxCompile Include="BasicVS_Sphere.hlsl" />
<FxCompile Include="BasicVS_Capsule.hlsl" />
<FxCompile Include="BasicVS_Cylinder.hlsl" />
<FxCompile Include="CableVS.hlsl" />
<FxCompile Include="CablePS.hlsl" />
<FxCompile Include="DistantLightsVS.hlsl" />
<FxCompile Include="DistantLightsPS.hlsl" />
<FxCompile Include="PPBloomFilterBPHCS.hlsl" />
<FxCompile Include="PPBloomFilterVCS.hlsl" />
<FxCompile Include="PPCopyPixelsPS.hlsl" />
<FxCompile Include="PPFinalPassPS.hlsl" />
<FxCompile Include="PPFinalPassVS.hlsl" />
<FxCompile Include="PPLumBlendCS.hlsl" />
<FxCompile Include="PPReduceTo0DCS.hlsl" />
<FxCompile Include="PPReduceTo1DCS.hlsl" />
<FxCompile Include="SkySunVS.hlsl" />
<FxCompile Include="SkySunPS.hlsl" />
<FxCompile Include="CloudsVS.hlsl" />
<FxCompile Include="CloudsPS.hlsl" />
<FxCompile Include="WaterVS_PNCT.hlsl" />
<FxCompile Include="WaterVS_PNCTX.hlsl" />
<FxCompile Include="WaterPS.hlsl" />
<FxCompile Include="WaterVS_PT.hlsl" />
<FxCompile Include="WaterVS_PCT.hlsl" />
<FxCompile Include="PathVS.hlsl" />
<FxCompile Include="PathPS.hlsl" />
<FxCompile Include="WidgetVS.hlsl" />
<FxCompile Include="WidgetPS.hlsl" />
<FxCompile Include="PathBoxVS.hlsl" />
<FxCompile Include="PathBoxPS.hlsl" />
<FxCompile Include="SkyMoonVS.hlsl" />
<FxCompile Include="SkyMoonPS.hlsl" />
<FxCompile Include="PathDynVS.hlsl" />
<FxCompile Include="BasicVS_PBBNCT.hlsl" />
<FxCompile Include="BasicVS_PBBNCTX.hlsl" />
<FxCompile Include="BasicVS_PBBNCTT.hlsl" />
<FxCompile Include="BasicVS_PBBNCTTT.hlsl" />
<FxCompile Include="BasicVS_PNCTTT.hlsl" />
<FxCompile Include="BasicVS_PBBNCCT.hlsl" />
<FxCompile Include="BasicVS_PBBNCCTX.hlsl" />
<FxCompile Include="BasicVS_PBBNCTTX.hlsl" />
<FxCompile Include="ShadowVS_Skin.hlsl" />
<FxCompile Include="BasicVS_PBBNCCTTX.hlsl" />
</ItemGroup>
<ItemGroup>
<None Include="Quaternion.hlsli" />
<None Include="Common.hlsli" />
<None Include="Shadowmap.hlsli" />
<None Include="TerrainVS.hlsli" />
<None Include="BasicVS.hlsli" />
<None Include="Skydome.hlsli" />
<None Include="Clouds.hlsli" />
<None Include="WaterVS.hlsli" />
</ItemGroup>
</Project>
-177
View File
@@ -1,177 +0,0 @@
struct ShaderGlobalLightParams
{
float3 LightDir;
float LightHdr; //global intensity
float4 LightDirColour;
float4 LightDirAmbColour;
float4 LightNaturalAmbUp;
float4 LightNaturalAmbDown;
float4 LightArtificialAmbUp;
float4 LightArtificialAmbDown;
};
//for unpacking colours etc
uint4 Unpack4x8(uint v)
{
return uint4(v >> 24, v >> 16, v >> 8, v) & 0xFF;
}
float4 Unpack4x8UNF(uint v)
{
float4 u = (float4)Unpack4x8(v);
return u*0.0039215686274509803921568627451f;// u * 1/255
}
float DepthFunc(float2 zw)
{
return zw.x;
////this sort of works for reverse depth buffering, but has issues with vertices behind the near clip plane.
////might need to adjust the viewproj matrix to fix that...
////(for this to work, also need to change GpuBuffers.Clear,.ClearDepth and ShaderManager DepthComparison,RenderFinalPass)
//return max(0.001 / zw.x, 0);
//return zw.x * (0.1 + 0.00001*(abs(zw.y)));
//return zw.x * (0.1 + 0.00001*((zw.y)));
//const float far = 1000.0; //outerra version - needs logz written to frag depth in PS...
//const float C = 0.01; //~10m linearization
//const float FC = 1.0/log(far*C + 1);
//////logz = gl_Position.w*C + 1; //version with fragment code
////logz = log(gl_Position.w*C + 1)*FC;
////gl_Position.z = (2*logz - 1)*gl_Position.w;
//float logz = log(zw.y*C + 1)*FC;
//return (2*logz - 1)*zw.y;
}
float3 GeomWindMotion(float3 ipos, float3 vc0, float4 windvec, float4 overrideparams)
{
//lt r1.x, r0.x, l(1.000000)
//mul r1.yzw, v2.xxxz, cb12[0].xxxy //umGlobalParams
//mul r1.yzw, r1.yyzw, cb9[13].xxxy //umGlobalOverrideParams
//add r2.x, v2.y, cb9[0].w //_worldPlayerPos_umGlobalPhaseShift
//mul r2.x, |r2.x|, l(6.283185)
//mul r2.yzw, cb9[13].zzzw, cb12[0].zzzw //umGlobalOverrideParams, umGlobalParams
//mad r2.xyz, cb2[12].xxxx, r2.yzwy, r2.xxxx //globalScalars2
//sincos r2.xyz, null, r2.xyzx
//mad r1.yzw, r2.xxyz, r1.yyzw, v0.xxyz
//movc r1.xyz, r1.xxxx, r1.yzwy, v0.xyzx
//add r1.w, -r0.x, l(1.000000)
//mul r0.xyz, r0.yzwy, r0.xxxx
//mad r0.xyz, r1.wwww, r1.xyzx, r0.xyzx
//mul r1.xyzw, r0.yyyy, cb1[9].xyzw
//mad r1.xyzw, r0.xxxx, cb1[8].xyzw, r1.xyzw
//mad r0.xyzw, r0.zzzz, cb1[10].xyzw, r1.xyzw
//add o0.xyzw, r0.xyzw, cb1[11].xyzw //screen pos out
//mov o1.xy, v4.xyxx
float3 f1 = vc0.xxz * windvec.xxy * overrideparams.xxy;
float phase = vc0.y + 0.0; //playerpos/global phase shift?
float phrad = abs(phase)*6.283185;
float3 f2 = windvec.zzw * overrideparams.zzw + phrad; //globalScalars2
f2 = sin(f2);
f1 = f2*f1 + ipos;
return f1;
//return ipos;
}
float3 NormalMap(float2 nmv, float bumpinezz, float3 norm, float3 tang, float3 bita)
{
//r1 = nmv; //sample r1.xyzw, v2.xyxx, t2.xyzw, s2 (BumpSampler)
//float bmp = max(bumpinezz, 0.001); //max r0.x, bumpiness, l(0.001000)
float2 nxy = nmv.xy * 2 - 1; //mad r0.yz, r1.xxyx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
float2 bxy = nxy * max(bumpinezz, 0.001); //mul r0.xw, r0.xxxx, r0.yyyz
float bxyz = sqrt(abs(1 - dot(nxy, nxy))); //r0.y = dot(nxy, nxy); //dp2 r0.y, r0.yzyy, r0.yzyy //r0.y = 1.0 - r0.y; //add r0.y, -r0.y, l(1.000000) //r0.y = sqrt(abs(r0.y)); //sqrt r0.y, |r0.y|
float3 t1 = tang * bxy.x; //mad r0.xzw, r0.xxxx, v4.xxyz, r1.xxyz
float3 t2 = bita * bxy.y + t1; //mul r1.xyz, r0.wwww, v5.xyzx
float3 t3 = norm * bxyz + t2; //mad r0.xyz, r0.yyyy, v3.xyzx, r0.xzwx
return normalize(t3);
//r0.w = dot(t3, t3); //dp3 r0.w, r0.xyzx, r0.xyzx
//r0.w = 1.0 / sqrt(r0.w); //rsq r0.w, r0.w
////r1.x = r0.z*r0.w - 0.35; //mad r1.x, r0.z, r0.w, l(-0.350000)
//t3 = t3*r0.w; //mul r0.xyz, r0.wwww, r0.xyzx
////mad o1.xyz, t3.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
//return t3;
}
float3 BasicLighting(float4 lightcolour, float4 ambcolour, float pclit)
{
return (ambcolour.rgb + lightcolour.rgb*pclit);
}
float3 AmbientLight(float3 diff, float normz, float4 upcolour, float4 downcolour, float amount)
{
float bf = normz*0.5 + 0.5;
float3 upval = upcolour.rgb*saturate(1.0-bf);
float3 downval = downcolour.rgb*saturate(bf);
return diff*(upval + downval)*amount;
//return (float3)0;
}
float3 GlobalLighting(float3 diff, float3 norm, float4 vc0, float lf, uniform ShaderGlobalLightParams globalLights)
{
float3 c = saturate(diff);
float3 fc = c;
float naturalDiffuseFactor = 1.0;
float artificialDiffuseFactor = saturate(vc0.g);
c *= BasicLighting(globalLights.LightDirColour, globalLights.LightDirAmbColour, lf);
c += AmbientLight(fc, norm.z, globalLights.LightNaturalAmbUp, globalLights.LightNaturalAmbDown, naturalDiffuseFactor);
c += AmbientLight(fc, norm.z, globalLights.LightArtificialAmbUp, globalLights.LightArtificialAmbDown, artificialDiffuseFactor);
return c;
}
-16
View File
@@ -1,16 +0,0 @@
Texture2D<float4> Lightmap : register(t0);
SamplerState TextureSS : register(s0);
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Texcoord : TEXCOORD0;
float4 Colour : COLOR0;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
//return float4(1,0,0,1);
return Lightmap.Sample(TextureSS, input.Texcoord) * input.Colour;
}
-57
View File
@@ -1,57 +0,0 @@
#include "Common.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float2 Texcoord : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Texcoord : TEXCOORD0;
float4 Colour : COLOR0;
};
struct DistLODLight
{
float3 Position;
uint Colour;
};
StructuredBuffer<DistLODLight> LightInstances : register(t0);
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4x4 ViewInv;
float3 CamPos;
float Pad0;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
DistLODLight light = LightInstances[iid];
float4 ipos = float4(light.Position - CamPos, 1.0);
float4 vpos = float4(input.Position.xy, 0.0, 0.0);// *20.0f;
float4 rgbi = Unpack4x8UNF(light.Colour).gbar;
float dist = length(ipos.xyz);
float size = rgbi.a * min(dist, 50);
float3 offs = vpos.xyz * min(size*0.1f, 3.0f);
float3 tpos = mul(offs, (float3x3)ViewInv);
ipos.xyz += tpos;
float4 opos = mul(ipos, ViewProj);
//opos.xy += offs * opos.w;
output.Position = opos;// +vpos;
output.Texcoord = input.Texcoord;
output.Colour = float4(rgbi.rgb, 0.25);
return output;
}
-15
View File
@@ -1,15 +0,0 @@
Texture2D<float4> Colourmap : register(t0);
SamplerState TextureSS : register(s0);
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Texcoord : TEXCOORD0;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
//return float4(1,0,0,1);
return Colourmap.Sample(TextureSS, input.Texcoord);
}
-41
View File
@@ -1,41 +0,0 @@
#include "Common.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4x4 ViewInv;
float4 ScreenScale; //xy = 1/wh
}
cbuffer VSMarkerVars : register(b1)
{
float4 CamRel;
float2 Size;
float2 Offset;
}
struct VS_INPUT
{
float4 Position : POSITION;
float2 Texcoord : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Texcoord : TEXCOORD0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 ipos = input.Position.xyz * float3(Size * ScreenScale.y, 1) + float3(Offset * ScreenScale.y, 0);
float3 bpos = mul(ipos, (float3x3)ViewInv);
float3 opos = CamRel.xyz + bpos;
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
cpos.z = DepthFunc(cpos.zw);
output.Position = cpos;
output.Texcoord = input.Texcoord;
return output;
}
-62
View File
@@ -1,62 +0,0 @@
//--------------------------------------------------------------------------------------
// File: BrightPassAndHorizFilterCS.hlsl
//
// The CS for bright pass and horizontal blur, used in CS path of
// HDRToneMappingCS11 sample
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
static const float MIDDLE_GRAY = 0.72f;
static const float LUM_WHITE = 1.5f;
static const float BRIGHT_THRESHOLD = 50.0f;//0.8f;
Texture2D Input : register( t0 );
StructuredBuffer<float> lum : register( t1 );
RWStructuredBuffer<float4> Result : register( u0 );
cbuffer cb0
{
float4 g_avSampleWeights[15];
uint g_outputwidth;
float g_inverse;
int2 g_inputsize;
}
#define kernelhalf 7
#define groupthreads 128
groupshared float4 temp[groupthreads];
[numthreads( groupthreads, 1, 1 )]
void main( uint3 Gid : SV_GroupID, uint GI : SV_GroupIndex )
{
int2 coord = int2( GI - kernelhalf + (groupthreads - kernelhalf * 2) * Gid.x, Gid.y );
coord = coord.xy * 8 + int2(4, 3);
coord = clamp( coord, int2(0, 0), int2(g_inputsize.x-1, g_inputsize.y-1) );
float4 vColor = Input.Load( int3(coord, 0) );
float fLum = max(lum[0]*g_inverse, 0.75);
// Bright pass and tone mapping
vColor = max( 0.0f, vColor - BRIGHT_THRESHOLD );
vColor *= MIDDLE_GRAY / (fLum + 0.001f);
vColor *= (1.0f + vColor/LUM_WHITE);
vColor /= (1.0f + vColor);
temp[GI] = vColor;
GroupMemoryBarrierWithGroupSync();
// Horizontal blur
if ( GI >= kernelhalf &&
GI < (groupthreads - kernelhalf) &&
( (Gid.x * (groupthreads - 2 * kernelhalf) + GI - kernelhalf) < g_outputwidth) )
{
float4 vOut = 0;
[unroll]
for ( int i = -kernelhalf; i <= kernelhalf; ++i )
vOut += temp[GI + i] * g_avSampleWeights[i + kernelhalf];
Result[GI - kernelhalf + (groupthreads - kernelhalf * 2) * Gid.x + Gid.y * g_outputwidth] = float4(vOut.rgb, 1.0f);
}
}
-72
View File
@@ -1,72 +0,0 @@
//VERTICAL FILTER ONLY
//--------------------------------------------------------------------------------------
// File: FilterCS.hlsl
//
// The CSs for doing vertical and horizontal blur, used in CS path of
// HDRToneMappingCS11 sample
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
StructuredBuffer<float4> InputBuf : register( t0 );
Texture2D InputTex : register( t1 );
RWStructuredBuffer<float4> Result : register( u0 );
cbuffer cb0
{
float4 g_avSampleWeights[15];
int2 g_outputsize;
int2 g_inputsize;
}
#define kernelhalf 7
#define groupthreads 128
groupshared float4 temp[groupthreads];
[numthreads( groupthreads, 1, 1 )]
void main( uint3 Gid : SV_GroupID, uint GI : SV_GroupIndex )
{
int offsety = GI - kernelhalf + (groupthreads - kernelhalf * 2) * Gid.y;
offsety = clamp( offsety, 0, g_inputsize.y-1 );
int offset = Gid.x + offsety * g_inputsize.x;
temp[GI] = InputBuf[offset];
GroupMemoryBarrierWithGroupSync();
// Vertical blur
if ( GI >= kernelhalf &&
GI < (groupthreads - kernelhalf) &&
( (GI - kernelhalf + (groupthreads - kernelhalf * 2) * Gid.y) < (uint)g_outputsize.y) )
{
float4 vOut = 0;
[unroll]
for ( int i = -kernelhalf; i <= kernelhalf; ++i )
vOut += temp[GI + i] * g_avSampleWeights[i + kernelhalf];
Result[Gid.x + (GI - kernelhalf + (groupthreads - kernelhalf * 2) * Gid.y) * g_outputsize.x] = float4(vOut.rgb, 1.0f);
}
}
//[numthreads( groupthreads, 1, 1 )]
//void CSHorizFilter( uint3 Gid : SV_GroupID, uint GI : SV_GroupIndex )
//{
// int2 coord = int2( GI - kernelhalf + (groupthreads - kernelhalf * 2) * Gid.x, Gid.y );
// coord = clamp( coord, int2(0, 0), int2(g_inputsize.x-1, g_inputsize.y-1) );
// temp[GI] = InputTex.Load( int3(coord, 0) );
//
// GroupMemoryBarrierWithGroupSync();
//
// // Horizontal blur
// if ( GI >= kernelhalf &&
// GI < (groupthreads - kernelhalf) &&
// ( (Gid.x * (groupthreads - 2 * kernelhalf) + GI - kernelhalf) < g_outputsize.x) )
// {
// float4 vOut = 0;
//
// [unroll]
// for ( int i = -kernelhalf; i <= kernelhalf; ++i )
// vOut += temp[GI + i] * g_avSampleWeights[i + kernelhalf];
//
// Result[GI - kernelhalf + (groupthreads - kernelhalf * 2) * Gid.x + Gid.y * g_outputsize.x] = float4(vOut.rgb, 1.0f);
// }
//}
-27
View File
@@ -1,27 +0,0 @@
//--------------------------------------------------------------------------------------
// File: DumpToTexture.hlsl
//
// The PS for converting CS output buffer to a texture, used in CS path of
// HDRToneMappingCS11 sample
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
StructuredBuffer<float4> buffer : register( t0 );
struct QuadVS_Output
{
float4 Pos : SV_POSITION;
float2 Tex : TEXCOORD0;
};
cbuffer cbPS : register( b0 )
{
uint4 g_param;
};
float4 main( QuadVS_Output Input ) : SV_TARGET
{
// To calculate the buffer offset, it is natural to use the screen space coordinates,
// Input.Pos is the screen space coordinates of the pixel being written
return buffer[ (Input.Pos.x - 0.5) + (Input.Pos.y - 0.5) * g_param.x ];
}
-41
View File
@@ -1,41 +0,0 @@
struct VS_Output
{
float4 Pos : SV_POSITION;
float2 Tex : TEXCOORD0;
};
Texture2D<float4> tex : register( t0 );
StructuredBuffer<float> lum : register( t1 );
Texture2D<float4> bloom : register( t2 );
SamplerState PointSampler : register (s0);
SamplerState LinearSampler : register (s1);
static const float MIDDLE_GRAY = 0.72f;
static const float LUM_WHITE = 1.5f;
cbuffer cbPS : register( b0 )
{
float4 g_param;
};
float4 main(VS_Output input) : SV_TARGET
{
float4 vColor = tex.Sample(PointSampler, input.Tex);
float fLum = min(max(lum[0]*g_param.x, 0.2), 10); //limit amplification...
float3 vBloom = bloom.Sample(LinearSampler, input.Tex).rgb;
// Tone mapping
vColor.rgb *= MIDDLE_GRAY / (fLum + 0.001f);
vColor.rgb *= (1.0f + vColor.rgb/LUM_WHITE);
vColor.rgb /= (1.0f + vColor.rgb);
vColor.rgb += 0.6f * vBloom;
vColor.a = 1.0f;
return vColor;
}
-14
View File
@@ -1,14 +0,0 @@
struct VS_Output
{
float4 Pos : SV_POSITION;
float2 Tex : TEXCOORD0;
};
VS_Output main( float4 pos : POSITION )
{
VS_Output output;
output.Pos = pos;
output.Tex.x = (pos.x*0.5)+0.5;
output.Tex.y = (pos.y*-0.5)+0.5;
return output;
}
-16
View File
@@ -1,16 +0,0 @@
StructuredBuffer<float> Target : register( t0 );
RWStructuredBuffer<float> Current : register( u0 );
cbuffer cb0
{
float BlendFactor;
float3 pad;
}
[numthreads(1, 1, 1)]
void main( uint3 DTid : SV_DispatchThreadID )
{
float t = max(Target[0],0);
float c = max(Current[0],0);
Current[0] = c + ((t - c) * BlendFactor);
}
-54
View File
@@ -1,54 +0,0 @@
StructuredBuffer<float> Input : register( t0 );
RWStructuredBuffer<float> Result : register( u0 );
cbuffer cbCS : register( b0 )
{
uint4 g_param; // g_param.x is the actual elements contained in Input
// g_param.y is the x dimension of the Dispatch call
};
#define groupthreads 128
groupshared float accum[groupthreads];
[numthreads(groupthreads,1,1)]
void main( uint3 Gid : SV_GroupID, uint3 DTid : SV_DispatchThreadID, uint3 GTid : SV_GroupThreadID, uint GI : SV_GroupIndex )
{
if ( DTid.x < g_param.x )
accum[GI] = Input[DTid.x];
else
accum[GI] = 0;
// Parallel reduction algorithm follows
GroupMemoryBarrierWithGroupSync();
if ( GI < 64 )
accum[GI] += accum[64+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 32 )
accum[GI] += accum[32+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 16 )
accum[GI] += accum[16+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 8 )
accum[GI] += accum[8+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 4 )
accum[GI] += accum[4+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 2 )
accum[GI] += accum[2+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 1 )
accum[GI] += accum[1+GI];
if ( GI == 0 )
{
Result[Gid.x] = accum[0];
}
}
-63
View File
@@ -1,63 +0,0 @@
Texture2D Input : register( t0 );
RWStructuredBuffer<float> Result : register( u0 );
cbuffer cbCS : register( b0 )
{
uint4 g_param; // (g_param.x, g_param.y) is the x and y dimensions of the Dispatch call
// (g_param.z, g_param.w) is the size of the above Input Texture2D
};
//#define CS_FULL_PIXEL_REDUCTION // Defining this or not must be the same as in PostProcessor....
#define blocksize 8
#define blocksizeY 8
#define groupthreads (blocksize*blocksizeY)
groupshared float accum[groupthreads];
static const float4 LUM_VECTOR = float4(.299, .587, .114, 0);
[numthreads(blocksize,blocksizeY,1)]
void main( uint3 Gid : SV_GroupID, uint3 DTid : SV_DispatchThreadID, uint3 GTid : SV_GroupThreadID, uint GI : SV_GroupIndex )
{
float4 s =
#ifdef CS_FULL_PIXEL_REDUCTION
Input.Load( uint3(DTid.xy , 0) )+
Input.Load( uint3(DTid.xy + uint2(blocksize*g_param.x, 0), 0) ) +
Input.Load( uint3(DTid.xy + uint2(0, blocksizeY*g_param.y), 0) ) +
Input.Load( uint3(DTid.xy + uint2(blocksize*g_param.x, blocksizeY*g_param.y), 0) );
#else
Input.Load( uint3((float)DTid.x/81.0f*g_param.z, (float)DTid.y/81.0f*g_param.w, 0) );
#endif
accum[GI] = dot( s, LUM_VECTOR );
// Parallel reduction algorithm follows
GroupMemoryBarrierWithGroupSync();
if ( GI < 32 )
accum[GI] += accum[32+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 16 )
accum[GI] += accum[16+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 8 )
accum[GI] += accum[8+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 4 )
accum[GI] += accum[4+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 2 )
accum[GI] += accum[2+GI];
GroupMemoryBarrierWithGroupSync();
if ( GI < 1 )
accum[GI] += accum[1+GI];
if ( GI == 0 )
{
Result[Gid.y*g_param.x+Gid.x] = accum[0];
}
}
-17
View File
@@ -1,17 +0,0 @@
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Colour : COLOR0;
float3 Normal : NORMAL;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
float4 c = input.Colour;
return float4(c.rgb, 1.0f);
}
-46
View File
@@ -1,46 +0,0 @@
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4 CameraPos;
float4 LightColour;
}
StructuredBuffer<float4> Nodes : register(t0);
struct VS_INPUT
{
float4 Position : POSITION;
float4 Normal : NORMAL;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Colour : COLOR0;
float3 Normal : NORMAL;
};
VS_OUTPUT main(VS_INPUT input, uint iid : SV_InstanceID)
{
VS_OUTPUT output;
float4 n = Nodes[iid];
float3 npos = n.xyz;
float3 ipos = input.Position.xyz * 0.25f;
float3 opos = ipos + npos - CameraPos.xyz;
float4 cpos = mul(float4(opos, 1), ViewProj);
cpos.z -= 0.01; //bias paths depth slightly to bring it in front of normal geometry...
output.Position = cpos;
output.Colour = ((float4)1) * LightColour.a; //apply intensity
output.Normal = input.Normal.xyz;
return output;
}
-46
View File
@@ -1,46 +0,0 @@
#include "Common.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4 CameraPos;
float4 LightColour;
}
struct PathShaderVertex
{
float3 Position;
uint Colour;
};
StructuredBuffer<PathShaderVertex> Vertices : register(t0);
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Colour : COLOR0;
};
VS_OUTPUT main(uint id : SV_VertexID)
{
VS_OUTPUT output;
float3 pos;
float4 col;
PathShaderVertex vert = Vertices[id];
pos = vert.Position;
col = Unpack4x8UNF(vert.Colour).abgr;
float3 opos = pos - CameraPos.xyz;
float4 cpos = mul(float4(opos, 1), ViewProj);
cpos.z -= 0.01; //bias paths depth slightly to bring it in front of normal geometry...
output.Position = cpos;
output.Colour.rgb = col.rgb * LightColour.a; //apply intensity
output.Colour.a = col.a;
return output;
}
-16
View File
@@ -1,16 +0,0 @@
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Colour : COLOR0;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
float4 c = input.Colour;
return float4(c.rgb, saturate(c.a));
}
-38
View File
@@ -1,38 +0,0 @@
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4 CameraPos;
float4 LightColour;
}
struct VS_INPUT
{
float4 Position : POSITION;
float4 Colour : COLOR0;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Colour : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 pos = input.Position.xyz;
float4 col = input.Colour;
float3 opos = pos - CameraPos.xyz;
float4 cpos = mul(float4(opos, 1), ViewProj);
cpos.z -= 0.01; //bias paths depth slightly to bring it in front of normal geometry...
output.Position = cpos;
output.Colour.rgb = col.rgb * LightColour.a; //apply intensity
output.Colour.a = col.a;
return output;
}
-11
View File
@@ -1,11 +0,0 @@
float3 mulvq(float3 v, float4 q)
{
float3 u = q.xyz;
float s = q.w;
return (dot(u, v)*u*2.0f) + (s*s - dot(u, u)) * v + (cross(u, v)*s*2.0f);
}
-32
View File
@@ -1,32 +0,0 @@
Texture2D<float4> Colourmap : register(t0);
SamplerState TextureSS : register(s0);
cbuffer PSGeomVars : register(b0)
{
uint EnableTexture;
uint EnableTint;
uint IsDecal;
uint Pad3;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
//float3 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
//float4 Colour : COLOR0;
//float4 Tint : COLOR1;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
if (EnableTexture == 1)
{
float4 c = Colourmap.Sample(TextureSS, input.Texcoord);
if ((IsDecal == 0) && (c.a <= 0.33)) discard;
if ((IsDecal == 1) && (c.a <= 0.0)) discard;
}
return float4(1.0f, 1.0f, 1.0f, 1.0f);
}
-93
View File
@@ -1,93 +0,0 @@
#include "Common.hlsli"
#include "Quaternion.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4 WindVector;
}
cbuffer VSEntityVars : register(b1)
{
float4 CamRel;
float4 Orientation;
uint HasSkeleton;
uint HasTransforms;
uint TintPaletteIndex;
uint Pad1;
float3 Scale;
uint Pad2;
}
cbuffer VSModelVars : register(b2)
{
float4x4 Transform;
}
cbuffer GeomVars : register(b3)
{
uint EnableTexture;
uint EnableTint;
uint IsDecal;
uint EnableWind;
float4 WindOverrideParams;
}
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
float4 Colour : COLOR0;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
//float3 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
//float4 Colour : COLOR0;
//float4 Tint : COLOR1;
};
//Texture2D<float4> TintPalette : register(t0);
//SamplerState TextureSS : register(s0);
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 ipos = input.Position.xyz;
float3 tpos = (HasTransforms == 1) ? mul(float4(ipos, 1), Transform).xyz : ipos;
float3 spos = tpos * Scale;
float3 bpos = mulvq(spos, Orientation);
if (EnableWind)
{
bpos = GeomWindMotion(bpos, input.Colour.xyz, WindVector, WindOverrideParams);
}
float3 opos = CamRel.xyz + bpos;
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
//if (IsDecal == 1)
//{
// //cpos.z -= 0.003; //todo: correct decal z-bias
//}
//cpos.z = saturate(cpos.z); //might need work
//cpos.z = DepthFunc(cpos.zw);
//float3 inorm = input.Normal;
//float3 tnorm = (HasTransforms == 1) ? mul(inorm, (float3x3)Transform) : inorm;
//float3 bnorm = normalize(mulvq(tnorm, Orientation));
//float4 tnt = 0;
//if (EnableTint == 1)
//{
// tnt = TintPalette.SampleLevel(TextureSS, float2(input.Colour.b, TintYVal), 0);
//}
output.Position = cpos;
//output.Normal = bnorm;
output.Texcoord = input.Texcoord;
//output.Colour = input.Colour;
//output.Tint = tnt;
return output;
}
-127
View File
@@ -1,127 +0,0 @@
#include "Common.hlsli"
#include "Quaternion.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4 WindVector;
}
cbuffer VSEntityVars : register(b1)
{
float4 CamRel;
float4 Orientation;
uint HasSkeleton;
uint HasTransforms;
uint TintPaletteIndex;
uint Pad1;
float3 Scale;
uint Pad2;
}
cbuffer VSModelVars : register(b2)
{
float4x4 Transform;
}
cbuffer GeomVars : register(b3)
{
uint EnableTexture;
uint EnableTint;
uint IsDecal;
uint EnableWind;
float4 WindOverrideParams;
}
cbuffer BoneMatrices : register(b7) //rage_bonemtx
{
row_major float3x4 gBoneMtx[255]; // Offset: 0 Size: 12240
}
struct VS_INPUT
{
float4 Position : POSITION;
float4 BlendWeights : BLENDWEIGHTS;
float4 BlendIndices : BLENDINDICES;
float3 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
float4 Colour : COLOR0;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
//float3 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
//float4 Colour : COLOR0;
//float4 Tint : COLOR1;
};
//Texture2D<float4> TintPalette : register(t0);
//SamplerState TextureSS : register(s0);
float3x4 BoneMatrix(float4 weights, float4 indices)
{
uint4 binds = (uint4) (indices * 255.001953);
float3x4 b0 = gBoneMtx[binds.x];
float3x4 b1 = gBoneMtx[binds.y];
float3x4 b2 = gBoneMtx[binds.z];
float3x4 b3 = gBoneMtx[binds.w];
float4 t0 = b0[0] * weights.x + b1[0] * weights.y + b2[0] * weights.z + b3[0] * weights.w;
float4 t1 = b0[1] * weights.x + b1[1] * weights.y + b2[1] * weights.z + b3[1] * weights.w;
float4 t2 = b0[2] * weights.x + b1[2] * weights.y + b2[2] * weights.z + b3[2] * weights.w;
return float3x4(t0, t1, t2);
}
float3 BoneTransform(float3 ipos, float3x4 m)
{
float3 r;
float4 p = float4(ipos, 1);
r.x = dot(m[0], p);
r.y = dot(m[1], p);
r.z = dot(m[2], p);
return r;
}
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3x4 bone = BoneMatrix(input.BlendWeights, input.BlendIndices);
float3 ipos = BoneTransform(input.Position.xyz, bone);
float3 tpos = (HasTransforms == 1) ? mul(float4(ipos, 1), Transform).xyz : ipos;
float3 spos = tpos * Scale;
float3 bpos = mulvq(spos, Orientation);
if (EnableWind)
{
bpos = GeomWindMotion(bpos, input.Colour.xyz, WindVector, WindOverrideParams);
}
float3 opos = CamRel.xyz + bpos;
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
//if (IsDecal == 1)
//{
// //cpos.z -= 0.003; //todo: correct decal z-bias
//}
//cpos.z = saturate(cpos.z); //might need work
//cpos.z = DepthFunc(cpos.zw);
//float3 inorm = input.Normal;
//float3 tnorm = (HasTransforms == 1) ? mul(inorm, (float3x3)Transform) : inorm;
//float3 bnorm = normalize(mulvq(tnorm, Orientation));
//float4 tnt = 0;
//if (EnableTint == 1)
//{
// tnt = TintPalette.SampleLevel(TextureSS, float2(input.Colour.b, TintYVal), 0);
//}
output.Position = cpos;
//output.Normal = bnorm;
output.Texcoord = input.Texcoord;
//output.Colour = input.Colour;
//output.Tint = tnt;
return output;
}
-250
View File
@@ -1,250 +0,0 @@
#include "Common.hlsli"
//Texture2DArray<float> Depthmap : register(t1);
//SamplerState DepthmapSS : register(s1);
Texture2D Depthmap : register(t1);
SamplerComparisonState DepthmapSS : register(s1);
cbuffer ShadowmapVars : register(b1)
{
float4 CamScenePos; //in shadow scene coords
float4x4 CamSceneView;
float4x4 LightView;
float4 LightDir;
float4 CascadeOffsets[16];
float4 CascadeScales[16];
float4 CascadeDepths[16]; //in scene eye space
int CascadeCount;
int CascadeVisual;
int PCFLoopStart;
int PCFLoopEnd;
float BorderPaddingMin;
float BorderPaddingMax;
float Bias;
float BlurBetweenCascades;
float CascadeCountInv;
float TexelSize;
float TexelSizeX;
float Pad20;
};
float ShadowmapSceneDepth(float3 camRelPos, out float4 lspos)
{
float4 scenePos = float4(camRelPos + CamScenePos.xyz, 1.0);
lspos = mul(scenePos, LightView);
return mul(scenePos, CamSceneView).z;
}
//--------------------------------------------------------------------------------------
// Use PCF to sample the depth map and return a percent lit value.
//--------------------------------------------------------------------------------------
void ShadowmapCalculatePCFPercentLit(in float4 vShadowTexCoord,
in float fRightTexelDepthDelta,
in float fUpTexelDepthDelta,
in float fBlurRowSize,
in float fCascade,
out float fPercentLit
)
{
fPercentLit = 0.0f;
// This loop could be unrolled, and texture immediate offsets could be used if the kernel size were fixed.
// This would be performance improvment.
for (int x = PCFLoopStart; x < PCFLoopEnd; ++x)
{
for (int y = PCFLoopStart; y < PCFLoopEnd; ++y)
{
float depthcompare = vShadowTexCoord.z;
// A very simple solution to the depth bias problems of PCF is to use an offset.
// Unfortunately, too much offset can lead to Peter-panning (shadows near the base of object disappear )
// Too little offset can lead to shadow acne ( objects that should not be in shadow are partially self shadowed ).
depthcompare -= Bias;
//depthcompare += Bias;
// Compare the transformed pixel depth to the depth read from the map.
//fPercentLit += Depthmap.SampleLevel(DepthmapSS,
fPercentLit += Depthmap.SampleCmpLevelZero(DepthmapSS,
float2(
vShadowTexCoord.x + (((float)x) * TexelSizeX),
vShadowTexCoord.y + (((float)y) * TexelSize)//,
), depthcompare);
//fCascade
//), 0).r > depthcompare ? 1.0 : 0.0;// , depthcompare);//== 1.0)?1:0;//
}
}
fPercentLit /= (float)fBlurRowSize;
}
//--------------------------------------------------------------------------------------
// Calculate amount to blend between two cascades and the band where blending will occure.
//--------------------------------------------------------------------------------------
void ShadowmapCalculateBlendAmountForMap(in float4 vShadowMapTextureCoord,
in out float fCurrentPixelsBlendBandLocation,
out float fBlendBetweenCascadesAmount)
{
// Calcaulte the blend band for the map based selection.
float2 distanceToOne = float2 (1.0f - vShadowMapTextureCoord.x, 1.0f - vShadowMapTextureCoord.y);
fCurrentPixelsBlendBandLocation = min(vShadowMapTextureCoord.x, vShadowMapTextureCoord.y);
float fCurrentPixelsBlendBandLocation2 = min(distanceToOne.x, distanceToOne.y);
fCurrentPixelsBlendBandLocation =
min(fCurrentPixelsBlendBandLocation, fCurrentPixelsBlendBandLocation2);
fBlendBetweenCascadesAmount = BlurBetweenCascades != 0.0 ?
(fCurrentPixelsBlendBandLocation / BlurBetweenCascades) : 0.0;
}
static const float4 vCascadeColorsMultiplier[8] =
{
float4 (1.5f, 0.0f, 0.0f, 1.0f),
float4 (0.0f, 1.5f, 0.0f, 1.0f),
float4 (0.0f, 0.0f, 5.5f, 1.0f),
float4 (1.5f, 0.0f, 5.5f, 1.0f),
float4 (1.5f, 1.5f, 0.0f, 1.0f),
float4 (1.0f, 1.0f, 1.0f, 1.0f),
float4 (0.0f, 1.0f, 5.5f, 1.0f),
float4 (0.5f, 3.5f, 0.75f, 1.0f)
};
void ShadowComputeCoordinatesTransform(in int iCascadeIndex, inout float4 vShadowTexCoord)
{
//transform X coord for current cascade.
vShadowTexCoord.x *= CascadeCountInv;// m_fShadowPartitionSize; // precomputed (float)iCascadeIndex / (float)CASCADE_CNT
vShadowTexCoord.x += (CascadeCountInv*(float)iCascadeIndex);// (m_fShadowPartitionSize * (float)iCascadeIndex);
}
float ShadowAmount(float4 shadowcoord, float shadowdepth)//, inout float4 colour)
{
float4 vShadowMapTextureCoord = 0.0f;
float4 vShadowMapTextureCoord_blend = 0.0f;
float4 vVisualizeCascadeColor = float4(0.0f, 0.0f, 0.0f, 1.0f);
float fPercentLit = 0.0f;
float fPercentLit_blend = 0.0f;
float fUpTextDepthWeight = 0;
float fRightTextDepthWeight = 0;
float fUpTextDepthWeight_blend = 0;
float fRightTextDepthWeight_blend = 0;
int iBlurRowSize = PCFLoopEnd - PCFLoopStart;
iBlurRowSize *= iBlurRowSize;
float fBlurRowSize = (float)iBlurRowSize;
int iCascadeFound = 0;
int iNextCascadeIndex = 1;
// The interval based selection technique compares the pixel's depth against the frustum's cascade divisions.
float fCurrentPixelDepth = shadowdepth;
// This for loop is not necessary when the frustum is uniformaly divided and interval based selection is used.
// In this case fCurrentPixelDepth could be used as an array lookup into the correct frustum.
int iCurrentCascadeIndex = 0;
float4 vShadowMapTextureCoordViewSpace = shadowcoord;
if (CascadeCount == 1)
{
vShadowMapTextureCoord = vShadowMapTextureCoordViewSpace * CascadeScales[0];
vShadowMapTextureCoord += CascadeOffsets[0];
}
if (CascadeCount > 1) {
for (int iCascadeIndex = 0; iCascadeIndex < CascadeCount && iCascadeFound == 0; ++iCascadeIndex)
{
vShadowMapTextureCoord = vShadowMapTextureCoordViewSpace * CascadeScales[iCascadeIndex];
vShadowMapTextureCoord += CascadeOffsets[iCascadeIndex];
if (min(vShadowMapTextureCoord.x, vShadowMapTextureCoord.y) > BorderPaddingMin
&& max(vShadowMapTextureCoord.x, vShadowMapTextureCoord.y) < BorderPaddingMax)
{
iCurrentCascadeIndex = iCascadeIndex;
iCascadeFound = 1;
}
}
}
if (iCascadeFound == 0 || vShadowMapTextureCoord.z>=1)
{
//colour = float4(0.1, 0.3, 1.0, 0.5);
return 1.0; //out of range!
}
else
{
ShadowComputeCoordinatesTransform(iCurrentCascadeIndex, vShadowMapTextureCoord);
vVisualizeCascadeColor = vCascadeColorsMultiplier[iCurrentCascadeIndex];
//colour = vVisualizeCascadeColor;
// Repeat texcoord calculations for the next cascade.
// The next cascade index is used for blurring between maps.
iNextCascadeIndex = min(CascadeCount - 1, iCurrentCascadeIndex + 1);
float fBlendBetweenCascadesAmount = 1.0f;
float fCurrentPixelsBlendBandLocation = 1.0f;
ShadowmapCalculateBlendAmountForMap(vShadowMapTextureCoord, fCurrentPixelsBlendBandLocation, fBlendBetweenCascadesAmount);
ShadowmapCalculatePCFPercentLit(vShadowMapTextureCoord, fRightTextDepthWeight, fUpTextDepthWeight, fBlurRowSize, (float)iCurrentCascadeIndex, fPercentLit);
if (CascadeCount > 1)
{
if (fCurrentPixelsBlendBandLocation < BlurBetweenCascades)
{ // the current pixel is within the blend band.
// Repeat texcoord calculations for the next cascade.
// The next cascade index is used for blurring between maps.
vShadowMapTextureCoord_blend = vShadowMapTextureCoordViewSpace * CascadeScales[iNextCascadeIndex];
vShadowMapTextureCoord_blend += CascadeOffsets[iNextCascadeIndex];
ShadowComputeCoordinatesTransform(iNextCascadeIndex, vShadowMapTextureCoord_blend);
// We repeat the calcuation for the next cascade layer, when blending between maps.
if (fCurrentPixelsBlendBandLocation < BlurBetweenCascades)
{
// the current pixel is within the blend band.
ShadowmapCalculatePCFPercentLit(vShadowMapTextureCoord_blend, fRightTextDepthWeight_blend, fUpTextDepthWeight_blend, fBlurRowSize, (float)iNextCascadeIndex, fPercentLit_blend);
fPercentLit = lerp(fPercentLit_blend, fPercentLit, fBlendBetweenCascadesAmount);
// Blend the two calculated shadows by the blend amount.
}
}
}
return fPercentLit;
}
}
float3 FullLighting(float3 diff, float3 spec, float3 norm, float4 vc0, uniform ShaderGlobalLightParams globalLights, uint enableShadows, float shadowdepth, float4 shadowcoord)
{
float lf = saturate(dot(norm, globalLights.LightDir.xyz));
float shadowlit = 1.0;
if (enableShadows == 1)
{
//float shadowdepth = input.Shadows.x;// *0.000001;
if (abs(shadowdepth) < 2000)//2km
{
//float4 shadowcoord = input.LightShadow;
//float4 shadowcolour = (float4)1;
shadowlit = ShadowAmount(shadowcoord, shadowdepth);// , shadowcolour);
}
}
lf *= shadowlit;
float3 speclit = spec*shadowlit;
return GlobalLighting(diff, norm, vc0, lf, globalLights) + speclit;
}
-24
View File
@@ -1,24 +0,0 @@
cbuffer PSMoonVars : register(b0)
{
float4 Colour;
}
Texture2D<float4> MoonSampler : register(t0);
SamplerState TextureSS : register(s0);
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Texcoord : TEXCOORD0;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
float2 texc = input.Texcoord;
float4 m = MoonSampler.Sample(TextureSS, texc);
return float4(Colour.rgb*m.rgb, m.a);
}
-36
View File
@@ -1,36 +0,0 @@
#include "Common.hlsli"
cbuffer VSMoonVars : register(b0)
{
float4x4 ViewProj;
float4x4 ViewInv;
float4 CamRel;
float2 Size;
float2 Offset;
}
struct VS_INPUT
{
float4 Position : POSITION;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Texcoord : TEXCOORD0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 ipos = input.Position.xyz * float3(Size, 1);
float3 bpos = mul(ipos, (float3x3)ViewInv);
float3 opos = CamRel.xyz + bpos;
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
cpos.z = DepthFunc(cpos.zw);
output.Position = cpos;
output.Texcoord = input.Position.xy*0.5+0.5;
return output;
}
-11
View File
@@ -1,11 +0,0 @@
cbuffer PSSunVars : register(b0)
{
float4 Colour;
}
float4 main() : SV_TARGET
{
return Colour;
}
-36
View File
@@ -1,36 +0,0 @@
#include "Common.hlsli"
cbuffer VSSunVars : register(b0)
{
float4x4 ViewProj;
float4x4 ViewInv;
float4 CamRel;
float2 Size;
float2 Offset;
}
struct VS_INPUT
{
float4 Position : POSITION;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Texcoord : TEXCOORD0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 ipos = input.Position.xyz * float3(Size, 1);
float3 bpos = mul(ipos, (float3x3)ViewInv);
float3 opos = CamRel.xyz + bpos;
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
cpos.z = DepthFunc(cpos.zw);
output.Position = cpos;
output.Texcoord = input.Position.xy;
return output;
}
-45
View File
@@ -1,45 +0,0 @@
cbuffer SkySystemLocals : register(b0)
{
float4 azimuthEastColor; // Offset: 0 Size: 12 [unused]
float4 azimuthWestColor; // Offset: 16 Size: 12 [unused]
float3 azimuthTransitionColor; // Offset: 32 Size: 12 [unused]
float azimuthTransitionPosition; // Offset: 44 Size: 4 [unused]
float4 zenithColor; // Offset: 48 Size: 12 [unused]
float4 zenithTransitionColor; // Offset: 64 Size: 12 [unused]
float4 zenithConstants; // Offset: 80 Size: 16 [unused]
float4 skyPlaneColor; // Offset: 96 Size: 16 [unused]
float4 skyPlaneParams; // Offset: 112 Size: 16 [unused]
float hdrIntensity; // Offset: 128 Size: 4 [unused]
float3 sunColor; // Offset: 132 Size: 12
float4 sunColorHdr; // Offset: 144 Size: 12
float4 sunDiscColorHdr; // Offset: 160 Size: 12 [unused]
float4 sunConstants; // Offset: 176 Size: 16
float4 sunDirection; // Offset: 192 Size: 12
float4 sunPosition; // Offset: 208 Size: 12 [unused]
float4 cloudBaseMinusMidColour; // Offset: 224 Size: 12
float4 cloudMidColour; // Offset: 240 Size: 12
float4 cloudShadowMinusBaseColourTimesShadowStrength;// Offset: 256 Size: 12
float4 cloudDetailConstants; // Offset: 272 Size: 16
float4 cloudConstants1; // Offset: 288 Size: 16
float4 cloudConstants2; // Offset: 304 Size: 16
float4 smallCloudConstants; // Offset: 320 Size: 16
float4 smallCloudColorHdr; // Offset: 336 Size: 12
float4 effectsConstants; // Offset: 352 Size: 16
float horizonLevel; // Offset: 368 Size: 4 [unused]
float3 speedConstants; // Offset: 372 Size: 12 [unused]
float starfieldIntensity; // Offset: 384 Size: 4
float3 moonDirection; // Offset: 388 Size: 12
float3 moonPosition; // Offset: 400 Size: 12 [unused]
float moonIntensity; // Offset: 412 Size: 4 [unused]
float4 lunarCycle; // Offset: 416 Size: 12
float3 moonColor; // Offset: 432 Size: 12
float noiseFrequency; // Offset: 444 Size: 4 [unused]
float noiseScale; // Offset: 448 Size: 4 [unused]
float noiseThreshold; // Offset: 452 Size: 4 [unused]
float noiseSoftness; // Offset: 456 Size: 4 [unused]
float noiseDensityOffset; // Offset: 460 Size: 4 [unused]
float4 noisePhase; // Offset: 464 Size: 8 [unused]
};
-342
View File
@@ -1,342 +0,0 @@
#include "Skydome.hlsli"
Texture2D<float4> Starmap : register(t0);
SamplerState TextureSS : register(s0);
cbuffer PSSceneVars : register(b1)
{
float4 LightDirection;
uint EnableHDR;
uint Pad0;
uint Pad1;
uint Pad2;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION; // 0 xyzw 0 POS float xyzw
float4 o1 : TEXCOORD0; // 0 xyzw 1 NONE float xyzw
float4 o2 : TEXCOORD1; // 1 xyzw 2 NONE float xyzw
float4 o3 : TEXCOORD2; // 2 xyzw 3 NONE float xyzw
float4 o4 : TEXCOORD3; // 3 xyzw 4 NONE float xyzw
float4 o5 : TEXCOORD4; // 4 xyzw 5 NONE float xyzw
float2 o6 : TEXCOORD5; // 5 xy 6 NONE float xy
float4 o7 : TEXCOORD6; // 6 xyzw 7 NONE float xyzw
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
//return float4(1,0,0,1);
float4 sf = Starmap.Sample(TextureSS, input.o6);
sf.rgb = saturate(sf.rgb*2.0 - 0.1);
float3 skybase = input.o3.rgb;
if (EnableHDR == 0)
{
sf.rgb *= max(starfieldIntensity, 1.25);
if (hdrIntensity != 0.0)
{
sf.rgb *= saturate(1.0f / (hdrIntensity*25.0f));//fake hiding stars when no HDR
}
}
else
{
sf.rgb *= starfieldIntensity;
}
//float4 zen = zenithColor * hdrIntensity;
//sf.rgb += zen.rgb;
//sf.rgb += input.o3.rgb * hdrIntensity;
float4 o2 = input.o2;
float4 r0, r1, r2, r3, r4;
float poslen = length(o2); //4d length...
r2.xyz = o2.xyz / poslen; //normalized
r4.x = dot(r2.xyz, -sunDirection.xyz); //dp3 r4.x, r2.xyzx, -sunDirection.xyzx
///return float4(r4.xxx, 1);
//r4.y = dot(r2.xyz, -moonDirection.xyz); //dp3 r4.y, r2.xyzx, moonDirection.xyzx;//.yzwy
r0.z = r4.x*-sunConstants.x +sunConstants.y; //mad r0.z, -sunConstants.x, r4.x, sunConstants.y //mie phase, scatter
r0.z = log(abs(r0.z)); //log r0.z, |r0.z|
r0.z = r0.z * 1.5; //mul r0.z, r0.z, l(1.500000)
r0.z = exp(r0.z); //exp r0.z, r0.z
r0.w = r4.x*r4.x + 1.0; //mad r0.w, r4.x, r4.x, l(1.000000)
r4.x = saturate(-r4.x); //mov_sat r4.x, -r4.x
//r2.xy = 1.0 - r4.xy; //add r2.xy, -r4.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
r0.z = r0.w / r0.z; //div r0.z, r0.w, r0.z
r0.w = r0.z*sunConstants.z; //mul r0.w, r0.z, sunConstants.z //mie range?
r0.z = saturate(1.0 - r0.w); //mad_sat r0.z, -r0.z, sunConstants.z, l(1.000000)
r0.w = saturate(r0.w); //mov_sat r0.w, r0.w
r4.xyz = r0.w*sunColorHdr.xyz; //mul r4.xyz, r0.wwww, sunColorHdr.xyzx
r4.xyz = r4.xyz*sunConstants.w; //mul r4.xyz, r4.xyzx, sunConstants.wwww //scatter intensity?
r4.xyz = skybase*r0.z + r4.xyz; //mad r4.xyz, v3.xyzx, r0.zzzz, r4.xyzx
sf.rgb += r4.xyz;
if (EnableHDR == 0)
{
sf = saturate(sf);
}
else
{
sf.a = saturate(sf.a);
}
return sf;
//float f = frac(tc.x);
//return (f < 0.5) ? float4(1, 0, 1, 1) : sf;
}
/*
sky normal all PS:
ps_4_0
dcl_constantbuffer CB2[14], immediateIndexed
dcl_constantbuffer CB12[28], immediateIndexed
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, mode_default
dcl_resource_texture2d (float,float,float,float) t3 perlinSampler
dcl_resource_texture2d (float,float,float,float) t4 highDetailSampler
dcl_resource_texture2d (float,float,float,float) t5 starFieldSampler
dcl_resource_texture2d (float,float,float,float) t6 ditherSampler
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.xyzw
dcl_input_ps linear v6.xy
dcl_input_ps linear v7.xyzw
dcl_output o0.xyzw
dcl_temps 6
sample r0.xyzw, v4.xyxx, highDetailSampler.xyzw, s4
add r0.x, r0.x, l(-0.500000)
mul r0.x, r0.x, cloudDetailConstants.x
sample r1.xyzw, v5.zwzz, highDetailSampler.xyzw, s4
add r0.z, r1.x, l(-0.500000)
mul r0.y, r0.z, smallCloudConstants.y
sample r1.xyzw, v4.zwzz, highDetailSampler.xyzw, s4
add r1.x, r1.x, l(-0.500000)
mul r0.z, r1.x, cloudConstants2.z
sample r2.xyzw, v1.zwzz, perlinSampler.xyzw, s3
mad r0.z, r0.z, cloudDetailConstants.z, r2.x
mul r0.z, r0.z, cloudConstants1.x
sample r3.xyzw, v1.xyxx, perlinSampler.xyzw, s3
mul r0.z, r0.z, r3.x
mad_sat r0.w, -r0.z, l(2.000000), l(1.000000)
mul r0.xy, r0.wwww, r0.xyxx
mul r0.xy, r3.zzzz, r0.xyxx
mov r4.x, cloudDetailConstants.z
mov r4.y, smallCloudConstants.y
add r1.y, -r3.z, l(1.000000)
mad r0.xy, r1.xyxx, r4.xyxx, r0.xyxx
add r0.w, r0.x, r2.y
mad r1.xyz, r0.wwww, cloudShadowMinusBaseColourTimesShadowStrength.xyzx, cloudBaseMinusMidColour.xyzx
mad r1.xyz, r0.zzzz, r1.xyzx, cloudMidColour.xyzx
mov r3.y, l(0)
add r0.xy, r0.xyxx, r3.xyxx
mul r2.x, r0.x, cloudConstants1.y
mul r2.y, r0.y, smallCloudConstants.z
add_sat r0.x, -r0.x, l(1.000000)
mov r3.y, -smallCloudConstants.w
mov r3.xz, -cloudConstants1.zzwz
add_sat r0.yz, r2.xxyx, r3.xxyx
mul r0.yz, r0.yyzy, r0.yyzy
dp4 r0.w, v2.xyzw, v2.xyzw
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, v2.xyzx
mad_sat r0.w, r2.z, l(5.000000), r3.z
mul r3.xy, r0.wwww, r0.yzyy
mad r0.y, -r0.y, r0.w, l(1.000000)
mul r0.y, r0.y, r3.y
mad r0.y, r0.y, l(0.300000), r3.x
dp3 r4.x, r2.xyzx, -sunDirection.xyzx
dp3 r4.y, r2.xyzx, moonDirection.xyzx;//.yzwy
mad r0.z, -sunConstants.x, r4.x, sunConstants.y
log r0.z, |r0.z|
mul r0.z, r0.z, l(1.500000)
exp r0.z, r0.z
mad r0.w, r4.x, r4.x, l(1.000000)
mov_sat r4.x, -r4.x
add r2.xy, -r4.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
div r0.z, r0.w, r0.z
mul r0.w, r0.z, sunConstants.z
mad_sat r0.z, -r0.z, sunConstants.z, l(1.000000)
mov_sat r0.w, r0.w
mul r4.xyz, r0.wwww, sunColorHdr.xyzx
mul r4.xyz, r4.xyzx, sunConstants.wwww
mad r4.xyz, v3.xyzx, r0.zzzz, r4.xyzx
add r5.xyz, -r4.xyzx, smallCloudColorHdr.xyzx
mad r4.xyz, r3.yyyy, r5.xyzx, r4.xyzx
mad r1.xyz, r1.xyzx, cloudConstants2.wwww, -r4.xyzx
mad r1.xyz, r3.xxxx, r1.xyzx, r4.xyzx
add r0.z, r3.y, r3.x
add_sat o0.w, -r0.z, v2.w
div r0.zw, r2.xxxy, effectsConstants.xxxz
ge r1.w, r2.y, l(0.000545)
and r1.w, r1.w, l(0x3f800000)
mul_sat r0.zw, r0.zzzw, l(0.000000, 0.000000, 100.000000, 100.000000)
add r0.zw, -r0.zzzw, l(0.000000, 0.000000, 1.000000, 1.000000)
mul r0.zw, r0.yyyy, r0.zzzw
add r0.y, -r0.y, l(1.000000)
mul r0.xz, r0.xxxx, r0.zzwz
mul r0.xz, r0.xxzx, r0.xxzx
mul r0.xz, r0.xxzx, r0.xxzx
mad r0.w, lunarCycle.y, l(0.500000), l(0.500000)
mul r0.w, r0.w, effectsConstants.w
mul r0.z, r0.w, r0.z
mul r0.x, r0.x, effectsConstants.y
mul r2.xyz, r0.zzzz, moonColor.xyzx
mad r0.xzw, sunColor.yyzw, r0.xxxx, r2.xxyz
add r0.xzw, r0.xxzw, r1.xxyz
sample r2.xyzw, v6.xyxx, starFieldSampler.xyzw, s5
mad_sat r1.xyz, r2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-0.100000, -0.100000, -0.100000, 0.000000)
mul r1.xyz, r1.xyzx, starfieldIntensity.xxxx
mul r1.xyz, r1.wwww, r1.xyzx
mad r0.xyz, r1.xyzx, r0.yyyy, r0.xzwx
add r1.xyz, -r0.xyzx, v7.xyzx
mad r0.xyz, v7.wwww, r1.xyzx, r0.xyzx
sample r1.xyzw, v5.xyxx, ditherSampler.xyzw, s6
add r0.w, r1.x, l(-0.500000)
mad r0.xyz, r0.wwww, l(0.000100, 0.000100, 0.000100, 0.000000), r0.xyzx
mul o0.xyz, r0.xyzx, globalScalars3.zzzz
ret
// Approximately 92 instruction slots used
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer misc_globals
// {
//
// float4 globalFade; // Offset: 0 Size: 16 [unused]
// float globalHeightScale; // Offset: 16 Size: 4 [unused]
// float4 g_Rage_Tessellation_CameraPosition;// Offset: 32 Size: 16 [unused]
// float4 g_Rage_Tessellation_CameraZAxis;// Offset: 48 Size: 16 [unused]
// float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset: 64 Size: 16 [unused]
// float4 g_Rage_Tessellation_LinearScale;// Offset: 80 Size: 16 [unused]
// float4 g_Rage_Tessellation_Frustum[4];// Offset: 96 Size: 64 [unused]
// float4 g_Rage_Tessellation_Epsilons;// Offset: 160 Size: 16 [unused]
// float4 globalScalars; // Offset: 176 Size: 16 [unused]
// float4 globalScalars2; // Offset: 192 Size: 16 [unused]
// float4 globalScalars3; // Offset: 208 Size: 16
// float4 globalScreenSize; // Offset: 224 Size: 16 [unused]
// uint4 gTargetAAParams; // Offset: 240 Size: 16 [unused]
// float4 colorize; // Offset: 256 Size: 16 [unused]
// float4 gGlobalParticleShadowBias; // Offset: 272 Size: 16 [unused]
// float gGlobalParticleDofAlphaScale;// Offset: 288 Size: 4 [unused]
// float gGlobalFogIntensity; // Offset: 292 Size: 4 [unused]
// float4 gPlayerLFootPos; // Offset: 304 Size: 16 [unused]
// float4 gPlayerRFootPos; // Offset: 320 Size: 16 [unused]
//
// }
//
// cbuffer sky_system_locals
// {
//
// float3 azimuthEastColor; // Offset: 0 Size: 12 [unused]
// float3 azimuthWestColor; // Offset: 16 Size: 12 [unused]
// float3 azimuthTransitionColor; // Offset: 32 Size: 12 [unused]
// float azimuthTransitionPosition; // Offset: 44 Size: 4 [unused]
// float3 zenithColor; // Offset: 48 Size: 12 [unused]
// float3 zenithTransitionColor; // Offset: 64 Size: 12 [unused]
// float4 zenithConstants; // Offset: 80 Size: 16 [unused]
// float4 skyPlaneColor; // Offset: 96 Size: 16 [unused]
// float4 skyPlaneParams; // Offset: 112 Size: 16 [unused]
// float hdrIntensity; // Offset: 128 Size: 4 [unused]
// float3 sunColor; // Offset: 132 Size: 12
// float3 sunColorHdr; // Offset: 144 Size: 12
// float3 sunDiscColorHdr; // Offset: 160 Size: 12 [unused]
// float4 sunConstants; // Offset: 176 Size: 16
// float3 sunDirection; // Offset: 192 Size: 12
// float3 sunPosition; // Offset: 208 Size: 12 [unused]
// float3 cloudBaseMinusMidColour; // Offset: 224 Size: 12
// float3 cloudMidColour; // Offset: 240 Size: 12
// float3 cloudShadowMinusBaseColourTimesShadowStrength;// Offset: 256 Size: 12
// float4 cloudDetailConstants; // Offset: 272 Size: 16
// float4 cloudConstants1; // Offset: 288 Size: 16
// float4 cloudConstants2; // Offset: 304 Size: 16
// float4 smallCloudConstants; // Offset: 320 Size: 16
// float3 smallCloudColorHdr; // Offset: 336 Size: 12
// float4 effectsConstants; // Offset: 352 Size: 16
// float horizonLevel; // Offset: 368 Size: 4 [unused]
// float3 speedConstants; // Offset: 372 Size: 12 [unused]
// float starfieldIntensity; // Offset: 384 Size: 4
// float3 moonDirection; // Offset: 388 Size: 12
// float3 moonPosition; // Offset: 400 Size: 12 [unused]
// float moonIntensity; // Offset: 412 Size: 4 [unused]
// float3 lunarCycle; // Offset: 416 Size: 12
// float3 moonColor; // Offset: 432 Size: 12
// float noiseFrequency; // Offset: 444 Size: 4 [unused]
// float noiseScale; // Offset: 448 Size: 4 [unused]
// float noiseThreshold; // Offset: 452 Size: 4 [unused]
// float noiseSoftness; // Offset: 456 Size: 4 [unused]
// float noiseDensityOffset; // Offset: 460 Size: 4 [unused]
// float2 noisePhase; // Offset: 464 Size: 8 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// perlinSampler sampler NA NA s3 1
// highDetailSampler sampler NA NA s4 1
// starFieldSampler sampler NA NA s5 1
// ditherSampler sampler NA NA s6 1
// perlinSampler texture float4 2d t3 1
// highDetailSampler texture float4 2d t4 1
// starFieldSampler texture float4 2d t5 1
// ditherSampler texture float4 2d t6 1
// misc_globals cbuffer NA NA cb2 1
// sky_system_locals cbuffer NA NA cb12 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyzw 2 NONE float xyzw
// TEXCOORD 2 xyzw 3 NONE float xyz
// TEXCOORD 3 xyzw 4 NONE float xyzw
// TEXCOORD 4 xyzw 5 NONE float xyzw
// TEXCOORD 5 xy 6 NONE float xy
// TEXCOORD 6 xyzw 7 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
*/
-448
View File
@@ -1,448 +0,0 @@
#include "Common.hlsli"
#include "Quaternion.hlsli"
#include "Skydome.hlsli"
cbuffer VSSceneVars : register(b1)
{
float4x4 ViewProj;
float4x4 ViewInv;
}
cbuffer VSEntityVars : register(b2)
{
float4 CamRel;
float4 Orientation;
}
cbuffer VSModelVars : register(b3)
{
float4x4 Transform;
}
struct VS_INPUT
{
float4 Position : POSITION;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION; // 0 xyzw 0 POS float xyzw
float4 o1 : TEXCOORD0; // 0 xyzw 1 NONE float xyzw
float4 o2 : TEXCOORD1; // 1 xyzw 2 NONE float xyzw
float4 o3 : TEXCOORD2; // 2 xyzw 3 NONE float xyzw
float4 o4 : TEXCOORD3; // 3 xyzw 4 NONE float xyzw
float4 o5 : TEXCOORD4; // 4 xyzw 5 NONE float xyzw
float2 o6 : TEXCOORD5; // 5 xy 6 NONE float xy
float4 o7 : TEXCOORD6; // 6 xyzw 7 NONE float xyzw
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 ipos = input.Position.xyz * 10.0;
float3 bpos = mulvq(ipos, Orientation);
float3 opos = CamRel.xyz + bpos;
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
cpos.z = DepthFunc(cpos.zw);
output.Position = cpos;
float2 v1 = input.Texcoord0;
float2 v2 = input.Texcoord1;
float4 r0, r1, r2, r3, r4, r5;
r0.xy = v1 * 2.0 - 1.0;
r0.x = dot(r0.xy, r0.xy);
r0.x = 1 - r0.x;
r0.y = cloudConstants2.y * 0.1;
r1.xyz = float3(-ViewInv[3].xy, -horizonLevel); //mov r1.xy, -gViewInverse[3].xyxx
//mov r1.z, -horizonLevel
r2.xyz = opos;// float3(opos.xy, -opos.z); //(mad r2.xyz, v0.wwww, gWorld[3].xyzx, r2.xyzx)
r1.xyz = r1.xyz + r2.xyz; //add r1.xyz, r1.xyzx, r2.xyzx
r0.z = 1.0 / length(r1.xyz); // sqrt(r0.z); r0.z = dot(r1.xyz, r1.xyz); //dp3 r0.z, r1.xyzx, r1.xyzx //rsq r0.z, r0.z
r1.yw = -r1.xy*r0.z + sunDirection.xy; //mad r1.yw, -r1.xxxy, r0.zzzz, sunDirection.xxxy
r0.zw = r1.xz*r0.z; //mul r0.zw, r0.zzzz, r1.xxxz
r1.xy = r1.yw*r0.y; //mul r1.xy, r0.yyyy, r1.ywyy
output.o1.zw = -r1.xy*r0.x + v1.xy; //mad o1.zw, -r1.xxxy, r0.xxxx, v1.xxxy
output.o1.xy = v1.xy; //mov o1.xy, v1.xyxx
//r0.x = dot(r2.xyz, r2.xyz); //dp3 r0.x, r2.xyzx, r2.xyzx
r0.x = 1.0 / length(r2.xyz); // sqrt(r0.x); //rsq r0.x, r0.x
r0.x = saturate(r0.x * -r2.z + 0.05); //************ invert+FUDGE //mul_sat r0.x, r0.x, r2.z
r0.x = r0.x * 5.0; //mul r0.x, r0.x, l(5.000000)
output.o2.w = min(r0.x, 1); //min o2.w, r0.x, l(1.000000)
output.o2.xyz = r2.xyz; //mov o2.xyz, r2.xyzx
r1.xyz = r2.xyz - ViewInv[3].xyz; //add r1.xyz, r2.xyzx, -gViewInverse[3].xyzx
r0.x = abs(r0.w) - zenithConstants.x; //add r0.x, |r0.w|, -zenithConstants.x
r0.y = 1.0 - zenithConstants.x; //add r0.y, -zenithConstants.x, l(1.000000)
r0.x = saturate(r0.x / r0.y); //div_sat r0.x, r0.x, r0.y
r0.x = saturate(r0.x / zenithConstants.w); //div_sat r0.x, r0.x, zenithConstants.w
r0.y = r0.z*-0.5 + 0.5; //mad r0.y, r0.z, l(-0.500000), l(0.500000)
r0.y = sqrt(r0.y); //sqrt r0.y, r0.y
r0.z = r0.y - azimuthTransitionPosition; //add r0.z, r0.y, -azimuthTransitionPosition
r1.w = 1.0 - azimuthTransitionPosition; //add r1.w, -azimuthTransitionPosition, l(1.000000)
r0.z = r0.z / r1.w; //div r0.z, r0.z, r1.w
r2.xyz = azimuthWestColor.xyz - azimuthTransitionColor.xyz; //add r2.xyz, azimuthWestColor.xyzx, -azimuthTransitionColor.xyzx
r2.xyz = r2.xyz*r0.z + azimuthTransitionColor.xyz; //mad r2.xyz, r0.zzzz, r2.xyzx, azimuthTransitionColor.xyzx
r0.z = r0.y / azimuthTransitionPosition; //div r0.z, r0.y, azimuthTransitionPosition
r3.xyz = azimuthTransitionColor.xyz - azimuthEastColor.xyz; //add r3.xyz, -azimuthEastColor.xyzx, azimuthTransitionColor.xyzx
r3.xyz = r3.xyz*r0.z + azimuthEastColor.xyz; //mad r3.xyz, r0.zzzz, r3.xyzx, azimuthEastColor.xyzx
r0.z = r0.y < azimuthTransitionPosition; //lt r0.z, r0.y, azimuthTransitionPosition
r2.xyz = r0.z ? r3.xyz : r2.xyz; //movc r2.xyz, r0.zzzz, r3.xyzx, r2.xyzx
r3.xyz = zenithTransitionColor.xyz - r2.xyz; //add r3.xyz, -r2.xyzx, zenithTransitionColor.xyzx
r0.z = zenithConstants.z - zenithConstants.y; //add r0.z, -zenithConstants.y, zenithConstants.z
r0.y = r0.y*r0.z + zenithConstants.y; //mad r0.y, r0.y, r0.z, zenithConstants.y
r4.xyz = r3.xyz*r0.y + r2.xyz; //mad r4.xyz, r0.yyyy, r3.xyzx, r2.xyzx
r3.xyz = r3.xyz*r0.y; //mul r3.xyz, r3.xyzx, r0.yyyy
r5.xyz = zenithColor.xyz - r4.xyz; //add r5.xyz, -r4.xyzx, zenithColor.xyzx
r0.xyz = r5.xyz*r0.x + r4.xyz; //mad r0.xyz, r0.xxxx, r5.xyzx, r4.xyzx
r1.w = abs(r0.w) / zenithConstants.x; //div r1.w, |r0.w|, zenithConstants.x
r0.w = abs(r0.w) < zenithConstants.x; //lt r0.w, |r0.w|, zenithConstants.x
r2.xyz = r3.xyz*r1.w + r2.xyz; //mad r2.xyz, r1.wwww, r3.xyzx, r2.xyzx
r0.xyz = r0.w ? r2.xyz : r0.xyz; //movc r0.xyz, r0.wwww, r2.xyzx, r0.xyzx
output.o3.xyz = r0.xyz*hdrIntensity; //mul o3.xyz, r0.xyzx, hdrIntensity.xxxx
output.o3.w = 0; //mov o3.w, l(0)
r0.xy = v1.xy - 0.5; //add r0.xy, v1.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
r2.xyzw = r0.xyyx + speedConstants.zzyy; //add r2.xyzw, r0.xyyx, speedConstants.zzyy
r0.xy = r0.xy + speedConstants.x; //add r0.xy, r0.xyxx, speedConstants.xxxx
output.o5.zw = r0.xy * smallCloudConstants.x; //mul o5.zw, r0.xxxy, smallCloudConstants.xxxx
output.o4.xyzw = r2.xyzw * cloudDetailConstants.yyww; //mul o4.xyzw, r2.xyzw, cloudDetailConstants.yyww
output.o5.xy = v2.xy * 64.0; //mul o5.xy, v2.xyxx, l(64.000000, 64.000000, 0.000000, 0.000000)
output.o6.xy = v2.xy * 12.0; //mul o6.xy, v2.xyxx, l(12.000000, 12.000000, 0.000000, 0.000000)
r0.x = dot(r1.xyz, r1.xyz); //dp3 r0.x, r1.xyzx, r1.xyzx
r0.y = sqrt(r0.x); //sqrt r0.y, r0.x
r0.x = 1.0 / sqrt(r0.x); //rsq r0.x, r0.x
r0.xzw = r1.xyz*r0.x; //mul r0.xzw, r0.xxxx, r1.xxyz
//r1.x = r0.y - globalFogParams[0].x; //add r1.x, r0.y, -globalFogParams[0].x
//max r1.x, r1.x, l(0.000000)
//div r0.y, r1.x, r0.y
//mul r0.y, r0.y, r1.z
//mul r1.y, r0.y, globalFogParams[2].z
//lt r0.y, l(0.010000), |r0.y|
//mul r1.z, r1.y, l(-1.442695)
//exp r1.z, r1.z
//add r1.z, -r1.z, l(1.000000)
//div r1.y, r1.z, r1.y
//movc r0.y, r0.y, r1.y, l(1.000000)
//mul r1.y, r1.x, globalFogParams[1].w
//mul r1.x, r1.x, -globalFogParams[1].z
//mul r1.x, r1.x, l(1.442695)
//exp r1.x, r1.x
//add r1.x, -r1.x, l(1.000000)
//mul r0.y, r0.y, r1.y
//min r0.y, r0.y, l(1.000000)
//mul r0.y, r0.y, l(1.442695)
//exp r0.y, r0.y
//min r0.y, r0.y, l(1.000000)
//add r0.y, -r0.y, l(1.000000)
//mul_sat o7.w, r0.y, globalFogParams[2].y
//dp3_sat r0.y, r0.xzwx, globalFogParams[3].xyzx
//dp3_sat r0.x, r0.xzwx, globalFogParams[4].xyzx
//log r0.x, r0.x
//mul r0.x, r0.x, globalFogParams[4].w
//exp r0.x, r0.x
//log r0.y, r0.y
//mul r0.y, r0.y, globalFogParams[3].w
//exp r0.y, r0.y
//add r1.yzw, -globalFogColorE.xxyz, globalFogColorMoon.xxyz
//mad r0.xzw, r0.xxxx, r1.yyzw, globalFogColorE.xxyz
//add r1.yzw, -r0.xxzw, globalFogColor.xxyz
//mad r0.xyz, r0.yyyy, r1.yzwy, r0.xzwx
//add r0.xyz, r0.xyzx, -globalFogColorN.xyzx
//mad o7.xyz, r1.xxxx, r0.xyzx, globalFogColorN.xyzx
output.o7 = float4(input.Texcoord1, 0, 0);
return output;
}
/*
sky normal all VS:
v1 = Texcoord0
v2 = Texcoord1
mul r0.xyzw, v0.yyyy, gWorldViewProj[1].xyzw
mad r0.xyzw, v0.xxxx, gWorldViewProj[0].xyzw, r0.xyzw
mad r0.xyzw, v0.zzzz, gWorldViewProj[2].xyzw, r0.xyzw
mad o0.xyzw, v0.wwww, gWorldViewProj[3].xyzw, r0.xyzw
mad r0.xy, v1.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
dp2 r0.x, r0.xyxx, r0.xyxx
add r0.x, -r0.x, l(1.000000)
mul r0.y, cloudConstants2.y, l(0.100000)
mov r1.xy, -gViewInverse[3].xyxx
mov r1.z, -horizonLevel
mul r2.xyz, v0.yyyy, gWorld[1].xyzx
mad r2.xyz, v0.xxxx, gWorld[0].xyzx, r2.xyzx
mad r2.xyz, v0.zzzz, gWorld[2].xyzx, r2.xyzx
mad r2.xyz, v0.wwww, gWorld[3].xyzx, r2.xyzx
add r1.xyz, r1.xyzx, r2.xyzx
dp3 r0.z, r1.xyzx, r1.xyzx
rsq r0.z, r0.z
mad r1.yw, -r1.xxxy, r0.zzzz, sunDirection.xxxy
mul r0.zw, r0.zzzz, r1.xxxz
mul r1.xy, r0.yyyy, r1.ywyy
mad o1.zw, -r1.xxxy, r0.xxxx, v1.xxxy
mov o1.xy, v1.xyxx
dp3 r0.x, r2.xyzx, r2.xyzx
rsq r0.x, r0.x
mul_sat r0.x, r0.x, r2.z
mul r0.x, r0.x, l(5.000000)
min o2.w, r0.x, l(1.000000)
mov o2.xyz, r2.xyzx
add r1.xyz, r2.xyzx, -gViewInverse[3].xyzx
add r0.x, |r0.w|, -zenithConstants.x
add r0.y, -zenithConstants.x, l(1.000000)
div_sat r0.x, r0.x, r0.y
div_sat r0.x, r0.x, zenithConstants.w
mad r0.y, r0.z, l(-0.500000), l(0.500000)
sqrt r0.y, r0.y
add r0.z, r0.y, -azimuthTransitionPosition
add r1.w, -azimuthTransitionPosition, l(1.000000)
div r0.z, r0.z, r1.w
add r2.xyz, azimuthWestColor.xyzx, -azimuthTransitionColor.xyzx
mad r2.xyz, r0.zzzz, r2.xyzx, azimuthTransitionColor.xyzx
div r0.z, r0.y, azimuthTransitionPosition
add r3.xyz, -azimuthEastColor.xyzx, azimuthTransitionColor.xyzx
mad r3.xyz, r0.zzzz, r3.xyzx, azimuthEastColor.xyzx
lt r0.z, r0.y, azimuthTransitionPosition
movc r2.xyz, r0.zzzz, r3.xyzx, r2.xyzx
add r3.xyz, -r2.xyzx, zenithTransitionColor.xyzx
add r0.z, -zenithConstants.y, zenithConstants.z
mad r0.y, r0.y, r0.z, zenithConstants.y
mad r4.xyz, r0.yyyy, r3.xyzx, r2.xyzx
mul r3.xyz, r3.xyzx, r0.yyyy
add r5.xyz, -r4.xyzx, zenithColor.xyzx
mad r0.xyz, r0.xxxx, r5.xyzx, r4.xyzx
div r1.w, |r0.w|, zenithConstants.x
lt r0.w, |r0.w|, zenithConstants.x
mad r2.xyz, r1.wwww, r3.xyzx, r2.xyzx
movc r0.xyz, r0.wwww, r2.xyzx, r0.xyzx
mul o3.xyz, r0.xyzx, hdrIntensity.xxxx
mov o3.w, l(0)
add r0.xy, v1.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
add r2.xyzw, r0.xyyx, speedConstants.zzyy
add r0.xy, r0.xyxx, speedConstants.xxxx
mul o5.zw, r0.xxxy, smallCloudConstants.xxxx
mul o4.xyzw, r2.xyzw, cloudDetailConstants.yyww
mul o5.xy, v2.xyxx, l(64.000000, 64.000000, 0.000000, 0.000000)
mul o6.xy, v2.xyxx, l(12.000000, 12.000000, 0.000000, 0.000000)
dp3 r0.x, r1.xyzx, r1.xyzx
sqrt r0.y, r0.x
rsq r0.x, r0.x
mul r0.xzw, r0.xxxx, r1.xxyz
add r1.x, r0.y, -globalFogParams[0].x
max r1.x, r1.x, l(0.000000)
div r0.y, r1.x, r0.y
mul r0.y, r0.y, r1.z
mul r1.y, r0.y, globalFogParams[2].z
lt r0.y, l(0.010000), |r0.y|
mul r1.z, r1.y, l(-1.442695)
exp r1.z, r1.z
add r1.z, -r1.z, l(1.000000)
div r1.y, r1.z, r1.y
movc r0.y, r0.y, r1.y, l(1.000000)
mul r1.y, r1.x, globalFogParams[1].w
mul r1.x, r1.x, -globalFogParams[1].z
mul r1.x, r1.x, l(1.442695)
exp r1.x, r1.x
add r1.x, -r1.x, l(1.000000)
mul r0.y, r0.y, r1.y
min r0.y, r0.y, l(1.000000)
mul r0.y, r0.y, l(1.442695)
exp r0.y, r0.y
min r0.y, r0.y, l(1.000000)
add r0.y, -r0.y, l(1.000000)
mul_sat o7.w, r0.y, globalFogParams[2].y
dp3_sat r0.y, r0.xzwx, globalFogParams[3].xyzx
dp3_sat r0.x, r0.xzwx, globalFogParams[4].xyzx
log r0.x, r0.x
mul r0.x, r0.x, globalFogParams[4].w
exp r0.x, r0.x
log r0.y, r0.y
mul r0.y, r0.y, globalFogParams[3].w
exp r0.y, r0.y
add r1.yzw, -globalFogColorE.xxyz, globalFogColorMoon.xxyz
mad r0.xzw, r0.xxxx, r1.yyzw, globalFogColorE.xxyz
add r1.yzw, -r0.xxzw, globalFogColor.xxyz
mad r0.xyz, r0.yyyy, r1.yzwy, r0.xzwx
add r0.xyz, r0.xyzx, -globalFogColorN.xyzx
mad o7.xyz, r1.xxxx, r0.xyzx, globalFogColorN.xyzx
ret
// Approximately 107 instruction slots used
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer rage_matrices
// {
//
// row_major float4x4 gWorld; // Offset: 0 Size: 64
// row_major float4x4 gWorldView; // Offset: 64 Size: 64 [unused]
// row_major float4x4 gWorldViewProj; // Offset: 128 Size: 64
// row_major float4x4 gViewInverse; // Offset: 192 Size: 64
//
// }
//
// cbuffer lighting_globals
// {
//
// float4 gDirectionalLight; // Offset: 0 Size: 16 [unused]
// float4 gDirectionalColour; // Offset: 16 Size: 16 [unused]
// int gNumForwardLights; // Offset: 32 Size: 4 [unused]
// float4 gLightPositionAndInvDistSqr[8];// Offset: 48 Size: 128 [unused]
// float4 gLightDirectionAndFalloffExponent[8];// Offset: 176 Size: 128 [unused]
// float4 gLightColourAndCapsuleExtent[8];// Offset: 304 Size: 128 [unused]
// float gLightConeScale[8]; // Offset: 432 Size: 116 [unused]
// float gLightConeOffset[8]; // Offset: 560 Size: 116 [unused]
// float4 gLightNaturalAmbient0; // Offset: 688 Size: 16 [unused]
// float4 gLightNaturalAmbient1; // Offset: 704 Size: 16 [unused]
// float4 gLightArtificialIntAmbient0;// Offset: 720 Size: 16 [unused]
// float4 gLightArtificialIntAmbient1;// Offset: 736 Size: 16 [unused]
// float4 gLightArtificialExtAmbient0;// Offset: 752 Size: 16 [unused]
// float4 gLightArtificialExtAmbient1;// Offset: 768 Size: 16 [unused]
// float4 gDirectionalAmbientColour; // Offset: 784 Size: 16 [unused]
// float4 globalFogParams[5]; // Offset: 800 Size: 80
// float4 globalFogColor; // Offset: 880 Size: 16
// float4 globalFogColorE; // Offset: 896 Size: 16
// float4 globalFogColorN; // Offset: 912 Size: 16
// float4 globalFogColorMoon; // Offset: 928 Size: 16
// float4 gReflectionTweaks; // Offset: 944 Size: 16 [unused]
//
// }
//
// cbuffer sky_system_locals
// {
//
// float3 azimuthEastColor; // Offset: 0 Size: 12
// float3 azimuthWestColor; // Offset: 16 Size: 12
// float3 azimuthTransitionColor; // Offset: 32 Size: 12
// float azimuthTransitionPosition; // Offset: 44 Size: 4
// float3 zenithColor; // Offset: 48 Size: 12
// float3 zenithTransitionColor; // Offset: 64 Size: 12
// float4 zenithConstants; // Offset: 80 Size: 16
// float4 skyPlaneColor; // Offset: 96 Size: 16 [unused]
// float4 skyPlaneParams; // Offset: 112 Size: 16 [unused]
// float hdrIntensity; // Offset: 128 Size: 4
// float3 sunColor; // Offset: 132 Size: 12 [unused]
// float3 sunColorHdr; // Offset: 144 Size: 12 [unused]
// float3 sunDiscColorHdr; // Offset: 160 Size: 12 [unused]
// float4 sunConstants; // Offset: 176 Size: 16 [unused]
// float3 sunDirection; // Offset: 192 Size: 12
// float3 sunPosition; // Offset: 208 Size: 12 [unused]
// float3 cloudBaseMinusMidColour; // Offset: 224 Size: 12 [unused]
// float3 cloudMidColour; // Offset: 240 Size: 12 [unused]
// float3 cloudShadowMinusBaseColourTimesShadowStrength;// Offset: 256 Size: 12 [unused]
// float4 cloudDetailConstants; // Offset: 272 Size: 16
// float4 cloudConstants1; // Offset: 288 Size: 16 [unused]
// float4 cloudConstants2; // Offset: 304 Size: 16
// float4 smallCloudConstants; // Offset: 320 Size: 16
// float3 smallCloudColorHdr; // Offset: 336 Size: 12 [unused]
// float4 effectsConstants; // Offset: 352 Size: 16 [unused]
// float horizonLevel; // Offset: 368 Size: 4
// float3 speedConstants; // Offset: 372 Size: 12
// float starfieldIntensity; // Offset: 384 Size: 4 [unused]
// float3 moonDirection; // Offset: 388 Size: 12 [unused]
// float3 moonPosition; // Offset: 400 Size: 12 [unused]
// float moonIntensity; // Offset: 412 Size: 4 [unused]
// float3 lunarCycle; // Offset: 416 Size: 12 [unused]
// float3 moonColor; // Offset: 432 Size: 12 [unused]
// float noiseFrequency; // Offset: 444 Size: 4 [unused]
// float noiseScale; // Offset: 448 Size: 4 [unused]
// float noiseThreshold; // Offset: 452 Size: 4 [unused]
// float noiseSoftness; // Offset: 456 Size: 4 [unused]
// float noiseDensityOffset; // Offset: 460 Size: 4 [unused]
// float2 noisePhase; // Offset: 464 Size: 8 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// rage_matrices cbuffer NA NA cb1 1
// lighting_globals cbuffer NA NA cb3 1
// sky_system_locals cbuffer NA NA cb12 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyzw
// TEXCOORD 0 xy 1 NONE float xy
// TEXCOORD 1 xy 2 NONE float xy
// SV_InstanceID 0 x 3 INSTID uint
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyzw 2 NONE float xyzw
// TEXCOORD 2 xyzw 3 NONE float xyzw
// TEXCOORD 3 xyzw 4 NONE float xyzw
// TEXCOORD 4 xyzw 5 NONE float xyzw
// TEXCOORD 5 xy 6 NONE float xy
// TEXCOORD 6 xyzw 7 NONE float xyzw
//
vs_4_0
dcl_constantbuffer CB1[16], immediateIndexed
dcl_constantbuffer CB3[59], immediateIndexed
dcl_constantbuffer CB12[24], immediateIndexed
dcl_input v0.xyzw
dcl_input v1.xy
dcl_input v2.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.xy
dcl_output o7.xyzw
dcl_temps 6
*/
-278
View File
@@ -1,278 +0,0 @@
#include "Shadowmap.hlsli"
Texture2D<float4> Colourmap0 : register(t0);
Texture2D<float4> Colourmap1 : register(t2);
Texture2D<float4> Colourmap2 : register(t3);
Texture2D<float4> Colourmap3 : register(t4);
Texture2D<float4> Colourmap4 : register(t5);
Texture2D<float4> Colourmask : register(t6);
Texture2D<float4> Normalmap0 : register(t7);
Texture2D<float4> Normalmap1 : register(t8);
Texture2D<float4> Normalmap2 : register(t9);
Texture2D<float4> Normalmap3 : register(t10);
Texture2D<float4> Normalmap4 : register(t11);
SamplerState TextureSS : register(s0);
cbuffer PSSceneVars : register(b0)
{
ShaderGlobalLightParams GlobalLights;
uint EnableShadows;
uint RenderMode; //0=default, 1=normals, 2=tangents, 3=colours, 4=texcoords, 5=diffuse, 6=normalmap, 7=spec, 8=direct
uint RenderModeIndex; //colour or texcoord index
uint RenderSamplerCoord;
}
cbuffer PSEntityVars : register(b2)
{
uint EnableTexture0;
uint EnableTexture1;
uint EnableTexture2;
uint EnableTexture3;
uint EnableTexture4;
uint EnableTextureMask;
uint EnableNormalMap;
uint ShaderName;
uint EnableTint;
uint EnableVertexColour;
float bumpiness;
uint Pad102;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tint : COLOR2;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Shadows : TEXCOORD4;
float4 LightShadow : TEXCOORD5;
float4 Tangent : TEXCOORD6;
float4 Bitangent : TEXCOORD7;
float3 CamRelPos : TEXCOORD8;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
float4 vc0 = input.Colour0;
float4 vc1 = input.Colour1;
float2 tc0 = input.Texcoord0;
float2 tc1 = input.Texcoord1;
float2 tc2 = input.Texcoord2;
float2 sc0 = tc0;
float2 sc1 = tc0;
float2 sc2 = tc0;
float2 sc3 = tc0;
float2 sc4 = tc0;
float2 scm = tc1;
////switch (ShaderName)
////{
//// case 3965214311: //terrain_cb_w_4lyr_cm_pxm_tnt vt: PNCTTTX_3 //vb_35_beache
//// case 4186046662: //terrain_cb_w_4lyr_cm_pxm vt: PNCTTTX_3 //cs6_08_struct08
//// //vc1 = vc0;
//// //sc1 = tc0*25;
//// //sc2 = sc1;
//// //sc3 = sc1;
//// //sc4 = sc1;
//// //scm = tc0;
//// break;
////}
float4 bc0 = float4(0.5, 0.5, 0.5, 1);
//if (EnableVertexColour)
//{
// bc0 = vc0;
//}
if (RenderMode == 8) //direct texture - choose texcoords
{
if (RenderSamplerCoord == 2) sc0 = tc1;
else if (RenderSamplerCoord == 3) sc0 = tc2;
}
float4 c0 = (EnableTexture0 == 1) ? Colourmap0.Sample(TextureSS, sc0) : bc0;
float4 c1 = (EnableTexture1 == 1) ? Colourmap1.Sample(TextureSS, sc1) : bc0;
float4 c2 = (EnableTexture2 == 1) ? Colourmap2.Sample(TextureSS, sc2) : bc0;
float4 c3 = (EnableTexture3 == 1) ? Colourmap3.Sample(TextureSS, sc3) : bc0;
float4 c4 = (EnableTexture4 == 1) ? Colourmap4.Sample(TextureSS, sc4) : bc0;
float4 m = (EnableTextureMask == 1) ? Colourmask.Sample(TextureSS, scm) : vc1;
float4 b0 = (EnableNormalMap == 1) ? Normalmap0.Sample(TextureSS, sc0) : float4(0.5, 0.5, 0.5, 1);// float4(input.Normal, 0);
float4 b1 = (EnableNormalMap == 1) ? Normalmap1.Sample(TextureSS, sc1) : b0;
float4 b2 = (EnableNormalMap == 1) ? Normalmap2.Sample(TextureSS, sc2) : b0;
float4 b3 = (EnableNormalMap == 1) ? Normalmap3.Sample(TextureSS, sc3) : b0;
float4 b4 = (EnableNormalMap == 1) ? Normalmap4.Sample(TextureSS, sc4) : b0;
float4 tv=0, nv=0;
float4 t1, t2, n1, n2;
switch (ShaderName)
{
case 137526804: //terrain_cb_w_4lyr_lod vt: PNCCT //brdgeplatform_01_lod..
//return float4(vc1.rgb, vc1.a*0.5 + 0.5);
t1 = c1*(1 - vc1.b) + c2*vc1.b;
t2 = c3*(1 - vc1.b) + c4*vc1.b;
tv = t1*(1 - vc1.g) + t2*vc1.g;
n1 = b1*(1 - vc1.b) + b2*vc1.b;
n2 = b3*(1 - vc1.b) + b4*vc1.b;
nv = n1*(1 - vc1.g) + n2*vc1.g;
break;
default:
case 2535953532: //terrain_cb_w_4lyr_2tex_blend_lod vt: PNCCTT //cs1_12_riverbed1_lod..
//return float4(vc0.rgb, vc0.a*0.5 + 0.5);
//return float4(vc1.rgb, vc1.a*0.5 + 0.5);
vc1 = m*(1 - vc0.a) + vc1*vc0.a;
t1 = c1*(1 - vc1.b) + c2*vc1.b;
t2 = c3*(1 - vc1.b) + c4*vc1.b;
tv = t1*(1 - vc1.g) + t2*vc1.g;
n1 = b1*(1 - vc1.b) + b2*vc1.b;
n2 = b3*(1 - vc1.b) + b4*vc1.b;
nv = n1*(1 - vc1.g) + n2*vc1.g;
break;
case 653544224: //terrain_cb_w_4lyr_2tex_blend_pxm_spm vt: PNCCTTTX //ch2_04_land06, rd_04_20..
case 2486206885: //terrain_cb_w_4lyr_2tex_blend_pxm vt: PNCCTTTX //cs2_06c_lkbed_05..
case 1888432890: //terrain_cb_w_4lyr_2tex_pxm vt: PNCCTTTX //ch1_04b_vineland01..
//return float4(0, 1, 0, 1);
vc1 = m*(1 - vc0.a) + vc1*vc0.a; //perhaps another sampling of the mask is needed here
t1 = c1*(1 - vc1.b) + c2*vc1.b;
t2 = c3*(1 - vc1.b) + c4*vc1.b;
tv = t1*(1 - vc1.g) + t2*vc1.g;
n1 = b1*(1 - vc1.b) + b2*vc1.b;
n2 = b3*(1 - vc1.b) + b4*vc1.b;
nv = n1*(1 - vc1.g) + n2*vc1.g;
break;
case 3051127652: //terrain_cb_w_4lyr vt: PNCCTX //ss1_05_gr..
case 646532852: //terrain_cb_w_4lyr_spec vt: PNCCTX //hw1_07_grnd_c..
//return float4(1, 1, 0, 1);
vc1 = m*(1 - vc0.a) + vc1*vc0.a; //perhaps another sampling of the mask is needed here
t1 = c1*(1 - vc1.b) + c2*vc1.b;
t2 = c3*(1 - vc1.b) + c4*vc1.b;
tv = t1*(1 - vc1.g) + t2*vc1.g;
n1 = b1*(1 - vc1.b) + b2*vc1.b;
n2 = b3*(1 - vc1.b) + b4*vc1.b;
nv = n1*(1 - vc1.g) + n2*vc1.g;
break;
case 2316006813: //terrain_cb_w_4lyr_2tex_blend vt: PNCCTTX //ch2_04_land02b, vb_34_beachn_01..
case 3112820305: //terrain_cb_w_4lyr_2tex vt: PNCCTTX //ch1_05_land5..
case 2601000386: //terrain_cb_w_4lyr_spec_pxm vt: PNCCTTX_2 //ch2_03_land05, grnd_low2.. _road
case 4105814572: //terrain_cb_w_4lyr_pxm vt: PNCCTTX_2 //ch2_06_house02.. vb_35_beache
case 3400824277: //terrain_cb_w_4lyr_pxm_spm vt: PNCCTTX_2 //ch2_04_land02b, ch2_06_terrain01a .. vb_35_beacha
//return float4(1, 1, 1, 1);
vc1 = m*(1 - vc0.a) + vc1*vc0.a; //perhaps another sampling of the mask is needed here
t1 = c1*(1 - vc1.b) + c2*vc1.b;
t2 = c3*(1 - vc1.b) + c4*vc1.b;
tv = t1*(1 - vc1.g) + t2*vc1.g;
n1 = b1*(1 - vc1.b) + b2*vc1.b;
n2 = b3*(1 - vc1.b) + b4*vc1.b;
nv = n1*(1 - vc1.g) + n2*vc1.g;
break;
case 295525123: //terrain_cb_w_4lyr_cm vt: PNCTTX //_prewtrproxy_2..
case 417637541: //terrain_cb_w_4lyr_cm_tnt vt: PNCTTX //_prewtrproxy_2.. //golf course..
//tv = 1;// c1;// *vc0.r; //TODO!
//nv = b0;
vc1 = m; //needs work!
t1 = c1*(1 - vc1.b) + c2*vc1.b;
t2 = c3*(1 - vc1.b) + c4*vc1.b;
tv = t1*(1 - vc1.g) + t2*vc1.g;
n1 = b1*(1 - vc1.b) + b2*vc1.b;
n2 = b3*(1 - vc1.b) + b4*vc1.b;
nv = n1*(1 - vc1.g) + n2*vc1.g;
break;
case 3965214311: //terrain_cb_w_4lyr_cm_pxm_tnt vt: PNCTTTX_3 //vb_35_beache
case 4186046662: //terrain_cb_w_4lyr_cm_pxm vt: PNCTTTX_3 //cs6_08_struct08
//m = min(m, vc0);
//return float4(m.rgb, m.a*0.5 + 0.5);
//return float4(vc0.rgb, vc0.a*0.5 + 0.5);
//return float4(0, 1, 1, 1);
//m = vc0;
vc1 = m; //needs work!
t1 = c1*(1 - vc1.b) + c2*vc1.b;
t2 = c3*(1 - vc1.b) + c4*vc1.b;
tv = t1*(1 - vc1.g) + t2*vc1.g;
n1 = b1*(1 - vc1.b) + b2*vc1.b;
n2 = b3*(1 - vc1.b) + b4*vc1.b;
nv = n1*(1 - vc1.g) + n2*vc1.g;
break;
}
if (EnableTint == 1)
{
tv.rgb *= input.Tint.rgb;
}
if (RenderMode == 1) //normals
{
tv.rgb = normalize(input.Normal)*0.5+0.5;
}
else if (RenderMode == 2) //tangents
{
tv.rgb = normalize(input.Tangent.xyz)*0.5+0.5;
}
else if (RenderMode == 3) //colours
{
tv.rgb = input.Colour0.rgb;
if (RenderModeIndex == 2) tv.rgb = input.Colour1.rgb;
}
else if (RenderMode == 4) //texcoords
{
tv.rgb = float3(input.Texcoord0, 0);
if (RenderModeIndex == 2) tv.rgb = float3(input.Texcoord1, 0);
if (RenderModeIndex == 3) tv.rgb = float3(input.Texcoord2, 0);
}
else if (RenderMode == 5) //render diffuse maps
{
//nothing to do here yet, diffuse maps rendered by default
}
else if (RenderMode == 6) //render normalmaps
{
tv.rgb = nv.rgb;
}
else if (RenderMode == 7) //render spec maps
{
tv.rgb = 0.5; //nothing to see here yet...
}
else if (RenderMode == 8) //render direct texture
{
tv = c0;
}
//nv = normalize(nv*2-1);
//float4 tang = input.Tangent;
float3 nz = normalize(input.Normal);
//float3 nx = normalize(tang.xyz);
//float3 ny = normalize(cross(nz, nx));
////float3 norm = normalize(nx*nv.x + ny*nv.y + nz*nv.z);
float3 norm = nz;// normalize(input.Normal)
if ((RenderMode == 0) && (EnableNormalMap == 1))
{
norm = NormalMap(nv.xy, bumpiness, input.Normal.xyz, input.Tangent.xyz, input.Bitangent.xyz);
}
float3 spec = 0;
tv.rgb = FullLighting(tv.rgb, spec, norm, vc0, GlobalLights, EnableShadows, input.Shadows.x, input.LightShadow);
return float4(tv.rgb, saturate(tv.a));
}
-87
View File
@@ -1,87 +0,0 @@
#include "Shadowmap.hlsli"
#include "Quaternion.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
}
cbuffer VSEntityVars : register(b2)
{
float4 CamRel;
float4 Orientation;
uint HasSkeleton;
uint HasTransforms;
uint TintPaletteIndex;
uint Pad1;
float3 Scale;
uint Pad2;
}
cbuffer VSModelVars : register(b3)
{
float4x4 Transform;
}
cbuffer VSGeomVars : register(b4)
{
uint EnableTint;
float TintYVal;
uint Pad4;
uint Pad5;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float4 Tint : COLOR2;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Shadows : TEXCOORD4;
float4 LightShadow : TEXCOORD5;
float4 Tangent : TEXCOORD6;
float4 Bitangent : TEXCOORD7;
float3 CamRelPos : TEXCOORD8;
};
Texture2D<float4> TintPalette : register(t0);
SamplerState TextureSS : register(s0);
float3 ModelTransform(float3 ipos)
{
float3 tpos = (HasTransforms == 1) ? mul(float4(ipos, 1), Transform).xyz : ipos;
float3 spos = tpos * Scale;
float3 bpos = mulvq(spos, Orientation);
return CamRel.xyz + bpos;
}
float4 ScreenTransform(float3 opos)
{
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
cpos.z = DepthFunc(cpos.zw);
return cpos;
}
float3 NormalTransform(float3 inorm)
{
float3 tnorm = (HasTransforms == 1) ? mul(inorm, (float3x3)Transform) : inorm;
float3 bnorm = normalize(mulvq(tnorm, Orientation));
return bnorm;
}
float4 ColourTint(float tx)
{
float4 tnt = 1;
if (EnableTint == 1)
{
tnt = TintPalette.SampleLevel(TextureSS, float2(tx, TintYVal), 0);
}
return tnt;
}
-39
View File
@@ -1,39 +0,0 @@
#include "TerrainVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord : TEXCOORD0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = input.Texcoord;
output.Texcoord1 = 0.5;// input.Texcoord;
output.Texcoord2 = 0.5;// input.Texcoord;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Tint = tnt;
output.Tangent = float4(btang, 0);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-40
View File
@@ -1,40 +0,0 @@
#include "TerrainVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 tnt = ColourTint(input.Colour0.b); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Texcoord0 = input.Texcoord0;
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5;
output.Tint = tnt;
output.Tangent = float4(btang, 0);
output.Bitangent = float4(cross(btang, bnorm), 0);
return output;
}
-42
View File
@@ -1,42 +0,0 @@
#include "TerrainVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Texcoord0 = input.Texcoord0;
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = input.Texcoord2;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
output.Tint = tnt;
return output;
}
-41
View File
@@ -1,41 +0,0 @@
#include "TerrainVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Texcoord0 = input.Texcoord0;
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
output.Tint = tnt;
return output;
}
-40
View File
@@ -1,40 +0,0 @@
#include "TerrainVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
float2 Texcoord0 : TEXCOORD0;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Colour0 = input.Colour0;
output.Colour1 = input.Colour1;
output.Texcoord0 = input.Texcoord0;
output.Texcoord1 = 0.5;
output.Texcoord2 = 0.5;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
output.Tint = tnt;
return output;
}
-41
View File
@@ -1,41 +0,0 @@
#include "TerrainVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1);
output.Texcoord0 = input.Texcoord0;
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = input.Texcoord2;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
output.Tint = tnt;
return output;
}
-40
View File
@@ -1,40 +0,0 @@
#include "TerrainVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float4 Colour0 : COLOR0;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 tnt = ColourTint(input.Colour0.b); //colour tinting if enabled
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Colour0 = input.Colour0;
output.Colour1 = float4(0.5,0.5,0.5,1);
output.Texcoord0 = input.Texcoord0;
output.Texcoord1 = input.Texcoord1;
output.Texcoord2 = 0.5;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
output.Tint = tnt;
return output;
}
-53
View File
@@ -1,53 +0,0 @@
#include "Common.hlsli"
Texture2D<float4> Colourmap : register(t0);
SamplerState TextureSS : register(s0);
cbuffer PSSceneVars : register(b0)
{
ShaderGlobalLightParams GlobalLights;
}
cbuffer PSEntityVars : register(b1)
{
uint EnableTexture;
uint Pad1;
uint Pad2;
uint Pad3;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
float4 Colour : COLOR0;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
//return float4(1,0,0,1);//red
float4 c = 0;// float4(input.Colour.rgb, 1);
//return c;
if (EnableTexture == 1)
{
//c = Colourmap.SampleLevel(TextureSS, input.Texcoord, 0);
c = Colourmap.Sample(TextureSS, input.Texcoord);
if (c.a <= 0.25) discard;
c.a = 1;
// c = float4(input.Colour.rgb, 1);
}
float3 norm = input.Normal;
float lf = saturate(dot(normalize(norm), GlobalLights.LightDir.xyz));
c.rgb = GlobalLighting(c.rgb, norm, input.Colour, lf, GlobalLights);
c.a = saturate(c.a);
return c;
}
-95
View File
@@ -1,95 +0,0 @@
#include "Common.hlsli"
#include "Quaternion.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
}
cbuffer VSEntityVars : register(b1)
{
float4 CamRel;
float4 Orientation;
uint HasSkeleton;
uint HasTransforms;
uint Pad0;
uint Pad1;
float3 Scale;
uint Pad2;
}
cbuffer VSModelVars : register(b2)
{
float4x4 Transform;
}
cbuffer TreesLodShaderVSGeometryVars : register(b3)
{
float4 AlphaTest;
float4 AlphaScale;
float4 UseTreeNormals;
float4 treeLod2Normal;
float4 treeLod2Params;
}
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float2 Texcoord1 : TEXCOORD1;
float2 Texcoord2 : TEXCOORD2;
float2 Texcoord3 : TEXCOORD3;
float4 Colour0 : COLOR0;
float4 Colour1 : COLOR1;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float2 Texcoord : TEXCOORD0;
float4 Colour : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
//first find the base point of the billboard.. full transformation may not be necessary!
float3 ipos = input.Position.xyz;
float3 tpos = (HasTransforms == 1) ? mul(float4(ipos, 1), Transform).xyz : ipos;
float3 spos = tpos;// *Scale;
float3 bpos = mulvq(spos, Orientation);
float3 opos = CamRel.xyz + bpos;
float3 dir = normalize(opos);
float3 bbside = normalize(cross(dir, treeLod2Normal.xyz));
float2 bbvpos = treeLod2Params.xy*(0.5 - input.Texcoord0)*input.Texcoord2;
opos += bbside*bbvpos.x;
opos += treeLod2Normal.xyz*bbvpos.y;
//float3 ipos = input.Position.xyz + float3(treeLod2Params.xy*(input.Texcoord0-0.5)*input.Texcoord2,0);
//float3 tpos = (HasTransforms == 1) ? mul(float4(ipos, 1), Transform).xyz : ipos;
//float3 spos = tpos;// *Scale;
//float3 bpos = mulvq(spos, Orientation);
//float3 opos = CamRel.xyz + bpos;
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
cpos.z = DepthFunc(cpos.zw);
//float3 inorm = input.Normal;
//float3 tnorm = (HasTransforms == 1) ? mul(inorm, (float3x3)Transform) : inorm;
//float3 bnorm = normalize(mulvq(tnorm, Orientation));
float3 bnorm = normalize(-pos.xyz); //normal pointing towards the camera...
output.Position = cpos;
output.Normal = bnorm;
output.Texcoord = input.Texcoord1;
output.Colour = input.Colour0;// float4(input.Texcoord2, 0, 1);// input.Colour1;
return output;
}
-800
View File
@@ -1,800 +0,0 @@
#include "Shadowmap.hlsli"
Texture2D<float4> Colourmap : register(t0);
Texture2D<float4> Bumpmap : register(t2);
Texture2D<float4> Foammap : register(t3);
Texture2D<float4> WaterBumpSampler : register(t4);// graphics.ytd, waterbump and waterbump2
Texture2D<float4> WaterBumpSampler2 : register(t5);
Texture2D<float4> WaterFog : register(t6);
SamplerState TextureSS : register(s0);
cbuffer PSSceneVars : register(b0)
{
ShaderGlobalLightParams GlobalLights;
uint EnableShadows;
uint RenderMode;//0=default, 1=normals, 2=tangents, 3=colours, 4=texcoords, 5=diffuse, 6=normalmap, 7=spec, 8=direct
uint RenderModeIndex;
uint RenderSamplerCoord;
uint EnableWaterbumps;//if the waterbump textures are ready..
uint EnableFogtex; //if the fog texture is ready
uint ScnPad1;
uint ScnPad2;
float4 gFlowParams;
float4 CameraPos;
float4 WaterFogParams; //xy = base location, zw = inverse size
}
cbuffer PSGeomVars : register(b2)
{
uint EnableTexture;
uint EnableBumpMap;
uint EnableFoamMap;
uint ShaderMode;
float SpecularIntensity;
float SpecularFalloff;
float GeoPad1;
float GeoPad2;
float WaveOffset; //for terrainfoam
float WaterHeight; //for terrainfoam
float WaveMovement; //for terrainfoam
float HeightOpacity; //for terrainfoam
float RippleSpeed;
float RippleScale;
float RippleBumpiness;
float GeoPad3;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Flow : TEXCOORD1;
float4 Shadows : TEXCOORD3;
float4 LightShadow : TEXCOORD4;
float4 Colour0 : COLOR0;
float4 Tangent : TEXCOORD5;
float4 Bitangent : TEXCOORD6;
float3 CamRelPos : TEXCOORD7;
};
float3 RippleNormal(VS_OUTPUT input, float3 worldpos)
{
////
//// Input signature:
////
//// Name Index Mask Register SysValue Format Used
//// -------------------- ----- ------ -------- -------- ------- ------
//// SV_Position 0 xyzw 0 POS float
//// TEXCOORD 0 xyzw 1 NONE float xyzw
//// TEXCOORD 1 xyzw 2 NONE float xyzw
//// TEXCOORD 2 xyzw 3 NONE float zw
//// TEXCOORD 3 xyzw 4 NONE float xyzw //NORMAL +half
//// TEXCOORD 4 xyzw 5 NONE float zw //FLOW
////
//
float3 norm = input.Normal.xyz;
float v2w = input.Colour0.r; //vertex red channel
float4 r0, r1, r2, r3, r4;
r0.xy = input.Flow.zw * RippleSpeed; //mul r0.xy, v5.zwzz, RippleSpeed
r1 = -r0.xyxy * gFlowParams.xxyy + worldpos.xyxy; //mad r1.xyzw, -r0.xyxy, gFlowParams.xxyy, v2.xyxy
r0.x = min(sqrt(dot(r0.xy, r0.xy)), 1.0); //dp2 r0.x, r0.xyxx, r0.xyxx //sqrt r0.x, r0.x //min r0.x, r0.x, l(1.000000)
r0.yz = r1.xy * RippleScale; //mul r0.yz, r1.xxyx, RippleScale
r1.xy = r1.zw * RippleScale + 0.5; //mad r1.xy, r1.zwzz, RippleScale, l(0.500000, 0.500000, 0.000000, 0.000000)
r1.xy = r1.xy * 2.3; //mul r1.xy, r1.xyxx, l(2.300000, 2.300000, 0.000000, 0.000000)
r0.yz = r0.yz * 2.3; //mul r0.yz, r0.yyzy, l(0.000000, 2.300000, 2.300000, 0.000000)
r2 = WaterBumpSampler2.Sample(TextureSS, r0.yz); //sample r2.xyzw, r0.yzyy, WaterBumpSampler2.xyzw, s14
r3 = WaterBumpSampler.Sample(TextureSS, r0.yz); //sample r3.xyzw, r0.yzyy, WaterBumpSampler.xyzw, s10
r4 = WaterBumpSampler2.Sample(TextureSS, r1.xy); //sample r4.xyzw, r1.xyxx, WaterBumpSampler2.xyzw, s14
r1 = WaterBumpSampler.Sample(TextureSS, r1.xy); //sample r1.xyzw, r1.xyxx, WaterBumpSampler.xyzw, s10
r3.zw = r1.xy; //mov r3.zw, r1.xxxy
r2.zw = r4.xy; //mov r2.zw, r4.xxxy
r1 = r2 + r3; //add r1.xyzw, r2.xyzw, r3.xyzw
r2 = r3 + 0.5; //add r2.xyzw, r3.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000)
r1 = r1 - r2; //add r1.xyzw, r1.xyzw, -r2.xyzw
r0 = r1 * r0.x + r2; //mad r0.xyzw, r0.xxxx, r1.xyzw, r2.xyzw
r0 = r0 * 2 - 2; //mad r0.xyzw, r0.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), l(-2.000000, -2.000000, -2.000000, -2.000000)
r0 = r0 * gFlowParams.zzww; //mul r0.xyzw, r0.xyzw, gFlowParams.zzww
r0.xy = r0.xy + r0.zw; //add r0.xy, r0.zwzz, r0.xyxx
r0.zw = r0.xy * RippleBumpiness;//mul r0.zw, r0.xxxy, RippleBumpiness
//r0.x = sqrt(dot(r0.xy, r0.xy)); //dp2 r0.x, r0.xyxx, r0.xyxx //sqrt r0.x, r0.x
//r0.x = r0.x * 0.27 + 0.44; //mad r0.x, r0.x, l(0.270000), l(0.440000)
r1.xy = r0.zw * v2w + norm.xy; //mad r1.xy, r0.zwzz, v2.wwww, v4.xyxx
r1.z = norm.z; //mov r1.z, v4.z
//return normalize(r1.xyz);
r0.y = dot(r1.xyz, r1.xyz); //dp3 r0.y, r1.xyzx, r1.xyzx
r0.y = 1.0 / sqrt(r0.y); //rsq r0.y, r0.y
r2.xyz = -r1.xyz * r0.y + float3(0, 0, 1); //mad r2.xyz, -r1.xyzx, r0.yyyy, l(0.000000, 0.000000, 1.000000, 0.000000)
r0.yzw = r1.xyz * r0.y; //mul r0.yzw, r0.yyyy, r1.xxyz
//r1.xyz = r2.xyz * 0.833333 + r0.yzw; //mad r1.xyz, r2.xyzx, l(0.833333, 0.833333, 0.833333, 0.000000), r0.yzwy
//r2.xyz = worldpos - //add r2.xyz, v2.xyzx, -gViewInverse[3].xyzx
return r0.yzw;
//return r0.wzy;
////return float3(r0.w, r0.z, r0.y);
////return normalize(input.Normal);
}
float4 main(VS_OUTPUT input) : SV_TARGET
{
float4 c = float4(0.1, 0.18, 0.25, 0.8);
//if (RenderMode == 0) c = float4(1, 1, 1, 1);
//c.a *= input.Colour0.a;
float3 camrel = input.CamRelPos;
float3 worldpos = camrel + CameraPos.xyz;
if ((EnableFoamMap == 0) && (EnableFogtex == 1))
{
float2 fogtc = saturate((worldpos.xy - WaterFogParams.xy) * WaterFogParams.zw);
fogtc.y = 1.0 - fogtc.y;
c = WaterFog.Sample(TextureSS, fogtc);
c.a = 0.9;
}
float3 norm = EnableFoamMap ? normalize(input.Normal) : RippleNormal(input, worldpos);// normalize(input.Normal);
if (RenderMode == 1) //normals
{
c.rgb = norm*0.5+0.5;
}
else if (RenderMode == 2) //tangents
{
c.rgb = normalize(input.Tangent.rgb)*0.5+0.5;
}
else if (RenderMode == 3) //colours
{
c.rgb = input.Colour0.rgb;
}
else if (RenderMode == 4) //texcoords
{
c.rgb = float3(input.Texcoord0, 0);
}
else if ((RenderMode == 8) || (EnableTexture == 1)) //single texture or diffuse enabled
{
c.rgb = Colourmap.Sample(TextureSS, input.Texcoord0).rgb;
}
else if (EnableFoamMap)
{
c = Foammap.Sample(TextureSS, input.Texcoord0);
}
float3 spec = 0;
if (RenderMode == 0)
{
float4 nv = Bumpmap.Sample(TextureSS, input.Texcoord0); //sample r1.xyzw, v2.xyxx, t3.xyzw, s3 (BumpSampler)
float2 nmv = nv.xy;
float4 r0 = 0, r1, r2, r3;
float bumpiness = 0.5;
if (EnableBumpMap)
{
norm = NormalMap(nmv, bumpiness, input.Normal.xyz, input.Tangent.xyz, input.Bitangent.xyz);
}
float3 tc = c.rgb;
c.rgb = tc;// *r0.z; //diffuse factors...
float3 incident = normalize(input.CamRelPos);
float3 refl = normalize(reflect(incident, norm));
float specb = saturate(dot(refl, GlobalLights.LightDir));
float specp = max(exp(specb * 10) - 1, 0);
spec += GlobalLights.LightDirColour.rgb * 0.00006 * specp * SpecularIntensity;
if (ShaderMode == 1) //river foam
{
c.a *= input.Colour0.g;
}
else if (ShaderMode == 2) //terrain foam
{
c.a *= c.r;
c.a *= input.Colour0.r;
}
else
{
///c.a = 1;
}
}
float4 fc = c;
c.rgb = FullLighting(c.rgb, spec, norm, 0, GlobalLights, EnableShadows, input.Shadows.x, input.LightShadow);
c.a = saturate(c.a);
return c;
}
/*
water_terrainfoam.fxc_PSFoam
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer misc_globals
// {
//
// float4 globalFade; // Offset: 0 Size: 16 [unused]
// float globalHeightScale; // Offset: 16 Size: 4 [unused]
// float4 g_Rage_Tessellation_CameraPosition;// Offset: 32 Size: 16 [unused]
// float4 g_Rage_Tessellation_CameraZAxis;// Offset: 48 Size: 16 [unused]
// float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset: 64 Size: 16 [unused]
// float4 g_Rage_Tessellation_LinearScale;// Offset: 80 Size: 16 [unused]
// float4 g_Rage_Tessellation_Frustum[4];// Offset: 96 Size: 64 [unused]
// float4 g_Rage_Tessellation_Epsilons;// Offset: 160 Size: 16 [unused]
// float4 globalScalars; // Offset: 176 Size: 16
// float4 globalScalars2; // Offset: 192 Size: 16
// float4 globalScalars3; // Offset: 208 Size: 16 [unused]
// float4 globalScreenSize; // Offset: 224 Size: 16 [unused]
// uint4 gTargetAAParams; // Offset: 240 Size: 16 [unused]
// float4 colorize; // Offset: 256 Size: 16 [unused]
// float4 gGlobalParticleShadowBias; // Offset: 272 Size: 16 [unused]
// float gGlobalParticleDofAlphaScale;// Offset: 288 Size: 4 [unused]
// float gGlobalFogIntensity; // Offset: 292 Size: 4 [unused]
// float4 gPlayerLFootPos; // Offset: 304 Size: 16 [unused]
// float4 gPlayerRFootPos; // Offset: 320 Size: 16 [unused]
//
// }
//
// cbuffer more_stuff
// {
//
// float4 gEntitySelectColor[2]; // Offset: 0 Size: 32 [unused]
// float4 gAmbientOcclusionEffect; // Offset: 32 Size: 16 [unused]
// float4 gDynamicBakesAndWetness; // Offset: 48 Size: 16
// float4 gAlphaRefVec0; // Offset: 64 Size: 16 [unused]
// float4 gAlphaRefVec1; // Offset: 80 Size: 16 [unused]
// float gAlphaTestRef; // Offset: 96 Size: 4 [unused]
// bool gTreesUseDiscard; // Offset: 100 Size: 4 [unused]
// float gReflectionMipCount; // Offset: 104 Size: 4 [unused]
// bool gUseTransparencyAA; // Offset: 108 Size: 4 [unused]
// bool gUseFogRay; // Offset: 112 Size: 4 [unused]
//
// }
//
// cbuffer water_terrainfoam_locals
// {
//
// float WaveOffset; // Offset: 0 Size: 4
// float WaterHeight; // Offset: 4 Size: 4
// float WaveMovement; // Offset: 8 Size: 4
// float HeightOpacity; // Offset: 12 Size: 4
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// FoamSampler sampler NA NA s3 1
// WetSampler sampler NA NA s9 1
// WaterBumpSampler sampler NA NA s10 1
// FoamSampler texture float4 2d t3 1
// WetSampler texture float4 2d t9 1
// WaterBumpSampler texture float4 2d t10 1
// misc_globals cbuffer NA NA cb2 1
// more_stuff cbuffer NA NA cb5 1
// water_terrainfoam_locals cbuffer NA NA cb10 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float zw
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float
// TEXCOORD 3 xyz 4 NONE float
// TEXCOORD 4 xyzw 5 NONE float xyzw
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
// SV_Target 1 xyzw 1 TARGET float xyzw
// SV_Target 2 xyzw 2 TARGET float xyzw
// SV_Target 3 xyzw 3 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer CB2[13], immediateIndexed
dcl_constantbuffer CB5[4], immediateIndexed
dcl_constantbuffer CB10[1], immediateIndexed
dcl_sampler s3, mode_default
dcl_sampler s9, mode_default
dcl_sampler s10, mode_default
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_input_ps linear v1.zw
dcl_input_ps linear v2.xyz
dcl_input_ps linear v5.xyzw
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_temps 3
mov r0.x, l(0)
sample r1.xyzw, v5.zwzz, t9.xyzw, s9
dp2 r0.y, r1.xxxx, cb10[0].zzzz
add r0.xy, -r0.xyxx, v5.xyxx
add r0.xy, r0.xyxx, cb10[0].xxxx
add r0.zw, r0.xxxy, v5.xxxy
sample r2.xyzw, r0.xyxx, t3.xyzw, s3
sample r0.xyzw, r0.zwzz, t10.xyzw, s10
mul r0.x, r0.x, r2.y
add r0.y, v1.z, -cb10[0].y
max r0.y, r0.y, l(0.000000)
mul r0.y, r0.y, cb10[0].w
mul r0.x, r0.y, r0.x
mul r0.x, r0.x, v1.w
mul_sat r0.x, r1.x, r0.x
mul r0.x, r0.x, cb2[11].x
mov o0.w, r0.x
add r0.y, v2.z, l(-0.350000)
mul_sat r0.y, r0.y, l(1.538462)
mul r0.y, r0.y, cb5[3].z
add r0.z, -cb2[12].z, l(1.000000)
mul r0.y, r0.z, r0.y
mul r0.y, r0.y, cb2[11].z
mad o0.xyz, r0.yyyy, l(-0.500000, -0.500000, -0.500000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
mul r0.yz, r0.yyyy, l(0.000000, 0.500000, 0.488281, 0.000000)
sqrt o2.xy, r0.yzyy
mov o1.w, r0.x
mov o2.w, r0.x
mad o1.xyz, v2.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
mov o2.z, l(0.980000)
mov o3.xyzw, l(0,0,0,0)
ret
// Approximately 32 instruction slots used
*/
/*
water_riverfoam.fxc_PSFoam
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer misc_globals
// {
//
// float4 globalFade; // Offset: 0 Size: 16 [unused]
// float globalHeightScale; // Offset: 16 Size: 4 [unused]
// float4 g_Rage_Tessellation_CameraPosition;// Offset: 32 Size: 16 [unused]
// float4 g_Rage_Tessellation_CameraZAxis;// Offset: 48 Size: 16 [unused]
// float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset: 64 Size: 16 [unused]
// float4 g_Rage_Tessellation_LinearScale;// Offset: 80 Size: 16 [unused]
// float4 g_Rage_Tessellation_Frustum[4];// Offset: 96 Size: 64 [unused]
// float4 g_Rage_Tessellation_Epsilons;// Offset: 160 Size: 16 [unused]
// float4 globalScalars; // Offset: 176 Size: 16 [unused]
// float4 globalScalars2; // Offset: 192 Size: 16 [unused]
// float4 globalScalars3; // Offset: 208 Size: 16
// float4 globalScreenSize; // Offset: 224 Size: 16 [unused]
// uint4 gTargetAAParams; // Offset: 240 Size: 16 [unused]
// float4 colorize; // Offset: 256 Size: 16 [unused]
// float4 gGlobalParticleShadowBias; // Offset: 272 Size: 16 [unused]
// float gGlobalParticleDofAlphaScale;// Offset: 288 Size: 4 [unused]
// float gGlobalFogIntensity; // Offset: 292 Size: 4 [unused]
// float4 gPlayerLFootPos; // Offset: 304 Size: 16 [unused]
// float4 gPlayerRFootPos; // Offset: 320 Size: 16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// FoamSampler sampler NA NA s2 1
// LightingSampler sampler NA NA s15 1
// FoamSampler texture float4 2d t2 1
// LightingSampler texture float4 2d t15 1
// misc_globals cbuffer NA NA cb2 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float w
// TEXCOORD 1 xyzw 2 NONE float xy w
// TEXCOORD 2 xy 3 NONE float xy
// TEXCOORD 3 xyz 4 NONE float xyz
// TEXCOORD 4 xyz 5 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer CB2[14], immediateIndexed
dcl_sampler s2, mode_default
dcl_sampler s15, mode_default
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t15
dcl_input_ps linear v1.w
dcl_input_ps linear v2.xyw
dcl_input_ps linear v3.xy
dcl_input_ps linear v4.xyz
dcl_input_ps linear v5.xyz
dcl_output o0.xyzw
dcl_temps 1
div r0.xy, v2.xyxx, v2.wwww
sample r0.xyzw, r0.xyxx, t15.xyzw, s15
mad r0.xyz, v5.xyzx, r0.wwww, v4.xyzx
mul o0.xyz, r0.xyzx, cb2[13].zzzz
sample r0.xyzw, v3.xyxx, t2.xyzw, s2
mul r0.x, r0.w, v1.w
mul o0.w, r0.x, r0.x
ret
// Approximately 8 instruction slots used
*/
/*
water_river.fxc_PS
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyzw 2 NONE float xyzw
// TEXCOORD 2 xyzw 3 NONE float zw
// TEXCOORD 3 xyzw 4 NONE float xyzw
// TEXCOORD 4 xyzw 5 NONE float zw
//
mul r0.xy, v5.zwzz, RippleSpeed
mad r1.xyzw, -r0.xyxy, gFlowParams.xxyy, v2.xyxy
dp2 r0.x, r0.xyxx, r0.xyxx
sqrt r0.x, r0.x
min r0.x, r0.x, l(1.000000)
mul r0.yz, r1.xxyx, RippleScale
mad r1.xy, r1.zwzz, RippleScale, l(0.500000, 0.500000, 0.000000, 0.000000)
mul r1.xy, r1.xyxx, l(2.300000, 2.300000, 0.000000, 0.000000)
mul r0.yz, r0.yyzy, l(0.000000, 2.300000, 2.300000, 0.000000)
sample r2.xyzw, r0.yzyy, WaterBumpSampler2.xyzw, s14
sample r3.xyzw, r0.yzyy, WaterBumpSampler.xyzw, s10
sample r4.xyzw, r1.xyxx, WaterBumpSampler2.xyzw, s14
sample r1.xyzw, r1.xyxx, WaterBumpSampler.xyzw, s10
mov r3.zw, r1.xxxy
mov r2.zw, r4.xxxy
add r1.xyzw, r2.xyzw, r3.xyzw
add r2.xyzw, r3.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000)
add r1.xyzw, r1.xyzw, -r2.xyzw
mad r0.xyzw, r0.xxxx, r1.xyzw, r2.xyzw
mad r0.xyzw, r0.xyzw, l(2.000000, 2.000000, 2.000000, 2.000000), l(-2.000000, -2.000000, -2.000000, -2.000000)
mul r0.xyzw, r0.xyzw, gFlowParams.zzww
add r0.xy, r0.zwzz, r0.xyxx
mul r0.zw, r0.xxxy, RippleBumpiness
dp2 r0.x, r0.xyxx, r0.xyxx
sqrt r0.x, r0.x
mad r0.x, r0.x, l(0.270000), l(0.440000)
mad r1.xy, r0.zwzz, v2.wwww, v4.xyxx
mov r1.z, v4.z
dp3 r0.y, r1.xyzx, r1.xyzx
rsq r0.y, r0.y
mad r2.xyz, -r1.xyzx, r0.yyyy, l(0.000000, 0.000000, 1.000000, 0.000000)
mul r0.yzw, r0.yyyy, r1.xxyz
mad r1.xyz, r2.xyzx, l(0.833333, 0.833333, 0.833333, 0.000000), r0.yzwy
add r2.xyz, v2.xyzx, -gViewInverse[3].xyzx
dp3 r1.w, r2.xyzx, r2.xyzx
rsq r1.w, r1.w
mul r3.xyz, r1.wwww, r2.xyzx
dp3 r2.w, r3.xyzx, r1.xyzx
add r2.w, r2.w, r2.w
mad r1.xyz, r1.xyzx, -r2.wwww, r3.xyzx
dp3 r2.w, -r3.xyzx, r0.yzwy
mad r1.z, -r2.z, r1.w, -r1.z
mad r1.z, -r2.z, r1.w, |r1.z|
mul r3.xyz, r1.yyyy, gReflectionWorldViewProj[1].xwyx
mad r3.xyz, r1.xxxx, gReflectionWorldViewProj[0].xwyx, r3.xyzx
mad r1.xyz, r1.zzzz, gReflectionWorldViewProj[2].xwyx, r3.xyzx
mul r3.xyz, r1.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
mad r4.y, r1.y, l(0.500000), -r3.z
add r4.x, r3.y, r3.x
div r1.xy, r4.xyxx, r1.yyyy
sample r3.xyzw, r1.xyxx, PlanarReflectionSampler.xyzw, s7
sample r4.xyzw, v1.zwzz, WetSampler.xyzw, s9
mul r1.x, r4.x, l(0.650000)
add r1.y, -v4.w, l(512.000000)
mul_sat r1.y, r1.y, l(0.001953)
mul r1.x, r1.y, r1.x
sample r4.xyzw, v3.zwzz, StaticFoamSampler.xyzw, s4
mul r1.y, r4.y, l(0.350000)
mad r4.x, r1.y, r0.x, r1.x
mov r4.yw, l(0,0.500000,0,0.500000)
sample r5.xyzw, r4.xyxx, BlendSampler.xyzw, s6
mov r1.xy, -r0.yzyy
mov r1.z, l(0)
mad r1.xyz, r2.xyzx, r1.wwww, r1.xyzx
mad r2.xyz, r2.xyzx, r1.wwww, gDirectionalLight.xyzx
div r6.xy, v1.xyxx, v4.wwww
sample r7.xyzw, r6.xyxx, LightingSampler.xyzw, s15
mad r1.xyz, r1.xyzx, r7.yyyy, v2.xyzx
mov r6.z, r7.y
mul r5.xzw, r1.yyyy, gRefractionWorldViewProj[1].xxwy
mad r1.xyw, r1.xxxx, gRefractionWorldViewProj[0].xwxy, r5.xzxw
mad r1.xyz, r1.zzzz, gRefractionWorldViewProj[2].xwyx, r1.xywx
add r1.xyz, r1.xyzx, gRefractionWorldViewProj[3].xwyx
mul r1.xzw, r1.xxyz, l(0.500000, 0.000000, 0.500000, 0.500000)
mad r4.y, r1.y, l(0.500000), -r1.w
add r4.x, r1.z, r1.x
div r1.xy, r4.xyxx, r1.yyyy
sample r7.xyzw, r1.xyxx, LightingSampler.xyzw, s15
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), r7.z
mov r1.z, r7.y
movc r1.xyz, r0.xxxx, r6.xyzx, r1.xyzx
mul r0.x, r1.z, r5.y
sample r5.xyzw, r1.xyxx, RefractionSampler.xyzw, s12
dp3 r1.x, r0.yzwy, -gDirectionalLight.xyzx
mad_sat r1.x, r1.x, l(0.700000), l(0.300000)
mul r1.xyw, r1.xxxx, gWaterDirectionalColor.xyxz
mad r1.xyw, r1.xyxw, r7.wwww, gWaterAmbientColor.xyxz
mad r1.xyw, r1.xyxw, r0.xxxx, r5.xyxz
add r3.xyz, -r1.xywx, r3.xyzx
add r0.x, -r2.w, l(1.000000)
mad r4.z, r0.x, l(0.300000), r2.w
sample r4.xyzw, r4.zwzz, BlendSampler.xyzw, s6
mad r3.xyz, r4.xxxx, r3.xyzx, r1.xywx
dp3 r0.x, r2.xyzx, r2.xyzx
rsq r0.x, r0.x
mul r2.xyz, r0.xxxx, r2.xyzx
dp3_sat r0.x, -r2.xyzx, r0.yzwy
log r0.x, r0.x
mul r0.x, r0.x, SpecularFalloff
exp r0.x, r0.x
mul r0.x, r0.x, SpecularIntensity
mul r0.x, r7.w, r0.x
mad r0.xyz, gWaterDirectionalColor.xyzx, r0.xxxx, r3.xyzx
add r0.xyz, -r1.xywx, r0.xyzx
mad r0.xyz, r1.zzzz, r0.xyzx, r1.xywx
mul o0.xyz, r0.xyzx, globalScalars3.zzzz
mov o0.w, l(0)
ret
// Approximately 108 instruction slots used
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer rage_matrices
// {
//
// row_major float4x4 gWorld; // Offset: 0 Size: 64 [unused]
// row_major float4x4 gWorldView; // Offset: 64 Size: 64 [unused]
// row_major float4x4 gWorldViewProj; // Offset: 128 Size: 64 [unused]
// row_major float4x4 gViewInverse; // Offset: 192 Size: 64
//
// }
//
// cbuffer misc_globals
// {
//
// float4 globalFade; // Offset: 0 Size: 16 [unused]
// float globalHeightScale; // Offset: 16 Size: 4 [unused]
// float4 g_Rage_Tessellation_CameraPosition;// Offset: 32 Size: 16 [unused]
// float4 g_Rage_Tessellation_CameraZAxis;// Offset: 48 Size: 16 [unused]
// float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset: 64 Size: 16 [unused]
// float4 g_Rage_Tessellation_LinearScale;// Offset: 80 Size: 16 [unused]
// float4 g_Rage_Tessellation_Frustum[4];// Offset: 96 Size: 64 [unused]
// float4 g_Rage_Tessellation_Epsilons;// Offset: 160 Size: 16 [unused]
// float4 globalScalars; // Offset: 176 Size: 16 [unused]
// float4 globalScalars2; // Offset: 192 Size: 16 [unused]
// float4 globalScalars3; // Offset: 208 Size: 16
// float4 globalScreenSize; // Offset: 224 Size: 16 [unused]
// uint4 gTargetAAParams; // Offset: 240 Size: 16 [unused]
// float4 colorize; // Offset: 256 Size: 16 [unused]
// float4 gGlobalParticleShadowBias; // Offset: 272 Size: 16 [unused]
// float gGlobalParticleDofAlphaScale;// Offset: 288 Size: 4 [unused]
// float gGlobalFogIntensity; // Offset: 292 Size: 4 [unused]
// float4 gPlayerLFootPos; // Offset: 304 Size: 16 [unused]
// float4 gPlayerRFootPos; // Offset: 320 Size: 16 [unused]
//
// }
//
// cbuffer lighting_globals
// {
//
// float4 gDirectionalLight; // Offset: 0 Size: 16
// float4 gDirectionalColour; // Offset: 16 Size: 16 [unused]
// int gNumForwardLights; // Offset: 32 Size: 4 [unused]
// float4 gLightPositionAndInvDistSqr[8];// Offset: 48 Size: 128 [unused]
// float4 gLightDirectionAndFalloffExponent[8];// Offset: 176 Size: 128 [unused]
// float4 gLightColourAndCapsuleExtent[8];// Offset: 304 Size: 128 [unused]
// float gLightConeScale[8]; // Offset: 432 Size: 116 [unused]
// float gLightConeOffset[8]; // Offset: 560 Size: 116 [unused]
// float4 gLightNaturalAmbient0; // Offset: 688 Size: 16 [unused]
// float4 gLightNaturalAmbient1; // Offset: 704 Size: 16 [unused]
// float4 gLightArtificialIntAmbient0;// Offset: 720 Size: 16 [unused]
// float4 gLightArtificialIntAmbient1;// Offset: 736 Size: 16 [unused]
// float4 gLightArtificialExtAmbient0;// Offset: 752 Size: 16 [unused]
// float4 gLightArtificialExtAmbient1;// Offset: 768 Size: 16 [unused]
// float4 gDirectionalAmbientColour; // Offset: 784 Size: 16 [unused]
// float4 globalFogParams[5]; // Offset: 800 Size: 80 [unused]
// float4 globalFogColor; // Offset: 880 Size: 16 [unused]
// float4 globalFogColorE; // Offset: 896 Size: 16 [unused]
// float4 globalFogColorN; // Offset: 912 Size: 16 [unused]
// float4 globalFogColorMoon; // Offset: 928 Size: 16 [unused]
// float4 gReflectionTweaks; // Offset: 944 Size: 16 [unused]
//
// }
//
// cbuffer water_globals
// {
//
// float2 gWorldBaseVS; // Offset: 0 Size: 8 [unused]
// float4 gFlowParams; // Offset: 16 Size: 16
// float4 gFlowParams2; // Offset: 32 Size: 16 [unused]
// float4 gWaterAmbientColor; // Offset: 48 Size: 16
// float4 gWaterDirectionalColor; // Offset: 64 Size: 16
// float4 gScaledTime; // Offset: 80 Size: 16 [unused]
// float4 gOceanParams0; // Offset: 96 Size: 16 [unused]
// float4 gOceanParams1; // Offset: 112 Size: 16 [unused]
// row_major float4x4 gReflectionWorldViewProj;// Offset: 128 Size: 64
// float4 gFogLight_Debugging; // Offset: 192 Size: 16 [unused]
// row_major float4x4 gRefractionWorldViewProj;// Offset: 208 Size: 64
//
// }
//
// cbuffer water_common_locals
// {
//
// float RippleBumpiness; // Offset: 0 Size: 4
// float RippleSpeed; // Offset: 4 Size: 4
// float RippleScale; // Offset: 8 Size: 4
// float SpecularIntensity; // Offset: 12 Size: 4
// float SpecularFalloff; // Offset: 16 Size: 4
// float ParallaxIntensity; // Offset: 20 Size: 4 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// StaticFoamSampler sampler NA NA s4 1
// BlendSampler sampler NA NA s6 1
// PlanarReflectionSampler sampler NA NA s7 1
// WetSampler sampler NA NA s9 1
// WaterBumpSampler sampler NA NA s10 1
// RefractionSampler sampler NA NA s12 1
// WaterBumpSampler2 sampler NA NA s14 1
// LightingSampler sampler NA NA s15 1
// StaticFoamSampler texture float4 2d t4 1
// BlendSampler texture float4 2d t6 1
// PlanarReflectionSampler texture float4 2d t7 1
// WetSampler texture float4 2d t9 1
// WaterBumpSampler texture float4 2d t10 1
// RefractionSampler texture float4 2d t12 1
// WaterBumpSampler2 texture float4 2d t14 1
// LightingSampler texture float4 2d t15 1
// rage_matrices cbuffer NA NA cb1 1
// misc_globals cbuffer NA NA cb2 1
// lighting_globals cbuffer NA NA cb3 1
// water_globals cbuffer NA NA cb4 1
// water_common_locals cbuffer NA NA cb10 1
//
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target 0 xyzw 0 TARGET float xyzw
//
ps_4_0
dcl_constantbuffer CB1[16], immediateIndexed
dcl_constantbuffer CB2[14], immediateIndexed
dcl_constantbuffer CB3[1], immediateIndexed
dcl_constantbuffer CB4[17], immediateIndexed
dcl_constantbuffer CB10[2], immediateIndexed
dcl_sampler s4, mode_default
dcl_sampler s6, mode_default
dcl_sampler s7, mode_default
dcl_sampler s9, mode_default
dcl_sampler s10, mode_default
dcl_sampler s12, mode_default
dcl_sampler s14, mode_default
dcl_sampler s15, mode_default
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_resource_texture2d (float,float,float,float) t12
dcl_resource_texture2d (float,float,float,float) t14
dcl_resource_texture2d (float,float,float,float) t15
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.zw
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.zw
dcl_output o0.xyzw
dcl_temps 8
*/
-474
View File
@@ -1,474 +0,0 @@
#include "Quaternion.hlsli"
#include "Shadowmap.hlsli"
cbuffer VSSceneVars : register(b0)
{
float4x4 ViewProj;
float4 WaterVector;
float ScaledTime;
float ScnPad0;
float ScnPad1;
float ScnPad2;
}
cbuffer VSEntityVars : register(b2)
{
float4 CamRel;
float4 Orientation;
float3 Scale;
uint EntPad0;
}
cbuffer VSGeomVars : register(b3)
{
float4 WaterParams;
uint EnableFlow;
uint ShaderMode;
uint GeoPad1;
uint GeoPad2;
float RippleSpeed;
float GeoPad3;
float GeoPad4;
float GeoPad5;
}
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Flow : TEXCOORD1;
float4 Shadows : TEXCOORD3;
float4 LightShadow : TEXCOORD4;
float4 Colour0 : COLOR0;
float4 Tangent : TEXCOORD5;
float4 Bitangent : TEXCOORD6;
float3 CamRelPos : TEXCOORD7;
};
Texture2D<float4> FlowSampler : register(t0);
SamplerState TextureSS : register(s0);
float3 ModelTransform(float3 ipos)
{
float3 tpos = ipos;
float3 spos = tpos * Scale;
float3 bpos = mulvq(spos, Orientation);
return CamRel.xyz + bpos;
}
float4 ScreenTransform(float3 opos)
{
float4 pos = float4(opos, 1);
float4 cpos = mul(pos, ViewProj);
cpos.z = DepthFunc(cpos.zw);
return cpos;
}
float3 NormalTransform(float3 inorm)
{
float3 tnorm = inorm;
float3 bnorm = normalize(mulvq(tnorm, Orientation));
return bnorm;
}
float2 GetWaterTexcoords(float2 tc)
{
if (ShaderMode == 1)
{
return tc + float2(ScaledTime * RippleSpeed, 0);
}
else
{
return tc;
}
}
float4 GetWaterFlow(float2 tc, float4 vc)
{
float4 f = float4(vc.g, 0, 0.02, 0.03);
if (EnableFlow)
{
float4 fv = FlowSampler.SampleLevel(TextureSS, tc, 0);
f.zw = fv.xy * 2 - 1;
f.x = vc.g;
f.y = 0;
//sample_l r0.xyzw, v2.xyxx, t2.xyzw, s2, l(0.000000)
//mad o5.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
//mov o5.x, v1.y
//mov o5.y, l(0)
}
return f;
}
/*
water_terrainfoam.fxc_VSFoam
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer rage_matrices
// {
//
// row_major float4x4 gWorld; // Offset: 0 Size: 64
// row_major float4x4 gWorldView; // Offset: 64 Size: 64 [unused]
// row_major float4x4 gWorldViewProj; // Offset: 128 Size: 64
// row_major float4x4 gViewInverse; // Offset: 192 Size: 64 [unused]
//
// }
//
// cbuffer water_globals
// {
//
// float2 gWorldBaseVS; // Offset: 0 Size: 8
// float4 gFlowParams; // Offset: 16 Size: 16 [unused]
// float4 gFlowParams2; // Offset: 32 Size: 16 [unused]
// float4 gWaterAmbientColor; // Offset: 48 Size: 16 [unused]
// float4 gWaterDirectionalColor; // Offset: 64 Size: 16 [unused]
// float4 gScaledTime; // Offset: 80 Size: 16 [unused]
// float4 gOceanParams0; // Offset: 96 Size: 16 [unused]
// float4 gOceanParams1; // Offset: 112 Size: 16 [unused]
// row_major float4x4 gReflectionWorldViewProj;// Offset: 128 Size: 64 [unused]
// float4 gFogLight_Debugging; // Offset: 192 Size: 16 [unused]
// row_major float4x4 gRefractionWorldViewProj;// Offset: 208 Size: 64 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// rage_matrices cbuffer NA NA cb1 1
// water_globals cbuffer NA NA cb4 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyz 0 NONE float xyz
// NORMAL 0 xyz 1 NONE float xyz
// TANGENT 0 xyz 2 NONE float xyz
// TEXCOORD 0 xy 3 NONE float xy
// COLOR 0 xyzw 4 NONE float w
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyz 2 NONE float xyz
// TEXCOORD 2 xyz 3 NONE float xyz
// TEXCOORD 3 xyz 4 NONE float xyz
// TEXCOORD 4 xyzw 5 NONE float xyzw
//
vs_4_0
dcl_constantbuffer CB1[12], immediateIndexed
dcl_constantbuffer CB4[1], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xyz
dcl_input v2.xyz
dcl_input v3.xy
dcl_input v4.w
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyz
dcl_output o3.xyz
dcl_output o4.xyz
dcl_output o5.xyzw
dcl_temps 1
mul r0.xyzw, v0.yyyy, cb1[9].xyzw
mad r0.xyzw, v0.xxxx, cb1[8].xyzw, r0.xyzw
mad r0.xyzw, v0.zzzz, cb1[10].xyzw, r0.xyzw
add o0.xyzw, r0.xyzw, cb1[11].xyzw
mul r0.xyz, v0.yyyy, cb1[1].xyzx
mad r0.xyz, v0.xxxx, cb1[0].xyzx, r0.xyzx
mad r0.xyz, v0.zzzz, cb1[2].xyzx, r0.xyzx
add r0.xyz, r0.xyzx, cb1[3].xyzx
mov o1.xyz, r0.xyzx
add r0.xy, r0.xyxx, -cb4[0].xyxx
mul o5.zw, r0.xxxy, l(0.000000, 0.000000, 0.001953, 0.001953)
mov o1.w, v4.w
mov o2.xyz, v1.xyzx
mov o3.xyz, v2.xyzx
mul r0.xyz, v1.zxyz, v2.yzxy
mad r0.xyz, v1.yzxy, v2.zxyz, -r0.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul o4.xyz, r0.wwww, r0.xyzx
mov o5.xy, v3.xyxx
ret
// Approximately 21 instruction slots used
*/
/*
water_riverfoam.fxc_VS
vs_4_0
dcl_constantbuffer CB1[12], immediateIndexed
dcl_constantbuffer CB2[13], immediateIndexed
dcl_constantbuffer CB3[47], immediateIndexed
dcl_constantbuffer CB4[6], immediateIndexed
dcl_constantbuffer CB10[1], immediateIndexed
dcl_input v0.xyz
dcl_input v1.y
dcl_input v2.xy
dcl_input v3.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xy
dcl_output o4.xyz
dcl_output o5.xyz
dcl_temps 2
mul r0.xyzw, v0.yyyy, gWorldViewProj[1].xyzw
mad r0.xyzw, v0.xxxx, gWorldViewProj[0].xyzw, r0.xyzw
mad r0.xyzw, v0.zzzz, gWorldViewProj[2].xyzw, r0.xyzw
add r0.xyzw, r0.xyzw, gWorldViewProj[3].xyzw
mul r1.xyzw, r0.xyzw, l(1.000000, 1.000000, 0.999995, 1.000000)
mov o0.xyzw, r1.xyzw
mov o2.zw, r1.wwww
add o1.xyz, v0.xyzx, gWorld[3].xyzx
mov o1.w, v1.y
mul r0.xyz, r0.xwyx, l(0.500000, 0.500000, 0.500000, 0.000000)
mad o2.y, r0.w, l(0.500000), -r0.z
add o2.x, r0.y, r0.x
mul r0.x, gScaledTime.x, RippleSpeed
mov r0.y, l(0)
add o3.xy, r0.xyxx, v2.xyxx ///TEXCOORD OUT
add r0.x, v3.z, gLightNaturalAmbient0.w
mul r0.x, r0.x, gLightNaturalAmbient1.w
max r0.x, r0.x, l(0.000000)
mad r0.yzw, gLightArtificialIntAmbient0.xxyz, r0.xxxx, gLightArtificialIntAmbient1.xxyz
mad r1.xyz, gLightNaturalAmbient0.xyzx, r0.xxxx, gLightNaturalAmbient1.xyzx
mad o4.xyz, r0.yzwy, globalScalars2.zzzz, r1.xyzx
dp3_sat r0.x, v3.xyzx, -gDirectionalLight.xyzx
mul o5.xyz, r0.xxxx, gDirectionalColour.xyzx
ret
// Approximately 24 instruction slots used
//
// cbuffer water_globals
// {
//
// float2 gWorldBaseVS; // Offset: 0 Size: 8 [unused]
// float4 gFlowParams; // Offset: 16 Size: 16 [unused]
// float4 gFlowParams2; // Offset: 32 Size: 16 [unused]
// float4 gWaterAmbientColor; // Offset: 48 Size: 16 [unused]
// float4 gWaterDirectionalColor; // Offset: 64 Size: 16 [unused]
// float4 gScaledTime; // Offset: 80 Size: 16
// float4 gOceanParams0; // Offset: 96 Size: 16 [unused]
// float4 gOceanParams1; // Offset: 112 Size: 16 [unused]
// row_major float4x4 gReflectionWorldViewProj;// Offset: 128 Size: 64 [unused]
// float4 gFogLight_Debugging; // Offset: 192 Size: 16 [unused]
// row_major float4x4 gRefractionWorldViewProj;// Offset: 208 Size: 64 [unused]
//
// }
//
// cbuffer water_common_locals
// {
//
// float RippleBumpiness; // Offset: 0 Size: 4 [unused]
// float RippleSpeed; // Offset: 4 Size: 4
// float RippleScale; // Offset: 8 Size: 4 [unused]
// float SpecularIntensity; // Offset: 12 Size: 4 [unused]
// float SpecularFalloff; // Offset: 16 Size: 4 [unused]
// float ParallaxIntensity; // Offset: 20 Size: 4 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// rage_matrices cbuffer NA NA cb1 1
// misc_globals cbuffer NA NA cb2 1
// lighting_globals cbuffer NA NA cb3 1
// water_globals cbuffer NA NA cb4 1
// water_common_locals cbuffer NA NA cb10 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyz 0 NONE float xyz
// COLOR 0 xyzw 1 NONE float y
// TEXCOORD 0 xy 2 NONE float xy
// NORMAL 0 xyz 3 NONE float xyz
// TANGENT 0 xyz 4 NONE float
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyzw 2 NONE float xyzw
// TEXCOORD 2 xy 3 NONE float xy
// TEXCOORD 3 xyz 4 NONE float xyz
// TEXCOORD 4 xyz 5 NONE float xyz
//
*/
/*
water_river.fxc_VS
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//
// Buffer Definitions:
//
// cbuffer rage_matrices
// {
//
// row_major float4x4 gWorld; // Offset: 0 Size: 64
// row_major float4x4 gWorldView; // Offset: 64 Size: 64 [unused]
// row_major float4x4 gWorldViewProj; // Offset: 128 Size: 64
// row_major float4x4 gViewInverse; // Offset: 192 Size: 64 [unused]
//
// }
//
// cbuffer water_globals
// {
//
// float2 gWorldBaseVS; // Offset: 0 Size: 8
// float4 gFlowParams; // Offset: 16 Size: 16 [unused]
// float4 gFlowParams2; // Offset: 32 Size: 16 [unused]
// float4 gWaterAmbientColor; // Offset: 48 Size: 16
// float4 gWaterDirectionalColor; // Offset: 64 Size: 16 [unused]
// float4 gScaledTime; // Offset: 80 Size: 16 [unused]
// float4 gOceanParams0; // Offset: 96 Size: 16 [unused]
// float4 gOceanParams1; // Offset: 112 Size: 16 [unused]
// row_major float4x4 gReflectionWorldViewProj;// Offset: 128 Size: 64 [unused]
// float4 gFogLight_Debugging; // Offset: 192 Size: 16 [unused]
// row_major float4x4 gRefractionWorldViewProj;// Offset: 208 Size: 64 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name Type Format Dim HLSL Bind Count
// ------------------------------ ---------- ------- ----------- -------------- ------
// FlowSampler sampler NA NA s2 1
// FlowSampler texture float4 2d t2 1
// rage_matrices cbuffer NA NA cb1 1
// water_globals cbuffer NA NA cb4 1
//
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyz 0 NONE float xyz
// COLOR 0 xyzw 1 NONE float xy
// TEXCOORD 0 xy 2 NONE float xy
// NORMAL 0 xyz 3 NONE float xyz
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position 0 xyzw 0 POS float xyzw
// TEXCOORD 0 xyzw 1 NONE float xyzw
// TEXCOORD 1 xyzw 2 NONE float xyzw
// TEXCOORD 2 xyzw 3 NONE float xyzw
// TEXCOORD 3 xyzw 4 NONE float xyzw
// TEXCOORD 4 xyzw 5 NONE float xyzw
//
vs_4_0
dcl_constantbuffer CB1[12], immediateIndexed
dcl_constantbuffer CB4[4], immediateIndexed
dcl_sampler s2, mode_default
dcl_resource_texture2d (float,float,float,float) t2
dcl_input v0.xyz
dcl_input v1.xy
dcl_input v2.xy
dcl_input v3.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_temps 2
mul r0.xyzw, v0.yyyy, cb1[9].xyzw
mad r0.xyzw, v0.xxxx, cb1[8].xyzw, r0.xyzw
mad r0.xyzw, v0.zzzz, cb1[10].xyzw, r0.xyzw
add r0.xyzw, r0.xyzw, cb1[11].xyzw
mov o0.xyzw, r0.xyzw
mul r0.xyz, r0.xwyx, l(0.500000, 0.500000, 0.500000, 0.000000)
mad o1.y, r0.w, l(0.500000), -r0.z
add o1.x, r0.y, r0.x
mov o4.w, r0.w
add r0.xyz, v0.xyzx, cb1[3].xyzx
add r1.xy, r0.xyxx, -cb4[0].xyxx
mad o1.zw, r1.xxxy, l(0.000000, 0.000000, 0.001953, 0.001953), l(0.000000, 0.000000, 0.001953, 0.001953)
mov o2.xyz, r0.xyzx
mul o3.zw, r0.xxxy, cb4[3].wwww
mov o2.w, v1.x
mov o3.xy, v2.xyxx
dp3 r0.x, v3.xyzx, v3.xyzx
rsq r0.x, r0.x
mul o4.xyz, r0.xxxx, v3.xyzx
sample_l r0.xyzw, v2.xyxx, t2.xyzw, s2, l(0.000000)
mad o5.zw, r0.xxxy, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
mov o5.x, v1.y
mov o5.y, l(0)
ret
// Approximately 24 instruction slots used
*/
-33
View File
@@ -1,33 +0,0 @@
#include "WaterVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(float3(0,0,1));
float3 btang = float3(1,0,0);// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GetWaterTexcoords(input.Texcoord0);
output.Colour0 = input.Colour0;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
output.Flow = GetWaterFlow(input.Texcoord0, input.Colour0);
return output;
}
-34
View File
@@ -1,34 +0,0 @@
#include "WaterVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = 0.5;// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GetWaterTexcoords(input.Texcoord0);
output.Colour0 = input.Colour0;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
output.Flow = GetWaterFlow(input.Texcoord0, input.Colour0);
return output;
}
-34
View File
@@ -1,34 +0,0 @@
#include "WaterVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float2 Texcoord0 : TEXCOORD0;
float4 Colour0 : COLOR0;
float4 Tangent : TANGENT;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = NormalTransform(input.Normal);
float3 btang = NormalTransform(input.Tangent.xyz);
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GetWaterTexcoords(input.Texcoord0);
output.Colour0 = input.Colour0;
output.Tangent = float4(btang, input.Tangent.w);
output.Bitangent = float4(cross(btang, bnorm) * input.Tangent.w, 0);
output.Flow = GetWaterFlow(input.Texcoord0, input.Colour0);
return output;
}
-32
View File
@@ -1,32 +0,0 @@
#include "WaterVS.hlsli"
struct VS_INPUT
{
float4 Position : POSITION;
float2 Texcoord0 : TEXCOORD0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
float3 opos = ModelTransform(input.Position.xyz);
float4 cpos = ScreenTransform(opos);
float3 bnorm = float3(0, 0, 1);// NormalTransform(float3(0, 0, 1));
float3 btang = float3(0,1,0);// NormalTransform(float3(1, 0, 0)); //no tangent to use on this vertex type...
float4 lightspacepos;
float shadowdepth = ShadowmapSceneDepth(opos, lightspacepos);
output.LightShadow = lightspacepos;
output.Shadows = float4(shadowdepth, 0,0,0);
output.Position = cpos;
output.CamRelPos = opos;
output.Normal = bnorm;
output.Texcoord0 = GetWaterTexcoords(input.Texcoord0);
output.Colour0 = 0.1;
output.Tangent = float4(btang, 1);
output.Bitangent = float4(cross(btang, bnorm), 0);
output.Flow = GetWaterFlow(input.Texcoord0, 1);
return output;
}
-14
View File
@@ -1,14 +0,0 @@
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Colour : COLOR0;
float CullValue : TEXCOORD0;
};
float4 main(VS_OUTPUT input) : SV_TARGET
{
if (input.CullValue < -0.18) discard;
return input.Colour;
}
-63
View File
@@ -1,63 +0,0 @@
cbuffer SceneVars : register(b0)
{
float4x4 ViewProj;
uint Mode; //0=Vertices, 1=Arc
float Size; //world units
float SegScale; //arc angle / number of segments
float SegOffset; //angle offset of arc
float3 CamRel; //center position
uint CullBack; //culls pixels behind 0,0,0
float4 Colour; //colour for arc
float3 Axis1; //axis 1 of arc
float WidgetPad2;
float3 Axis2; //axis 2 of arc
float WidgetPad3;
}
struct WidgetShaderVertex
{
float4 Position;
float4 Colour;
};
StructuredBuffer<WidgetShaderVertex> Vertices : register(t0);
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Colour : COLOR0;
float CullValue : TEXCOORD0;
};
VS_OUTPUT main(uint id : SV_VertexID)
{
float3 ipos;
float4 colour;
float cull;
if (Mode == 0) //Vertices
{
ipos = CamRel + Vertices[id].Position.xyz;
colour = Vertices[id].Colour;
cull = 1;
}
else //(Mode == 1) //Arc
{
float a = SegOffset + (id * SegScale);
float3 a1 = Axis1 * sin(a);
float3 a2 = Axis2 * cos(a);
ipos = CamRel + (a1 + a2) * Size;
colour = Colour;
cull = (CullBack == 1) ? ((length(CamRel) - length(ipos)) / Size) : 1;
}
float4 opos = mul(float4(ipos, 1), ViewProj);
VS_OUTPUT output;
output.Position = opos;
output.Colour = colour;
output.CullValue = cull;
return output;
}