; Shadow Volume Vertex Shader for Weather effects ;Constants ;c0 - c3 = Projection Matrix ;c4 - c7 = View Matrix ;c8 = x,y offset, 1.0f,0.99f,0.0f ;c9 = area scale x,y,z,1.0f ;c10 = camera position ;c11 - c43 = Particle Positions ;inputs ;v0 = x,y,z,w ;This vertex ;v1 = diffuse ;Diffuse colour ;v2 = x offset, y offset, index; ;v3 = tex coords ; vertex shader version 1.1 vs.1.1 ; Add particle offset mov a0.x , v2.z add r0.xyz, v0.xyz, c[11 + a0.x] ; add camera add r0.xyz,r0.xyz,-c10.xyz ; modulo frc r2.xy, r0.xy mov r3.xy, r0.z frc r4.xy, r3.xy mov r2.zw, r4.xy ; centralize x and y to the screen add r2.xyz, r2.xyz, c8.x ;///////////////////////////////////////////////// ;///// * APPLY THE VIEW MATRIX * ////// ;///////////////////////////////////////////////// dp3 r1.x, r2, c[4] dp3 r1.y, r2, c[5] dp3 r1.z, r2, c[6] ;scale to area mul r1.xyz, r1.xyz, c9.x mov r1.w,c8.y ; r0.w = 1.0f; ;/////////////////////////// ;////// SCALE UP TRI /////// ;/////////////////////////// add r1.xy,r1.xy,v2.xy ;r0 = transformed vertex ;multiply by Projection matrix dp4 oPos.x, r1, c[0] dp4 oPos.y, r1, c[1] dp4 oPos.z, r1, c[2] dp4 oPos.w, r1, c[3] mov oT0.xy,v3.xy; mov oD0.xyzw,c8.w ;white colour