diff options
Diffstat (limited to 'mp/src/materialsystem/stdshaders/depthwrite_ps2x.fxc')
| -rw-r--r-- | mp/src/materialsystem/stdshaders/depthwrite_ps2x.fxc | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/mp/src/materialsystem/stdshaders/depthwrite_ps2x.fxc b/mp/src/materialsystem/stdshaders/depthwrite_ps2x.fxc new file mode 100644 index 00000000..1baabcf3 --- /dev/null +++ b/mp/src/materialsystem/stdshaders/depthwrite_ps2x.fxc @@ -0,0 +1,44 @@ +// STATIC: "COLOR_DEPTH" "0..1" + +// DYNAMIC: "ALPHACLIP" "0..1" + +const float g_AlphaThreshold : register( c0 ); + +const float2 g_vNearFarPlanes : register( c1 ); + #define g_flNearPlane g_vNearFarPlanes.x + #define g_flFarPlane g_vNearFarPlanes.y + +struct PS_INPUT +{ +#if ALPHACLIP + float2 texCoord0 : TEXCOORD0; +#endif + +#if COLOR_DEPTH + float4 vWorldPos_projPosZ : TEXCOORD1; +#endif +}; + +sampler BaseTextureSampler : register( s0 ); + +float4 main( PS_INPUT i ) : COLOR +{ + float4 color = float4( 1, 0, 0, 1 ); // opaque alpha....the color doesn't matter for this shader + +#if ALPHACLIP + color = tex2D( BaseTextureSampler, i.texCoord0 ); + + clip( color.a - g_AlphaThreshold ); + +#endif + +#if ( COLOR_DEPTH == 1 ) + + return float4( i.vWorldPos_projPosZ.w / g_flFarPlane, 0.0, 0.0, 1.0 ); + +#else + + return color; + +#endif +} |