diff options
Diffstat (limited to 'servers/rendering/renderer_canvas_cull.cpp')
-rw-r--r-- | servers/rendering/renderer_canvas_cull.cpp | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/servers/rendering/renderer_canvas_cull.cpp b/servers/rendering/renderer_canvas_cull.cpp index 701b4da8f8..22a9a4632d 100644 --- a/servers/rendering/renderer_canvas_cull.cpp +++ b/servers/rendering/renderer_canvas_cull.cpp @@ -278,6 +278,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) { @@ -346,19 +359,6 @@ void RendererCanvasCull::_cull_canvas_item(Item *p_canvas_item, const Transform2 } 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(); @@ -612,8 +612,9 @@ void RendererCanvasCull::canvas_item_set_visibility_layer(RID p_item, uint32_t p uint32_t RendererCanvasCull::canvas_item_get_visibility_layer(RID p_item) { Item *canvas_item = canvas_item_owner.get_or_null(p_item); - if (!canvas_item) + if (!canvas_item) { return 0; + } return canvas_item->visibility_layer; } |