vs_2_0 dcl_position v0 dcl_normal v1 dcl_color v2 dcl_texcoord0 v3 dcl_texcoord1 v4 dcl_texcoord2 v5 dcl_texcoord6 v14 dcl_texcoord7 v15 #include "../../VertexShader.h" ;------------------------------------------------------------------------------ ; Geometry transform ;------------------------------------------------------------------------------ ; Calculate bone indices mad r7, vIndices, c23.x, c23.y ; Initialize w-coordinate mov r0.w, C_ONE ; Calculate the second bone weight from the first sub r8.x, C_ONE, vWeights.x ; Skin position by bone 0 MOVA a0.x, r7.x m4x3 r0.xyz, vPos, c[a0.x] mul pPos, r0, vWeights.x ; Skin position by bone 1 MOVA a0.x, r7.y m4x3 r0.xyz, vPos, c[a0.x] mad pPos, r0, r8.x, pPos ; Skin normal by bone 0 MOVA a0.x, r7.x m3x3 pNormal.xyz, vNormal, c[a0.x] NormalizeVector(pNormal) ; Transform skinned position to projection space m4x4 OPOS, pPos, C_PROJECTION_MATRIX FIXUP_OPOS #include "..\..\VertexShader.h" ;------------------------------------------------------------------------------ ; Diffuse color ;------------------------------------------------------------------------------ ; Combine vertex color and material color mul oD0, vDiffuse, C_MATERIAL_COLOR #include "..\..\VertexShader.h" ;------------------------------------------------------------------------------ ; Fog calculation ;------------------------------------------------------------------------------ ; Calculate fog factor and copy to fog register CalculateLayeredFog(pPos, oFog) #include "..\..\VertexShader.h" ;------------------------------------------------------------------------------ ; Texture coordinates ;------------------------------------------------------------------------------ ; Copy 3 sets of texture coordinates mul oT0.xy, vTexCoords, C_TEXCOORD_DECOMPRESS mul oT1.xy, vTexCoords1, C_TEXCOORD_DECOMPRESS mul oT2.xy, vTexCoords2, C_TEXCOORD_DECOMPRESS ; Detail map coordinates mov r0, C_DETAIL_FACTOR mul r0, r0, C_TEXCOORD_DECOMPRESS mul oT3.xy, vTexCoords, r0