!!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
