Added options for sorting transparent objects (port of PR 63040)
This commit is contained in:
parent
db6976eed4
commit
6f4f38db07
16 changed files with 119 additions and 10 deletions
|
|
@ -830,8 +830,18 @@ void RenderForwardClustered::_fill_render_list(RenderListType p_render_list, con
|
|||
for (int i = 0; i < (int)p_render_data->instances->size(); i++) {
|
||||
GeometryInstanceForwardClustered *inst = static_cast<GeometryInstanceForwardClustered *>((*p_render_data->instances)[i]);
|
||||
|
||||
Vector3 support_min = inst->transformed_aabb.get_support(-near_plane.normal);
|
||||
inst->depth = near_plane.distance_to(support_min);
|
||||
Vector3 center = inst->transform.origin;
|
||||
if (p_render_data->scene_data->cam_orthogonal) {
|
||||
if (inst->use_aabb_center) {
|
||||
center = inst->transformed_aabb.get_support(-near_plane.normal);
|
||||
}
|
||||
inst->depth = near_plane.distance_to(center) - inst->sorting_offset;
|
||||
} else {
|
||||
if (inst->use_aabb_center) {
|
||||
center = inst->transformed_aabb.position + (inst->transformed_aabb.size * 0.5);
|
||||
}
|
||||
inst->depth = p_render_data->scene_data->cam_transform.origin.distance_to(center) - inst->sorting_offset;
|
||||
}
|
||||
uint32_t depth_layer = CLAMP(int(inst->depth * 16 / z_max), 0, 15);
|
||||
|
||||
uint32_t flags = inst->base_flags; //fill flags if appropriate
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue