Listing 3
void VertexProgram(float4 position : POSITION,
float3 normal : NORMAL,
out float4 oPosition : POSITION,
out float diffuse : TEXCOORD0,
uniform float3 lightPos,
uniform float4x4 modelView,
uniform float4x4 modelViewProj)
{
oPosition = mul(modelViewProj, position);
float4 tempPosition = mul(modelView, position);
float4 normal2 = float4(normal.x, normal.y, normal.z, 0.0);
normal2 = mul(modelView, normal2);
float3 N = normalize(normal2.xyz);
float3 L = normalize(lightPos - tempPosition.xyz);
diffuse = max(dot(N, L), 0);
}
void FragmentProgram(float diffuse : TEXCOORD0,
out float4 color : COLOR,
uniform float4 Kd,
uniform sampler1D diffuseTex)
{
diffuse = tex1D(diffuseTex, diffuse).x;
color = Kd * diffuse;
}