43 lines
857 B
HLSL
43 lines
857 B
HLSL
#include "common.hlsl"
|
|
|
|
struct input
|
|
{
|
|
float3 pos : pos;
|
|
float2 uv : uv;
|
|
float4 color : color;
|
|
float3 normal : norm;
|
|
};
|
|
|
|
struct output
|
|
{
|
|
float4 pos : SV_POSITION;
|
|
float2 uv: TEXCOORD0;
|
|
float4 color : COLOR0;
|
|
float3 normal : NORMAL;
|
|
float3 gouraud : COLOR1;
|
|
};
|
|
|
|
float3 ps1_directional_light(float3 normal, float3 direction, float3 ambient, float3 lightcolor)
|
|
{
|
|
float NdotL = dot(normal, normalize(-direction));
|
|
NdotL = max(NdotL, 0.0f);
|
|
float3 color = ambient + lightcolor*NdotL;
|
|
return color;
|
|
}
|
|
|
|
output main(input i)
|
|
{
|
|
output o;
|
|
o.pos = mul(world_to_projection, float4(i.pos,1.0));
|
|
o.uv = i.uv;
|
|
o.color = i.color;
|
|
o.normal = i.normal;
|
|
|
|
float3 ambient = float3(0.2,0.2,0.2);
|
|
float3 lightdir = normalize(float3(1,1,1));
|
|
o.gouraud = ps1_directional_light(i.normal, lightdir, ambient, float3(1,1,1));
|
|
|
|
|
|
return o;
|
|
}
|