0
GLSL에서 2D 조명에 대해 작업하고 있지만 해결할 수없는 버그가있는 것 같습니다. 내 조명은 장면에 조명이 여러 개있을 때 겹치는 이상한 "레이어"를 만듭니다. GLSL의 이상한 조명
내 쉐이더 코드는 매우 간단하다 :
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);
}
합니까의 ayone이 문제를 일으키는 지 알아?
주어진 거리 후에 감쇠를 클램핑 해보십시오. – Zouch
실제로 문제를 재현 할 수 없지만 [shadertoy의 similair] (https://www.shadertoy.com/view/MlySzd)를 시도했지만 여기에 표시되는 것과 같은 것이 없습니다. 'texture0'에 무엇이 있습니까? 그리고 왜 당신의 색상으로 알파를 사용합니까? 블렌딩을하고 있습니까? – Zouch
@Zouch 감사의 말을 전하고 문제를 재현 해 주셔서 감사합니다. Texture0은 내 게임 타일을 포함하는 스프라이트 시트입니다. 스프라이트 시트를 바인딩하고 프레임 당 ~ 200 개의 타일을 렌더링합니다. 내 색의 알파는 내 실수 였고 나는 그것을 제거했습니다. 귀하의 코드를 광산과 동일하게 편집했으며 완벽하게 작동하여 이것이 Shader Problem이 아니라고 생각하게합니다. 다른 코드를 올리시겠습니까? 지금까지 도와 주셔서 감사합니다. 편집 : 텍스처를 사용하지 않으면 문제가 해결되지 않습니다. – TheDarkShado