Skip to content

Commit e504943

Browse files
committed
Merge pull request #110184 from Namey5/vertex-lighting-issue
Fix rounding error in clustered vertex light culling
2 parents 4676d73 + 60a7bed commit e504943

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

servers/rendering/renderer_rd/shaders/forward_clustered/scene_forward_clustered.glsl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,9 @@ void vertex_shader(vec3 vertex_input,
529529
vec2 clip_pos = clamp((gl_Position.xy / gl_Position.w) * 0.5 + 0.5, 0.0, 1.0);
530530
#endif
531531

532-
uvec2 cluster_pos = uvec2(clip_pos / scene_data.screen_pixel_size) >> implementation_data.cluster_shift;
532+
uvec2 screen_size = uvec2(1.0 / scene_data.screen_pixel_size);
533+
uvec2 screen_pixel = clamp(uvec2(clip_pos * vec2(screen_size)), uvec2(0), screen_size - uvec2(1));
534+
uvec2 cluster_pos = screen_pixel >> implementation_data.cluster_shift;
533535
uint cluster_offset = (implementation_data.cluster_width * cluster_pos.y + cluster_pos.x) * (implementation_data.max_cluster_element_count_div_32 + 32);
534536
uint cluster_z = uint(clamp((-vertex_interp.z / scene_data.z_far) * 32.0, 0.0, 31.0));
535537

0 commit comments

Comments
 (0)