void HemisphericLighting_VP( float4 inPosition : POSITION, float4 inNormal : NORMAL, float4 inTex : TEXCOORD0, uniform float4x4 worldviewproj, uniform float4 skyColor, uniform float4 groundColor, out float4 outPos : POSITION, out float4 outDiff : TEXCOORD0, out float2 outTex : TEXCOORD1) { // Transform the position and output the texture coordinate outPos = mul(worldviewproj, inPosition); outTex = inTex; // Determine our blending (sky/ground) factor float factor = dot(inNormal, float3(0,-1,0))+1.0/2.0; // Determine the final lighting color outDiff = lerp(skyColor, groundColor, factor); outDiff.a = 1.0; } void HemisphericLighting_FP( float4 inDiff : TEXCOORD0, float2 inTex : TEXCOORD1, uniform sampler2D texture, out float4 outColor : COLOR) { outColor = inDiff * tex2D(texture, inTex); }