|
|
vs.1.1 ;------------------------------------------------------------------------------ ; $SHADER_SPECIFIC_CONST_0 = eyeball origin ; $SHADER_SPECIFIC_CONST_1 = eyeball up * 0.5 ; $SHADER_SPECIFIC_CONST_2 = iris projection U ; $SHADER_SPECIFIC_CONST_3 = iris projection V ; $SHADER_SPECIFIC_CONST_4 = glint projection U ; $SHADER_SPECIFIC_CONST_5 = glint projection V ;------------------------------------------------------------------------------
# STATIC: "HALF_LAMBERT" "0..1" # DYNAMIC: "DOWATERFOG" "0..1" # DYNAMIC: "LIGHT_COMBO" "0..21" # DYNAMIC: "SKINNING" "0..1"
#include "macros.vsh"
;------------------------------------------------------------------------------ ; Vertex blending (whacks r1-r7, positions in r7) ;------------------------------------------------------------------------------ &AllocateRegister( \$worldPos ); &SkinPosition( $worldPos );
;------------------------------------------------------------------------------ ; 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
;------------------------------------------------------------------------------ ; Normal is based on vertex position ;------------------------------------------------------------------------------ &AllocateRegister( \$worldNormal ); &AllocateRegister( \$normalDotUp );
sub $worldNormal, $worldPos, $SHADER_SPECIFIC_CONST_0 ; Normal = (Pos - Eye origin) dp3 $normalDotUp, $worldNormal, $SHADER_SPECIFIC_CONST_1 ; Normal -= 0.5f * (Normal dot Eye Up) * Eye Up mul $normalDotUp, $normalDotUp, $cHalf mad $worldNormal, -$normalDotUp, $SHADER_SPECIFIC_CONST_1, $worldNormal
&FreeRegister( \$normalDotUp );
; normalize the normal &Normalize( $worldNormal );
;------------------------------------------------------------------------------ ; Lighting ;------------------------------------------------------------------------------ &DoLighting( $worldPos, $worldNormal );
&FreeRegister( \$worldNormal ); ;------------------------------------------------------------------------------ ; Fog ;------------------------------------------------------------------------------
&CalcFog( $worldPos, $projPos );
&FreeRegister( \$projPos );
;------------------------------------------------------------------------------ ; Texture coordinates ; Texture 0 is the base texture ; Texture 1 is a planar projection used for the iris ; Texture 2 is a planar projection used for the glint ;------------------------------------------------------------------------------
mov oT0, $vTexCoord0 dp4 oT1.x, $SHADER_SPECIFIC_CONST_2, $worldPos dp4 oT1.y, $SHADER_SPECIFIC_CONST_3, $worldPos dp4 oT2.x, $SHADER_SPECIFIC_CONST_4, $worldPos dp4 oT2.y, $SHADER_SPECIFIC_CONST_5, $worldPos
&FreeRegister( \$worldPos );
|