vs.1.1 # DYNAMIC: "DOWATERFOG" "0..1" #include "macros.vsh" ;------------------------------------------------------------------------------ ; Vertex blending ;------------------------------------------------------------------------------ &AllocateRegister( \$worldPos ); dp4 $worldPos.x, $vPos, $cModel0 dp4 $worldPos.y, $vPos, $cModel1 dp4 $worldPos.z, $vPos, $cModel2 mov $worldPos.w, $cOne ;------------------------------------------------------------------------------ ; Transform the position from world to proj space ;------------------------------------------------------------------------------ &AllocateRegister( \$projPos ); dp4 $projPos.x, $vPos, $cModelViewProj0 dp4 $projPos.y, $vPos, $cModelViewProj1 dp4 $projPos.z, $vPos, $cModelViewProj2 dp4 $projPos.w, $vPos, $cModelViewProj3 mov oPos, $projPos ;------------------------------------------------------------------------------ ; Fog ;------------------------------------------------------------------------------ &CalcFog( $worldPos, $projPos ); &FreeRegister( \$worldPos ); ;------------------------------------------------------------------------------ ; Texture coordinates ;------------------------------------------------------------------------------ mov oT0.xy, $vTexCoord0.xy ; special case perspective correct texture projection so that the texture fits exactly on the screen mul $projPos.y, $projPos.y, $SHADER_SPECIFIC_CONST_0.w add $projPos.xy, $projPos.xy, $projPos.w mul $projPos.xy, $projPos.xy, $cHalf mul $projPos.xy, $projPos.xy, $SHADER_SPECIFIC_CONST_0.xy mad $projPos.xy, $projPos.w, $SHADER_SPECIFIC_CONST_1.xy, $projPos.xy mov oT1.xy, $projPos.xy mov oT1.z, $projPos.w mov oT1.w, $projPos.w &FreeRegister( \$projPos ); ;------------------------------------------------------------------------------ ; Modulation color ;------------------------------------------------------------------------------ mov oD0, $vColor