1!!ARBvp1.0 2 3ATTRIB iPos = vertex.position; 4ATTRIB iNormal = vertex.normal; 5 6PARAM mvp[4] = { state.matrix.mvp }; 7PARAM mvIT[4] = { state.matrix.modelview.invtrans }; 8 9PARAM lightDir = state.light[0].position; 10PARAM halfDir = state.light[0].half; 11 12PARAM UNIFORMS = program.local[0]; 13 14TEMP normal, dots; 15 16OUTPUT oPos = result.position; 17OUTPUT oDots = result.texcoord[0]; 18 19# Transform the vertex to clip coordinates. 20DP4 oPos.x, mvp[0], iPos; 21DP4 oPos.y, mvp[1], iPos; 22DP4 oPos.z, mvp[2], iPos; 23DP4 oPos.w, mvp[3], iPos; 24 25# Transform the normal to eye coordinates. 26DP3 normal.x, mvIT[0], iNormal; 27DP3 normal.y, mvIT[1], iNormal; 28DP3 normal.z, mvIT[2], iNormal; 29 30# Compute diffuse and specular dot products and clamp them. 31DP3 dots.x, normal, lightDir; 32MAX oDots.x, dots.x, 0.0; 33 34DP3 dots.y, normal, halfDir; 35MAX oDots.y, dots.y, 0.0; 36 37END