summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-01-11 17:37:45 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-01-11 17:37:45 +0100
commit9e967ebdf90e32fb93a7895a19a4111e72d9c660 (patch)
tree46c7953279d86116f55fa3b70bc3f939a1fa6b50 /modules
parent3dcf9059ae375f0cbee472d9dbc2f15aaa27e216 (diff)
parentcaef2be758e52ecbe5234d2e5fe941619cd1c4f8 (diff)
downloadredot-engine-9e967ebdf90e32fb93a7895a19a4111e72d9c660.tar.gz
Merge pull request #86583 from reduz/lightmapper-dda-fix
Tiny fix for lightmapper DDA
Diffstat (limited to 'modules')
-rw-r--r--modules/lightmapper_rd/lm_compute.glsl11
1 files changed, 10 insertions, 1 deletions
diff --git a/modules/lightmapper_rd/lm_compute.glsl b/modules/lightmapper_rd/lm_compute.glsl
index a2a480043a..21e039396d 100644
--- a/modules/lightmapper_rd/lm_compute.glsl
+++ b/modules/lightmapper_rd/lm_compute.glsl
@@ -264,7 +264,16 @@ uint trace_ray(vec3 p_from, vec3 p_to, bool p_any_hit, out float r_distance, out
break;
}
- bvec3 mask = lessThanEqual(side.xyz, min(side.yzx, side.zxy));
+ // There should be only one axis updated at a time for DDA to work properly.
+ bvec3 mask = bvec3(true, false, false);
+ float m = side.x;
+ if (side.y < m) {
+ m = side.y;
+ mask = bvec3(false, true, false);
+ }
+ if (side.z < m) {
+ mask = bvec3(false, false, true);
+ }
side += vec3(mask) * delta;
icell += ivec3(vec3(mask)) * step;
iters++;