This is the result I now get:
With that:
struct VertexShaderInput
{
float4 Position : SV_POSITION0;
float4 Normal : NORMAL0;
float4 Color : COLOR0;
};
struct VertexShaderOutput
{
float4 Position : SV_POSITION0;
float4 worldPos : TEXCOORD0;
nointerpolation float4 Color : COLOR0;
};
VertexShaderOutput TexturedVS(VertexShaderInput input)
{
VertexShaderOutput output;
float4 worldPosition = mul(input.Position, xWorld);
float4 viewPosition = mul(worldPosition, xView);
output.Position = mul(viewPosition, xProjection);
output.worldPos = worldPosition;
output.Color = input.Color;
return output;
}
float4 TexturedPS(VertexShaderOutput input) : COLOR0
{
float3 n = input.worldPos;
float3 dndx = ddx(n);
float3 dndy = ddy(n);
float3 norm = -normalize(cross(dndx, dndy));
float LightingFactor = dot(norm, -xLightDirection);
float4 output = input.Color;
output.rgb *= saturate(LightingFactor) + xAmbient;
return output;
}
The nointerpolation has still no effect as you see, am I doing something wrong?
