From b3162d8f6ef07dd32adbc860d72e26c8c3c0ae2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20Br=C3=BCckner?= Date: Sat, 10 Jul 2021 22:41:19 +0200 Subject: [PATCH] Fix visual artifacts caused by invalid gbuffer2 on OpenGL --- .../deferred_light/deferred_light.frag.glsl | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Shaders/deferred_light/deferred_light.frag.glsl b/Shaders/deferred_light/deferred_light.frag.glsl index fe81fad3..fbe01534 100644 --- a/Shaders/deferred_light/deferred_light.frag.glsl +++ b/Shaders/deferred_light/deferred_light.frag.glsl @@ -21,7 +21,9 @@ uniform sampler2D gbufferD; uniform sampler2D gbuffer0; uniform sampler2D gbuffer1; +#ifdef _gbuffer2 uniform sampler2D gbuffer2; +#endif #ifdef _VoxelAOvar uniform sampler3D voxels; @@ -206,7 +208,9 @@ void main() { vec3 v = normalize(eye - p); float dotNV = max(dot(n, v), 0.0); +#ifdef _gbuffer2 vec4 g2 = textureLod(gbuffer2, texCoord, 0.0); +#endif #ifdef _MicroShadowing occspec.x = mix(1.0, occspec.x, dotNV); // AO Fresnel @@ -221,14 +225,16 @@ void main() { vec3 envl = shIrradiance(n, shirr); - if (g2.b < 0.5) { - envl = envl; - } else { - envl = vec3(1.0); - } + #ifdef _gbuffer2 + if (g2.b < 0.5) { + envl = envl; + } else { + envl = vec3(1.0); + } + #endif #ifdef _EnvTex - envl /= PI; + envl /= PI; #endif #else vec3 envl = vec3(1.0);