diff --git a/leenkx/Shaders/ssrefr_pass/ssrefr_pass.frag.glsl b/leenkx/Shaders/ssrefr_pass/ssrefr_pass.frag.glsl index b4c3c38..52c6176 100644 --- a/leenkx/Shaders/ssrefr_pass/ssrefr_pass.frag.glsl +++ b/leenkx/Shaders/ssrefr_pass/ssrefr_pass.frag.glsl @@ -57,17 +57,14 @@ vec4 binarySearch(vec3 dir) { } vec4 rayCast(vec3 dir) { - float ddepth; - dir *= ss_refractionRayStep; - for (int i = 0; i < maxSteps; i++) { - hitCoord += dir; - ddepth = getDeltaDepth(hitCoord); - if (ddepth > 0.0) - return binarySearch(dir); - } - // No hit — fallback to projecting the ray to UV space - vec2 fallbackUV = getProjectedCoord(hitCoord); - return vec4(fallbackUV, 0.0, 0.5); // We set .w lower to indicate fallback + float ddepth; + dir *= ss_refractionRayStep; + for (int i = 0; i < maxSteps; i++) { + hitCoord += dir; + ddepth = getDeltaDepth(hitCoord); + if (ddepth > 0.0) return binarySearch(dir); + } + return vec4(getProjectedCoord(hitCoord), 0.0, 1.0); } void main() { @@ -77,7 +74,7 @@ void main() { float ior = gr.x; float opac = gr.y; float d = textureLod(gbufferD, texCoord, 0.0).r * 2.0 - 1.0; - if (d == 0.0 || opac == 1.0 || ior == 1.0) { + if (d == 0.0 || d == 1.0 || opac == 1.0 || ior == 1.0) { fragColor.rgb = textureLod(tex1, texCoord, 0.0).rgb; return; }