vs_2_0 dcl_position v0 dcl_normal v1 dcl_texcoord0 v3 dcl_tangent v7 dcl_binormal v8 dcl_texcoord4 v9 #include "..\..\VertexShader.h" ;------------------------------------------------------------------------------ ; Geometry transform ;------------------------------------------------------------------------------ ; Copy model-space geometry to pipeline registers mov pPos, vPos mov pNormal, vNormal ; Copy model-space basis vectors to pipeline registers mov pBasisU, vBasisU mov pBasisV, vBasisV ; Transform position to projection space m4x4 OPOS, vPos, C_PROJECTION_MATRIX FIXUP_OPOS #include "..\..\VertexShader.h" ;------------------------------------------------------------------------------ ; Defines ;------------------------------------------------------------------------------ #define C_EYE_POSITION c16 ;------------------------------------------------------------------------------ ; Lighting calculation ;------------------------------------------------------------------------------ ; Initialize diffuse color mov oD0.xyz, C_MATERIAL_COLOR ; Compute the normalized vertex to eye vector add rVertexToEye, C_EYE_POSITION, -pPos NormalizeVector(rVertexToEye) ; Store 1 - E-dot-N in diffuse alpha dp3 rTemp.x, pNormal, rVertexToEye add oD0.w, C_ONE.x, -rTemp.x #include "..\..\VertexShader.h" ;------------------------------------------------------------------------------ ; Fog calculation ;------------------------------------------------------------------------------ ; Calculate fog factor and copy to fog register CalculateLayeredFog(pPos, oFog) #include "..\..\VertexShader.h" ;------------------------------------------------------------------------------ ; Defines ;------------------------------------------------------------------------------ #define C_BASIS_TRANSFORM_1 c10 #define C_BASIS_TRANSFORM_2 c11 #define C_BASIS_TRANSFORM_3 c12 #define C_EYE_TRANSFORM_1 c13 #define C_EYE_TRANSFORM_2 c14 #define C_EYE_TRANSFORM_3 c15 ;------------------------------------------------------------------------------ ; Texture coordinates ;------------------------------------------------------------------------------ ; Base texture is the normal map mul r0, vTexCoords, C_TEXCOORD_DECOMPRESS add oT0.x, r0.x, C_BASIS_TRANSFORM_1.w add oT0.y, r0.y, C_BASIS_TRANSFORM_2.w ; Rotate the basis vectors into cubemap space dp3 oT1.x, pBasisU, C_BASIS_TRANSFORM_1 dp3 oT1.y, pBasisV, C_BASIS_TRANSFORM_1 dp3 oT1.z, pNormal, C_BASIS_TRANSFORM_1 dp3 oT2.x, pBasisU, C_BASIS_TRANSFORM_2 dp3 oT2.y, pBasisV, C_BASIS_TRANSFORM_2 dp3 oT2.z, pNormal, C_BASIS_TRANSFORM_2 dp3 oT3.x, pBasisU, C_BASIS_TRANSFORM_3 dp3 oT3.y, pBasisV, C_BASIS_TRANSFORM_3 dp3 oT3.z, pNormal, C_BASIS_TRANSFORM_3 ; Store the eye vector in the texture coordinate w for the pixel shader dp4 oT1.w, pPos, C_EYE_TRANSFORM_1 dp4 oT2.w, pPos, C_EYE_TRANSFORM_2 dp4 oT3.w, pPos, C_EYE_TRANSFORM_3