Faster exit from _cull_canvas_item if alpha is zero

This commit is contained in:
Mika Viskari 2023-11-25 21:52:08 +02:00
parent 1ba920fada
commit 39423d99fa

View File

@ -239,6 +239,19 @@ void RendererCanvasCull::_cull_canvas_item(Item *p_canvas_item, const Transform2
ci->children_order_dirty = false;
}
if (ci->use_parent_material && p_material_owner) {
ci->material_owner = p_material_owner;
} else {
p_material_owner = ci;
ci->material_owner = nullptr;
}
Color modulate = ci->modulate * p_modulate;
if (modulate.a < 0.007) {
return;
}
Rect2 rect = ci->get_rect();
if (ci->visibility_notifier) {
@ -256,19 +269,6 @@ void RendererCanvasCull::_cull_canvas_item(Item *p_canvas_item, const Transform2
Rect2 global_rect = xform.xform(rect);
global_rect.position += p_clip_rect.position;
if (ci->use_parent_material && p_material_owner) {
ci->material_owner = p_material_owner;
} else {
p_material_owner = ci;
ci->material_owner = nullptr;
}
Color modulate(ci->modulate.r * p_modulate.r, ci->modulate.g * p_modulate.g, ci->modulate.b * p_modulate.b, ci->modulate.a * p_modulate.a);
if (modulate.a < 0.007) {
return;
}
int child_item_count = ci->child_items.size();
Item **child_items = ci->child_items.ptrw();