!!ARBvp1.0 # road vertex shader PARAM WORLD_VIEW_PROJECTION[4] = { program.env[0..3] }; PARAM WORLD_VIEW[4] = { program.env[4..7] }; PARAM WORLD[4] = { program.env[8..11] }; PARAM SUN_DIRECTION = program.env[12]; #(.w = intensity) PARAM SUN_ANGLE = program.env[14]; PARAM SUN_COLOR = program.env[15]; PARAM TERRAIN_REFLECTANCE = program.env[13]; PARAM BETA_1 = program.env[30]; PARAM BETA_2 = program.env[29]; PARAM BETA_DASH_1 = program.env[27]; PARAM BETA_DASH_2 = program.env[26]; PARAM BETA_1_PLUS_2 = program.env[24]; PARAM ONE_OVER_BETA_1_PLUS_2 = program.env[23]; PARAM HG = program.env[28]; # = 1-g^2, 1+g, 2g, 0 PARAM CONSTANTS = program.env[31]; # = 1.0, log_2 e, 0.5, 0 PARAM TERM_MULTIPLIERS = program.env[25]; # = frac_ext, frac_ins. PARAM ZERO = program.env[20]; PARAM ONE = program.env[21]; PARAM SHADOWSHARPNESS = program.env[32]; PARAM AMBIENT = program.env[33]; # Ambient term to add to the rendering PARAM INSCATTERINGMULTIPLIER = program.env[34]; # Term to attenuate the inscattering PARAM BASE_TEX_PROJECTION = program.env[16]; PARAM DETAIL_TEX_PROJECTION = program.env[17]; PARAM CLOUD_TEX_PROJECTION_0 = program.env[18]; PARAM CLOUD_TEX_PROJECTION_1 = program.env[19]; PARAM EYE_POSITION = program.env[22]; PARAM SPECULAR_POWER = program.env[35]; PARAM DIFFUSE_COLOUR = program.env[36]; PARAM SPECULAR_COLOUR = program.env[37]; PARAM CARCOLOR0 = program.env[38]; PARAM CARCOLOR1 = program.env[39]; PARAM CARCOLOR2 = program.env[40]; ATTRIB iPos = vertex.position; ATTRIB iNormal = vertex.normal; ATTRIB iTexCoord0 = vertex.texcoord[0]; ATTRIB iTexCoord1 = vertex.texcoord[1]; ATTRIB iTexCoord2 = vertex.texcoord[2]; OUTPUT oPos = result.position; OUTPUT oD0 = result.color.primary; OUTPUT oD1 = result.color.secondary; OUTPUT oT0 = result.texcoord[0]; OUTPUT oT1 = result.texcoord[1]; OUTPUT oT2 = result.texcoord[2]; OUTPUT oT3 = result.texcoord[3]; TEMP r0; # Transformation. DP4 oPos.x, iPos, WORLD_VIEW_PROJECTION[0]; DP4 oPos.y, iPos, WORLD_VIEW_PROJECTION[1]; DP4 oPos.z, iPos, WORLD_VIEW_PROJECTION[2]; DP4 oPos.w, iPos, WORLD_VIEW_PROJECTION[3]; # Texture Coordinates. # Cloud texture MAD oT0.xy, iPos.xzzz, CLOUD_TEX_PROJECTION_0.xyyy, CLOUD_TEX_PROJECTION_0.zwww; # Use the angle of the sun and the distance from the eye to # modulate the texture colour SUB r0, ONE.xyzw, iNormal.x; MUL oD0, r0, SUN_ANGLE.x; END