// Bump Mapping FX // [ArbVpTechnique, pass 2] // // Profile: ARBVP1 // Options: position invariant // Copyright 2003 by Marco Jez struct Vertex_data { float4 Position : POSITION; // vertex position float4 Normal : NORMAL; // vertex normal }; struct Fragment_data { float4 Position : POSITION; float4 SelfShadowing : COLOR0; }; Fragment_data main(Vertex_data input) { Fragment_data output; // compute eye-space normal vector float4 viewNormal = mul(glstate.matrix.invtrans.modelview[0], input.Normal); // compute diffuse shadowing term float Lz = dot(viewNormal.xyz, glstate.light[0].position.xyz); output.SelfShadowing.xyz = min(8 * max(Lz, 0), 1); output.SelfShadowing.w = 1; // transform position to projection space output.Position = mul(glstate.matrix.mvp, input.Position); return output; }