67 lines
1.2 KiB
HLSL
67 lines
1.2 KiB
HLSL
matrix World;
|
|
matrix View;
|
|
matrix Projection;
|
|
|
|
float4 vLightDir[2];
|
|
float4 vLightColor[2];
|
|
float4 vOutputColor;
|
|
|
|
struct VS_INPUT
|
|
{
|
|
float4 Pos : POSITION;
|
|
float4 Normal : NORMAL;
|
|
};
|
|
|
|
struct PS_INPUT
|
|
{
|
|
float4 Pos : SV_POSITION;
|
|
float4 Normal : TEXCOORD0;
|
|
};
|
|
|
|
PS_INPUT VS(VS_INPUT input)
|
|
{
|
|
PS_INPUT output = (PS_INPUT)0;
|
|
output.Pos = mul(input.Pos, World);
|
|
output.Pos = mul(output.Pos, View);
|
|
output.Pos = mul(output.Pos, Projection);
|
|
output.Normal = mul(input.Normal, World);
|
|
return output;
|
|
}
|
|
|
|
float4 PS(PS_INPUT input) : SV_Target
|
|
{
|
|
float4 finalColor = 0;
|
|
|
|
for (int i = 0; i < 2; i++) {
|
|
finalColor += saturate(dot((float3)vLightDir[i], input.Normal) * vLightColor[i]);
|
|
}
|
|
finalColor.a = 1;
|
|
|
|
return finalColor;
|
|
}
|
|
|
|
float4 PSSolid(PS_INPUT input) : SV_Target
|
|
{
|
|
return vOutputColor;
|
|
}
|
|
|
|
technique10 Render
|
|
{
|
|
pass P0
|
|
{
|
|
SetVertexShader(CompileShader(vs_4_0, VS()));
|
|
SetGeometryShader(NULL);
|
|
SetPixelShader(CompileShader(ps_4_0, PS()));
|
|
}
|
|
}
|
|
|
|
technique10 RenderLight
|
|
{
|
|
pass P0
|
|
{
|
|
SetVertexShader(CompileShader(vs_4_0, VS()));
|
|
SetGeometryShader(NULL);
|
|
SetPixelShader(CompileShader(ps_4_0, PSSolid()));
|
|
}
|
|
}
|