CHAPTER 6 ■ ADDING LIGHT TO YOUR SCENE IN XNA 3.0
547
This is your complete vertex shader:
VSVertexToPixel VSVertexShader(float4 inPos: POSITION0, float3 inNormal: NORMAL0)
{
VSVertexToPixel Output = (VSVertexToPixel)0;
float4x4 preViewProjection = mul(xView, xProjection);
float4x4 preWorldViewProjection = mul(xWorld, preViewProjection);
Output.Position = mul(inPos, preWorldViewProjection);
float3 normal = normalize(inNormal);
float3x3 rotMatrix = (float3x3)xWorld;
float3 rotNormal = mul(normal, rotMatrix);
float3 final3DPosition = mul(inPos, xWorld);
float3 lightDirection = final3DPosition - xLightPosition;
lightDirection = normalize(lightDirection);
Output.LightFactor = dot(rotNormal, -lightDirection);
return Output;
}
6-7. Add HLSL Per-Pixel ...