mirror of
https://github.com/godotengine/godot.git
synced 2025-11-01 06:01:14 +00:00
back buffer copy node, to improve on texscreen()
back buffer copy node and respective demo
This commit is contained in:
parent
9f88a40e9f
commit
650e13f3cd
20 changed files with 272 additions and 12 deletions
|
|
@ -3765,6 +3765,27 @@ void VisualServerRaster::canvas_item_set_z_as_relative_to_parent(RID p_item, boo
|
|||
|
||||
}
|
||||
|
||||
void VisualServerRaster::canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2& p_rect) {
|
||||
|
||||
VS_CHANGED;
|
||||
CanvasItem *canvas_item = canvas_item_owner.get( p_item );
|
||||
ERR_FAIL_COND(!canvas_item);
|
||||
if (bool(canvas_item->copy_back_buffer!=NULL) !=p_enable) {
|
||||
if (p_enable) {
|
||||
canvas_item->copy_back_buffer = memnew( Rasterizer::CanvasItem::CopyBackBuffer );
|
||||
} else {
|
||||
memdelete(canvas_item->copy_back_buffer);
|
||||
canvas_item->copy_back_buffer=NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (p_enable) {
|
||||
canvas_item->copy_back_buffer->rect=p_rect;
|
||||
canvas_item->copy_back_buffer->full=p_rect==Rect2();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void VisualServerRaster::canvas_item_set_use_parent_material(RID p_item, bool p_enable) {
|
||||
|
||||
VS_CHANGED;
|
||||
|
|
@ -6766,8 +6787,12 @@ void VisualServerRaster::_render_canvas_item(CanvasItem *p_canvas_item,const Mat
|
|||
_render_canvas_item(child_items[i],xform,p_clip_rect,opacity,p_z,z_list,z_last_list,(CanvasItem*)ci->final_clip_owner,p_material_owner);
|
||||
}
|
||||
|
||||
if (ci->copy_back_buffer) {
|
||||
|
||||
if ((!ci->commands.empty() && p_clip_rect.intersects(global_rect)) || ci->vp_render) {
|
||||
ci->copy_back_buffer->screen_rect = xform.xform(ci->copy_back_buffer->rect).clip(p_clip_rect);
|
||||
}
|
||||
|
||||
if ((!ci->commands.empty() && p_clip_rect.intersects(global_rect)) || ci->vp_render || ci->copy_back_buffer) {
|
||||
//something to draw?
|
||||
ci->final_transform=xform;
|
||||
ci->final_opacity=opacity * ci->self_opacity;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue