Skip to content

Commit

Permalink
additionally check priority
Browse files Browse the repository at this point in the history
  • Loading branch information
mortarroad committed Mar 18, 2021
1 parent 34473ca commit d71bd37
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions drivers/gles3/rasterizer_scene_gles3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4642,24 +4642,27 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const

// first chunk_start
int chunk_split = render_list.max_elements - render_list.alpha_element_count;
bool chunk_directional_add = false; // use directional add in this chunk

while (chunk_split < render_list.max_elements) {
int chunk_start = chunk_split;
chunk_directional_add = !chunk_directional_add;
bool first = true;
bool chunk_directional_add = false;
uint32_t chunk_priority = 0;

// determine chunk end
for (; chunk_split < render_list.max_elements; chunk_split++) {
bool directional_add = _element_needs_directional_add(render_list.elements[chunk_split]);
if (directional_add != chunk_directional_add) {
uint32_t priority = uint32_t(render_list.elements[chunk_split]->sort_key >> RenderList::SORT_KEY_PRIORITY_SHIFT);
if (first) {
chunk_directional_add = directional_add;
chunk_priority = priority;
first = false;
}
if ((directional_add != chunk_directional_add) || (priority != chunk_priority)) {
break;
}
}

if (chunk_start == chunk_split) {
continue; // empty chunk
}

if (chunk_directional_add) {
for (int i = 0; i < state.directional_light_count; i++) {
directional_light = directional_lights[i];
Expand Down

0 comments on commit d71bd37

Please sign in to comment.