!!ARBfp1.0 # # Demonstrates basic vertex/fragment shader communication. # # Orion Sky Lawlor, olawlor@acm.org, 2005/2/7 (Public Domain) # # Vertex/fragment communication protocol ATTRIB world =fragment.texcoord[4]; # World-coordinates position ATTRIB worldN =fragment.texcoord[5]; # World-coordinates normal (interpolated) ATTRIB albedo =fragment.texcoord[6]; # Material "diffuse color" ATTRIB viewdir=fragment.texcoord[7]; # Viewing direction (points toward eye) # Regular diffuse lighting: normal dot light TEMP diffuse; DP3_SAT diffuse, worldN, state.light[0].position; ADD diffuse,diffuse,0.2; # state.light[0].ambient; MUL diffuse,diffuse,albedo; # Specular lighting: normal dot halfway vector TEMP half,specular; ADD half,viewdir,state.light[0].position; TEMP L; DP4 L.x,half,half; # Normalize half RSQ L,L.x; MUL half,half,L; DP3 specular,worldN,half; POW specular,specular.r,state.material.shininess.r; ADD result.color, diffuse, specular; END