;/************************************************** ; * File: Transform.txt Vertex Shader ; * ; * Author: Ben Cohen (01/06/2001) ; * modified by Ben Weston to compute the correct fog value for table fog ; * ; * Description: Standard transformation vertex shader ; * ; *************************************************/ ;/************************************************* ; * Constants: ; * ; * c0 - constants vector {0,1.0,0.5,0.25} ; * c2-c5 - World->screen transformation matrix. ; * ; * Streams: ; * v0 - Position vector {x,y,z,w} ; * v1 - Vertex colour ; * v2 - Texture co-ords {u,v} ; * ; ************************************************/ xvs.1.0 #pragma screenspace #define R_EYE_POSITION r0 #define R_EYE_DISTANCE r2 #include "Shader_def.h" /* Fog calculation */ //BenW..dp4 R_EYE_POSITION.x, v0, c[CV_WORLDVIEW_0] //BenW..dp4 R_EYE_POSITION.y, v0, c[CV_WORLDVIEW_1] //BenW..dp4 R_EYE_DISTANCE.z, v0, c[CV_WORLDVIEW_2] //BenW..dp4 R_EYE_POSITION.w, v0, c[CV_WORLDVIEW_3] ; transform position dp4 oPos.x, v0, c[CV_WORLDVIEWPROJ_0] //BenW..dp3 R_EYE_DISTANCE, R_EYE_POSITION, R_EYE_POSITION dp4 oPos.y, v0, c[CV_WORLDVIEWPROJ_1] //BenW..rsq R_EYE_DISTANCE, R_EYE_DISTANCE dp4 oPos.z, v0, c[CV_WORLDVIEWPROJ_2] //BenW..rcp R_EYE_DISTANCE, R_EYE_DISTANCE dp4 oPos.w, v0, c[CV_WORLDVIEWPROJ_3] ; Copy vertex colour mov oD0, v1 ; Copy texture co-ords across ;mov oT0, v2 add oT0, v2, c[CV_TEXTURETRANS_20] mul oPos.xyz, r12, c-38 +rcc r1.x, r12.w /* Fog */ //BenW..mad oFog.x, -R_EYE_DISTANCE.y, c[CV_FOG_DATA].z, c[CV_FOG_DATA].y dp4 oFog.x, v0, c[CV_WORLDVIEW_2] mad oPos.xyz, r12, r1.x, c-37 ;/***************/ ;/* END OF FILE */ ;/***************/