GLSL中的怪异照明

时间:2017-01-25 10:20:39

标签: java glsl lighting

我正在研究GLSL中的2D照明,但它似乎有一个我无法修复的错误。 我的灯光产生了这些奇怪的层次"当场景中有多个灯光时重叠。 You can see the problem around the lights

我的着色器代码非常简单:

uniform vec2 lightLocation[6];
uniform vec3 lightColor[6];
uniform float lightRadius[6];
uniform sampler2D texture0;

void main() {

    float distance;
    float attenuation;
    vec4 color;
    vec4 finalColor = vec4(0, 0, 0, 1);
    for (int i = 0; i < 6; ++i) {
        distance = length(lightLocation[i] - gl_FragCoord.xy);
        attenuation = 4.0 / (1.0 + 10.0*(distance / lightRadius[i]));
        color = vec4(attenuation, attenuation, attenuation, pow(attenuation, 3)) * vec4(lightColor[i], 1);
        finalColor = finalColor + color;
    }

    gl_FragColor = finalColor * texture(texture0, gl_TexCoord[0].st);
}

是否有人知道导致此问题的原因是什么?

1 个答案:

答案 0 :(得分:1)

原来问题不在着色器中(感谢Zouch使用Shadertoy搞清楚)。

我不小心把灯拉了两次,而不是一次。