Float4x4 matviewprojection; Float4 light_position; Float4 light_attenuation; Float4 light_color; Float4 ambient_color; Float4 vviewposition; Float Alpha; Struct vs_input { Float4 position: position0; Float3 normal: normal0; Float2 texcoord: texcoord0; }; Struct vs_output { Float4 position: position0; Float2 texcoord: texcoord0; Float4 color: color0; }; Float4 pointlighting (float3 position, float3 normal , Float3 eyedir, float4 Ambient , Float3 lightpos, float3 lightatt, float4 lightcolor) { Float3 lightdir = normalize (position-lightpos ); Float3 Dis = distance (Position, lightpos ); Float disatt = saturate (1/(lightatt. x + lightatt. y * DIS + lightatt. z * Dis )); Float angleatt = saturate (-lightdir * normal ); Float3 reflectdir = normalize (reflect (lightdir, normal )); Float specularatt = POW (saturate (reflectdir * eyedir), alpha );
Return ambient + lightcolor * disatt * (angleatt + specularatt ); } Vs_output vs_main (vs_input input) { Vs_output output; Output. Position = MUL (input. Position, matviewprojection ); Output. texcoord = input. texcoord; Float3 eyedir = normalize (vviewposition-input. position ); Output. Color = pointlighting (input. Position, input. Normal , Eyedir, ambient_color , Light_position, light_attenuation, light_color ); Return (output );
} |