902 Chapter 20 Special Effects Using Shaders
20.2.2 Directional Lights
The vertex program for a single directional light is
void v_L1d
(
in float4 kModelPosition : POSITION,
in float3 kModelNormal : NORMAL,
out float4 kClipPosition : POSITION,
out float4 kVertexColor : COLOR,
uniform float4x4 WVPMatrix,
uniform float3 CameraModelPosition,
uniform float3 MaterialEmissive,
uniform float3 MaterialAmbient,
uniform float4 MaterialDiffuse,
uniform float4 MaterialSpecular,
uniform float3 Light0ModelDirection,
uniform float3 Light0Ambient,
uniform float3 Light0Diffuse,
uniform float3 Light0Specular,
uniform float4 Light0Attenuation)
{
// Transform the position from model space to clip space.
kClipPosition = mul(kModelPosition,WVPMatrix);
float fDiff, fSpec;
GetDirectionalLightFactors((float3)kModelPosition,kModelNormal, ...