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タイルをレンダリングします。私の色のアルファは私の間違いで、私はそれを削除しました。私はあなたのコードを私と同じくらい正確に編集しました。これは完璧に機能し、シェイダー問題ではないと私は信じています。他のコードを投稿したいですか? これまでにありがとうございました! 編集:テクスチャを無効にしても問題は解決しません。 – TheDarkShado