diff options
Diffstat (limited to 'materialsystem/stdshaders/JellyFish.vsh')
| -rw-r--r-- | materialsystem/stdshaders/JellyFish.vsh | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/materialsystem/stdshaders/JellyFish.vsh b/materialsystem/stdshaders/JellyFish.vsh new file mode 100644 index 0000000..0ad7e1a --- /dev/null +++ b/materialsystem/stdshaders/JellyFish.vsh @@ -0,0 +1,82 @@ +vs.1.1 + +# DYNAMIC: "DOWATERFOG" "0..1" +# DYNAMIC: "SKINNING" "0..1" + +#include "macros.vsh" + +;------------------------------------------------------------------------------ +; Vertex blending +;------------------------------------------------------------------------------ + +$cView0 = $SHADER_SPECIFIC_CONST_0; +$cView1 = $SHADER_SPECIFIC_CONST_1; +$cView2 = $SHADER_SPECIFIC_CONST_2; + +&AllocateRegister( \$worldPos ); +&AllocateRegister( \$worldNormal ); +&SkinPositionAndNormal( $worldPos, $worldNormal ); + +;------------------------------------------------------------------------------ +; Transform the position from world to view space +;------------------------------------------------------------------------------ + +&AllocateRegister( \$projPos ); + +dp4 $projPos.x, $worldPos, $cViewProj0 +dp4 $projPos.y, $worldPos, $cViewProj1 +dp4 $projPos.z, $worldPos, $cViewProj2 +dp4 $projPos.w, $worldPos, $cViewProj3 +mov oPos, $projPos + +;------------------------------------------------------------------------------ +; Fog +;------------------------------------------------------------------------------ + +&CalcFog( $worldPos, $projPos ); + +&FreeRegister( \$projPos ); + +&AllocateRegister( \$viewNormal ); + +; Transform the normal from object to view space +dp3 $viewNormal.x, $worldNormal, $cView0 +dp3 $viewNormal.y, $worldNormal, $cView1 +dp3 $viewNormal.z, $worldNormal, $cView2 + +&FreeRegister( \$worldNormal ); +; normalize normal (do we need to do this?) +&Normalize( $viewNormal ); + + +&AllocateRegister( \$viewPos ); + +; Transform position from object to view space +dp4 $viewPos.x, $worldPos, $cView0 +dp4 $viewPos.y, $worldPos, $cView1 +dp4 $viewPos.z, $worldPos, $cView2 + +&FreeRegister( \$worldPos ); +&AllocateRegister( \$vertToEye ); + +; vector from point to eye in view space +mov $vertToEye.xyz, -$viewPos + +&FreeRegister( \$viewPos ); + +; normalize +&Normalize( $vertToEye ); + +dp3 $viewNormal.x, $vertToEye, $viewNormal +add $viewNormal.x, $viewNormal.x, $SHADER_SPECIFIC_CONST_5 ; FIXME + +&FreeRegister( \$vertToEye ); + +;------------------------------------------------------------------------------ +; Texture coordinates +;------------------------------------------------------------------------------ + +mov oT0, $viewNormal +mov oT1, $vTexCoord0 + +&FreeRegister( \$viewNormal ); |