You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Merge pull request #111054 from Kaleb-Reid/fix-render-list
Sort render list correctly in RD renderers
This commit is contained in:
@@ -841,7 +841,7 @@ void RenderForwardClustered::_fill_instance_data(RenderListType p_render_list, i
|
|||||||
|
|
||||||
RenderElementInfo &element_info = rl->element_info[p_offset + i];
|
RenderElementInfo &element_info = rl->element_info[p_offset + i];
|
||||||
|
|
||||||
element_info.value = uint32_t(surface->sort.sort_key1 & 0xFFF);
|
element_info.value = uint32_t(surface->sort.sort_key2 & 0x0FFF00000000);
|
||||||
|
|
||||||
if (cant_repeat) {
|
if (cant_repeat) {
|
||||||
prev_surface = nullptr;
|
prev_surface = nullptr;
|
||||||
|
|||||||
@@ -494,6 +494,10 @@ private:
|
|||||||
uint64_t sort_key2;
|
uint64_t sort_key2;
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
|
uint64_t geometry_id : 32;
|
||||||
|
uint64_t material_id : 32;
|
||||||
|
|
||||||
|
uint64_t shader_id : 32;
|
||||||
uint64_t lod_index : 8;
|
uint64_t lod_index : 8;
|
||||||
uint64_t uses_softshadow : 1;
|
uint64_t uses_softshadow : 1;
|
||||||
uint64_t uses_projector : 1;
|
uint64_t uses_projector : 1;
|
||||||
@@ -502,10 +506,6 @@ private:
|
|||||||
uint64_t depth_layer : 4;
|
uint64_t depth_layer : 4;
|
||||||
uint64_t surface_index : 8;
|
uint64_t surface_index : 8;
|
||||||
uint64_t priority : 8;
|
uint64_t priority : 8;
|
||||||
uint64_t geometry_id : 32;
|
|
||||||
|
|
||||||
uint64_t material_id : 32;
|
|
||||||
uint64_t shader_id : 32;
|
|
||||||
};
|
};
|
||||||
} sort;
|
} sort;
|
||||||
|
|
||||||
|
|||||||
@@ -1973,7 +1973,7 @@ void RenderForwardMobile::_fill_instance_data(RenderListType p_render_list, uint
|
|||||||
RenderElementInfo &element_info = rl->element_info[p_offset + i];
|
RenderElementInfo &element_info = rl->element_info[p_offset + i];
|
||||||
|
|
||||||
// Sets lod_index and uses_lightmap at once.
|
// Sets lod_index and uses_lightmap at once.
|
||||||
element_info.value = uint32_t(surface->sort.sort_key1 & 0x1FF);
|
element_info.value = uint32_t(surface->sort.sort_key2 & 0x01FF00000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_update_buffer) {
|
if (p_update_buffer) {
|
||||||
|
|||||||
@@ -474,16 +474,16 @@ protected:
|
|||||||
uint64_t sort_key2;
|
uint64_t sort_key2;
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
|
uint64_t geometry_id : 32;
|
||||||
|
uint64_t material_id : 32;
|
||||||
|
|
||||||
|
uint64_t shader_id : 32;
|
||||||
uint64_t lod_index : 8;
|
uint64_t lod_index : 8;
|
||||||
uint64_t uses_lightmap : 1;
|
uint64_t uses_lightmap : 1;
|
||||||
uint64_t pad : 3;
|
uint64_t pad : 3;
|
||||||
uint64_t depth_layer : 4;
|
uint64_t depth_layer : 4;
|
||||||
uint64_t surface_index : 8;
|
uint64_t surface_index : 8;
|
||||||
uint64_t priority : 8;
|
uint64_t priority : 8;
|
||||||
uint64_t geometry_id : 32;
|
|
||||||
|
|
||||||
uint64_t material_id : 32;
|
|
||||||
uint64_t shader_id : 32;
|
|
||||||
};
|
};
|
||||||
} sort;
|
} sort;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user