Skip to content

Commit 5021b3e

Browse files
committed
Sort render list correctly in RD renderers
1 parent b7c5fca commit 5021b3e

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ void RenderForwardClustered::_fill_instance_data(RenderListType p_render_list, i
841841

842842
RenderElementInfo &element_info = rl->element_info[p_offset + i];
843843

844-
element_info.value = uint32_t(surface->sort.sort_key1 & 0xFFF);
844+
element_info.value = uint32_t(surface->sort.sort_key2 & 0x0FFF00000000);
845845

846846
if (cant_repeat) {
847847
prev_surface = nullptr;

servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,10 @@ class RenderForwardClustered : public RendererSceneRenderRD {
494494
uint64_t sort_key2;
495495
};
496496
struct {
497+
uint64_t geometry_id : 32;
498+
uint64_t material_id : 32;
499+
500+
uint64_t shader_id : 32;
497501
uint64_t lod_index : 8;
498502
uint64_t uses_softshadow : 1;
499503
uint64_t uses_projector : 1;
@@ -502,10 +506,6 @@ class RenderForwardClustered : public RendererSceneRenderRD {
502506
uint64_t depth_layer : 4;
503507
uint64_t surface_index : 8;
504508
uint64_t priority : 8;
505-
uint64_t geometry_id : 32;
506-
507-
uint64_t material_id : 32;
508-
uint64_t shader_id : 32;
509509
};
510510
} sort;
511511

servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1973,7 +1973,7 @@ void RenderForwardMobile::_fill_instance_data(RenderListType p_render_list, uint
19731973
RenderElementInfo &element_info = rl->element_info[p_offset + i];
19741974

19751975
// Sets lod_index and uses_lightmap at once.
1976-
element_info.value = uint32_t(surface->sort.sort_key1 & 0x1FF);
1976+
element_info.value = uint32_t(surface->sort.sort_key2 & 0x01FF00000000);
19771977
}
19781978

19791979
if (p_update_buffer) {

servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -474,16 +474,16 @@ class RenderForwardMobile : public RendererSceneRenderRD {
474474
uint64_t sort_key2;
475475
};
476476
struct {
477+
uint64_t geometry_id : 32;
478+
uint64_t material_id : 32;
479+
480+
uint64_t shader_id : 32;
477481
uint64_t lod_index : 8;
478482
uint64_t uses_lightmap : 1;
479483
uint64_t pad : 3;
480484
uint64_t depth_layer : 4;
481485
uint64_t surface_index : 8;
482486
uint64_t priority : 8;
483-
uint64_t geometry_id : 32;
484-
485-
uint64_t material_id : 32;
486-
uint64_t shader_id : 32;
487487
};
488488
} sort;
489489

0 commit comments

Comments
 (0)