From 6e6d59b2e701b1a9871aa8c1fb5ea4b2ca0131bd Mon Sep 17 00:00:00 2001 From: clayjohn Date: Sun, 21 Dec 2025 22:31:06 -0800 Subject: [PATCH] Avoid singularity during sky filtering by using a different method of calculating the orthonormal basis --- .../renderer_rd/shaders/effects/octmap_roughness.glsl | 3 ++- .../renderer_rd/shaders/effects/octmap_roughness_raster.glsl | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/servers/rendering/renderer_rd/shaders/effects/octmap_roughness.glsl b/servers/rendering/renderer_rd/shaders/effects/octmap_roughness.glsl index 7b910d5840..f9c35ef5aa 100644 --- a/servers/rendering/renderer_rd/shaders/effects/octmap_roughness.glsl +++ b/servers/rendering/renderer_rd/shaders/effects/octmap_roughness.glsl @@ -29,7 +29,8 @@ void main() { float solid_angle_texel = 4.0 * M_PI / float(params.dest_size * params.dest_size); float roughness2 = params.roughness * params.roughness; float roughness4 = roughness2 * roughness2; - vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + + vec3 UpVector = abs(N.y) < 0.999 ? vec3(0.0, 1.0, 0.0) : vec3(0.0, 0.0, 1.0); mat3 T; T[0] = normalize(cross(UpVector, N)); T[1] = cross(N, T[0]); diff --git a/servers/rendering/renderer_rd/shaders/effects/octmap_roughness_raster.glsl b/servers/rendering/renderer_rd/shaders/effects/octmap_roughness_raster.glsl index e5a0efc407..d74199ea4b 100644 --- a/servers/rendering/renderer_rd/shaders/effects/octmap_roughness_raster.glsl +++ b/servers/rendering/renderer_rd/shaders/effects/octmap_roughness_raster.glsl @@ -43,7 +43,8 @@ void main() { float solid_angle_texel = 4.0 * M_PI / (params.size * params.size); float roughness2 = params.roughness * params.roughness; float roughness4 = roughness2 * roughness2; - vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + + vec3 UpVector = abs(N.y) < 0.999 ? vec3(0.0, 1.0, 0.0) : vec3(0.0, 0.0, 1.0); mat3 T; T[0] = normalize(cross(UpVector, N)); T[1] = cross(N, T[0]);