From 0ede28b03dacc739ab46b6e29f002d37a7637544 Mon Sep 17 00:00:00 2001 From: RaveYard <29225776+MrRaveYard@users.noreply.github.com> Date: Wed, 2 Apr 2025 12:57:31 +0200 Subject: [PATCH] Workaround for a strange GLSL bug It seems like GLSL compiler is incorrectly inlining 'texelFetch(int index, ...)' and thus implicitly casting sampler2D to int --- wadsrc/static/shaders/scene/frag_main.glsl | 2 +- wadsrc/static/shaders/scene/layout_shared.glsl | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/wadsrc/static/shaders/scene/frag_main.glsl b/wadsrc/static/shaders/scene/frag_main.glsl index fde890486..9a0f94600 100644 --- a/wadsrc/static/shaders/scene/frag_main.glsl +++ b/wadsrc/static/shaders/scene/frag_main.glsl @@ -43,7 +43,7 @@ void main() { if (USE_DEPTHFADETHRESHOLD) { - float behindFragmentDepth = texelFetch(LinearDepth, uViewOffset + ivec2(gl_FragCoord.xy), 0).r; + float behindFragmentDepth = texelFetchSampler2D(LinearDepth, uViewOffset + ivec2(gl_FragCoord.xy), 0).r; material.Base.a *= clamp((behindFragmentDepth - pixelpos.w) / uDepthFadeThreshold, 0.0, 1.0); } diff --git a/wadsrc/static/shaders/scene/layout_shared.glsl b/wadsrc/static/shaders/scene/layout_shared.glsl index 6f2cd4fb5..b7f7a4e24 100644 --- a/wadsrc/static/shaders/scene/layout_shared.glsl +++ b/wadsrc/static/shaders/scene/layout_shared.glsl @@ -121,3 +121,8 @@ vec4 texelFetch(int index, ivec2 P, int lod) { return texelFetch(textures[nonuniformEXT(uTextureIndex + index)], P, lod); } + +vec4 texelFetchSampler2D(sampler2D s, ivec2 P, int lod) +{ + return texelFetch(s, P, lod); +}