;------------------------------------------------------------------------------ ; Road shader with 1 projected texture ;------------------------------------------------------------------------------ #include "RoadEval.h" #define LIGHT_LOCAL r8 #define LIGHT_1 r9 #define LIGHT_2 r10 #define LIGHT_TOTAL r11 #define SHADER_TEXMAT_0 79 xvs.1.1 RoadEval r8 ; World, view, projection dph oPos.x, r8, c[92] dph oPos.y, r8, c[93] dph oPos.z, r8, c[94] dph oPos.w, r8, c[95] ; TEXTURE COORDINATES dp4 R_TEMP.x, c[SHADER_TEXMAT_0+0], r12 dp4 R_TEMP.y, c[SHADER_TEXMAT_0+1], r12 mov R_TEMP.w, c[SHADER_ZERO_REGISTER].y mov oT0, R_TEMP mov oT1, R_TEMP ; BUMPMAPPING dp3 LIGHT_LOCAL.x, BUMP_S.xyz, c[SHADER_LIGHTDIR1_REGISTER] dp3 LIGHT_LOCAL.y, BUMP_T.xyz, c[SHADER_LIGHTDIR1_REGISTER] dp3 LIGHT_LOCAL.z, NORMAL.xyz, c[SHADER_LIGHTDIR1_REGISTER] ; Normalize the light vector ;dp3 LIGHT_LOCAL.w, LIGHT_LOCAL, LIGHT_LOCAL ;rsq LIGHT_LOCAL.w, LIGHT_LOCAL.w ;mul LIGHT_LOCAL, LIGHT_LOCAL, LIGHT_LOCAL.w ; Scale to 0-1 add LIGHT_LOCAL, LIGHT_LOCAL, c[SHADER_ZERO_REGISTER].y mul oD0, LIGHT_LOCAL, c[SHADER_ZERO_REGISTER].w ; OTHER 3 LIGHTS IN SCENE PLUS AMBIENT ; Put the rest of the lights in oD1 mov LIGHT_TOTAL, c[SHADER_AMBIENTLIGHT_REGISTER] dp3 LIGHT_1, NORMAL, c[SHADER_LIGHTDIR2_REGISTER] ; Diffuse Light 2 max LIGHT_1, LIGHT_1,c[SHADER_ZERO_REGISTER].x mad LIGHT_TOTAL,LIGHT_1,c[SHADER_LIGHTCOL2_REGISTER], LIGHT_TOTAL dp3 LIGHT_2, NORMAL, c[SHADER_LIGHTDIR3_REGISTER] ; Diffuse Light 3 max LIGHT_2, LIGHT_2,c[SHADER_ZERO_REGISTER].x mad LIGHT_TOTAL,LIGHT_2,c[SHADER_LIGHTCOL3_REGISTER], LIGHT_TOTAL min oD1, LIGHT_TOTAL, c[SHADER_ZERO_REGISTER].y ; Set alpha to 1 mov oD0.w, c[SHADER_ZERO_REGISTER].y