When I assign SurfaceOutput.Normal, I am getting strange behavior with both the lightDir and viewDir. It doesnt matter what I assign Normal to, the output is always the same. The expected result happens when Normal is not assigned. To test, I used a sphere with normals pointing inward, black Albedo, and do the following in the lighting function:
(the image on the left is without setting Normal, the right sets it to half3(0,0,1), all images are taken from (0,0,0) with rotation (0,0,0))
half4 light4 = half4(0,0,0, s.Alpha);
half sun = saturate(dot(viewDir, lightDir) * -1);
light4.rgb = pow(sun, 10).rrr;
return light4;
half4 light4 = half4(0,0,0, s.Alpha);
half sun = saturate(dot(viewDir, lightDir) * -1);
half sunPow = pow(sun, 10);
half sphere = sunPow - 1;
sphere = sqrt((sphere * sphere)) * 100;
sphere = (1 - sphere);
sphere = saturate(sphere);
light4.rgb = sphere.rrr;
return light4;
the dot on the right is a diamond right on a vertex, and from most angles it is not visible