diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /materialsystem/stdshaders/pyro_vision_vs20.fxc | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'materialsystem/stdshaders/pyro_vision_vs20.fxc')
| -rw-r--r-- | materialsystem/stdshaders/pyro_vision_vs20.fxc | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/pyro_vision_vs20.fxc b/materialsystem/stdshaders/pyro_vision_vs20.fxc new file mode 100644 index 0000000..bcd2f84 --- /dev/null +++ b/materialsystem/stdshaders/pyro_vision_vs20.fxc @@ -0,0 +1,185 @@ +// STATIC: "EFFECT" "0..3" +// STATIC: "VERTEXCOLOR" "0..1" +// STATIC: "HALFLAMBERT" "0..1" +// STATIC: "VERTEX_LIT" "0..1" +// STATIC: "FULLBRIGHT" "0..1" +// STATIC: "USE_STATIC_CONTROL_FLOW" "0..1" [vs20] +// STATIC: "BASETEXTURE2" "0..1" +// STATIC: "STRIPES" "0..1" +// STATIC: "STRIPES_USE_NORMAL2" "0..1" + +// DYNAMIC: "COMPRESSED_VERTS" "0..1" +// DYNAMIC: "SKINNING" "0..1" +// DYNAMIC: "DYNAMIC_LIGHT" "0..1" +// DYNAMIC: "STATIC_LIGHT" "0..1" +// DYNAMIC: "NUM_LIGHTS" "0..2" [vs20] + +// SKIP: ( STRIPES == 0 ) && ( STRIPES_USE_NORMAL2 == 1 ) +// SKIP: ( EFFECT == 2 || EFFECT == 3 ) && ( VERTEXCOLOR == 1 || HALFLAMBERT == 1 || VERTEX_LIT == 1 || FULLBRIGHT == 1 || USE_STATIC_CONTROL_FLOW == 1 || BASETEXTURE2 == 1 || STRIPES == 1 || STRIPES_USE_NORMAL2 == 1 ) +// SKIP: ( EFFECT == 2 || EFFECT == 3 ) && ( SKINNING == 1 || DYNAMIC_LIGHT == 1 || STATIC_LIGHT == 1 || NUM_LIGHTS != 0 ) +// SKIP: ( FULLBRIGHT == 1 ) && ( VERTEX_LIT == 0 || DYNAMIC_LIGHT == 1 || STATIC_LIGHT == 1 || NUM_LIGHTS != 0 ) + + +#include "common_vs_fxc.h" + + +static const bool g_bSkinning = SKINNING ? true : false; +static const bool g_bHalfLambert = HALFLAMBERT ? true : false; + + +const float4 g_vPyroParms1 : register( SHADER_SPECIFIC_CONST_0 ); + #define g_vStripeScale g_vPyroParms1.xyz + #define g_flUnused1 g_vPyroParms1.w + +#if EFFECT == 0 || EFFECT == 1 + +const float4 g_vPyroParms2 : register( SHADER_SPECIFIC_CONST_1 ); + #define g_vCanvasScale g_vPyroParms2.xyz + #define g_flUnused2 g_vPyroParms2.w + +#endif + +const float4 cBlendMaskTexCoordTransform[ 2 ] : register( SHADER_SPECIFIC_CONST_10 ); // not contiguous with the rest! + +struct VS_INPUT +{ + float4 vPos : POSITION; + float4 vBoneWeights : BLENDWEIGHT; + float4 vBoneIndices : BLENDINDICES; +#if ( VERTEX_LIT == 1 ) + float4 vNormal : NORMAL; +#endif + float2 vBaseTexCoord : TEXCOORD0; + float2 vLightmapTexCoord : TEXCOORD1; + float2 vLightmapTexCoordOffset : TEXCOORD2; + float3 vTangentS : TANGENT; + float3 vTangentT : BINORMAL; + float4 vColor : COLOR0; + float3 vSpecular : COLOR1; +}; + + +struct VS_OUTPUT +{ + float4 vProjPos : POSITION; + +#if EFFECT == 0 || EFFECT == 1 + + float4 vBaseAndSeamlessTexCoord : TEXCOORD0; +#if ( STRIPES == 1 ) + float2 vStripeSeamlessTexCoord : TEXCOORD1; +#endif +#if ( VERTEX_LIT == 0 ) + float2 vLightmapBlendTexCoord : TEXCOORD2; +#endif +#if BASETEXTURE2 == 1 + float3 vBlendFactor : TEXCOORD3; +#endif + float4 worldPos_projPosZ : TEXCOORD4; + float3 vWorldNormal : TEXCOORD5; + float4 vVertexColor : COLOR; + +#else + + float2 vBaseTexCoord : TEXCOORD0; + +#endif + +}; + + +VS_OUTPUT main( const VS_INPUT v ) +{ + VS_OUTPUT o; + +#if EFFECT == 0 || EFFECT == 1 + + float4 vObjPosition = v.vPos; + +#if ( VERTEX_LIT == 1 ) + float3 vObjNormal; + DecompressVertex_Normal( v.vNormal, vObjNormal ); +#else + float3 vObjNormal = float3( 0.0, 0.0, 1.0 ); +#endif + + float3 vWorldNormal, vWorldPos; + SkinPositionAndNormal( g_bSkinning, vObjPosition, vObjNormal, v.vBoneWeights, v.vBoneIndices, vWorldPos, vWorldNormal ); + + float4 vProjPos = mul( float4( vWorldPos, 1 ), cViewProj ); + o.vProjPos = vProjPos; + vProjPos.z = dot( float4( vWorldPos, 1 ), cViewProjZ ); + + o.worldPos_projPosZ = float4( vWorldPos, vProjPos.z ); + +#if 0 + if ( !g_bSkinning ) + { + vWorldNormal = vObjNormal; + } +#endif + vWorldNormal = normalize( vWorldNormal ); + o.vWorldNormal = vWorldNormal; + + o.vBaseAndSeamlessTexCoord.xy = v.vBaseTexCoord; + float flZFactor = vWorldPos.z * g_vCanvasScale.z; + o.vBaseAndSeamlessTexCoord.zw = float2( vWorldPos.x + flZFactor, vWorldPos.y - flZFactor ) * g_vCanvasScale.xy; + +#if ( STRIPES == 1 ) + + float3 vWorldStripeCoord = vWorldPos * g_vStripeScale; + o.vStripeSeamlessTexCoord.xy = vWorldStripeCoord.yz + vWorldStripeCoord.xz + vWorldStripeCoord.xy; + +#endif + + +#if VERTEX_LIT == 0 + + o.vLightmapBlendTexCoord.xy = v.vLightmapTexCoord; + +#endif + +#if BASETEXTURE2 == 1 + + o.vBlendFactor.x = dot( v.vBaseTexCoord, cBlendMaskTexCoordTransform[ 0 ] ) + cBlendMaskTexCoordTransform[ 0 ].w; + o.vBlendFactor.y = dot( v.vBaseTexCoord, cBlendMaskTexCoordTransform[ 1 ] ) + cBlendMaskTexCoordTransform[ 1 ].w; + o.vBlendFactor.z = v.vColor.a; + +#endif + +#if VERTEXCOLOR == 1 + + o.vVertexColor = v.vColor; + +#elif VERTEX_LIT == 1 && FULLBRIGHT == 0 + + bool bDynamicLight = DYNAMIC_LIGHT ? true : false; + bool bStaticLight = STATIC_LIGHT ? true : false; + + #if ( ( USE_STATIC_CONTROL_FLOW ) || defined ( SHADER_MODEL_VS_3_0 ) ) + { + o.vVertexColor.xyz = DoLighting( vWorldPos, vWorldNormal, v.vSpecular, bStaticLight, bDynamicLight, g_bHalfLambert ); + } + #else + { + o.vVertexColor.xyz = DoLightingUnrolled( vWorldPos, vWorldNormal, v.vSpecular, bStaticLight, bDynamicLight, g_bHalfLambert, NUM_LIGHTS ); + } + #endif + + o.vVertexColor.a = 1.0f; + +#else + + o.vVertexColor = 1.0f; + +#endif + +#else + + o.vProjPos = v.vPos; + o.vBaseTexCoord = v.vBaseTexCoord; + +#endif + + return o; +} |