Hi all
I'm learning OpenGL and I'm trying to write a shader for light attenuation and it's working ok except for a small problem as you can see in the image I'm getting circular strips
Here is my fragment shader:
#version 400
smooth in vec4 diffuseColor;
smooth in vec3 normal;
smooth in vec4 cameraSpacePosition;
out vec4 outputColor;
uniform vec3 pointLightCamPos;
uniform vec4 lightIntensity;
uniform vec4 ambientIntensity;
uniform float lightAttenuation;
uniform bool bUseRSquare;
vec4 ApplyLightIntensity(in vec3 cameraSpacePos, out vec3 lightDirection)
{
vec3 lightDifference = pointLightCamPos - cameraSpacePos;
float lightDistanceSqr = dot(lightDifference, lightDifference);
lightDirection = lightDifference * inversesqrt(lightDistanceSqr);
float distFactor = bUseRSquare ? lightDistanceSqr : sqrt(lightDistanceSqr);
return lightIntensity * (1 / ( 1.0 + lightAttenuation * distFactor));
}
void main()
{
vec3 lightDir = vec3(0.0);
vec4 attenIntensity = ApplyLightIntensity(vec3(cameraSpacePosition), lightDir);
float cosAngIncidence = max(dot(normalize(normal), lightDir), 0);
outputColor = (diffuseColor * ambientIntensity) +
(diffuseColor * attenIntensity * cosAngIncidence);
}
Is this a normal behavior? or How I can fix it?