|
Blender V5.0
|
Go to the source code of this file.
Classes | |
| struct | GPUAttachment |
| struct | GPULoadStore |
Namespaces | |
| namespace | blender |
| namespace | blender::gpu |
Enumerations | |
| enum | GPUFrameBufferBits { GPU_COLOR_BIT = (1 << 0) , GPU_DEPTH_BIT = (1 << 1) , GPU_STENCIL_BIT = (1 << 2) } |
Variables | |
| static constexpr int | GPU_MAX_VIEWPORTS = 16 |
Free | |
| #define | GPU_FRAMEBUFFER_FREE_SAFE(fb) |
| void | GPU_framebuffer_free (blender::gpu::FrameBuffer *fb) |
Advanced binding control | |
| #define | NULL_ATTACHMENT_COLOR {0.0, 0.0, 0.0, 0.0} |
| #define | NULL_LOAD_STORE {GPU_LOADACTION_DONT_CARE, GPU_STOREACTION_DONT_CARE, NULL_ATTACHMENT_COLOR} |
| #define | GPU_framebuffer_bind_ex(_fb, ...) |
| #define | GPU_framebuffer_subpass_transition(_fb, ...) |
| void | GPU_framebuffer_bind_loadstore (blender::gpu::FrameBuffer *fb, const GPULoadStore *load_store_actions, uint load_store_actions_len) |
| void | GPU_framebuffer_subpass_transition_array (blender::gpu::FrameBuffer *fb, const GPUAttachmentState *attachment_states, uint attachment_len) |
Binding | |
| enum | GPUBackBuffer { GPU_BACKBUFFER_LEFT = 0 , GPU_BACKBUFFER_RIGHT } |
| void | GPU_backbuffer_bind (GPUBackBuffer back_buffer_type) |
| void | GPU_framebuffer_bind (blender::gpu::FrameBuffer *fb) |
| void | GPU_framebuffer_bind_no_srgb (blender::gpu::FrameBuffer *fb) |
| void | GPU_framebuffer_restore () |
A GPUFramebuffer is a wrapper for a frame-buffer object (FBO) from the underlying graphic API.
A GPUFramebuffer is limited to one context and thus cannot be shared across different contexts. In the case this is needed, one must recreate the same GPUFramebuffer in each context.
Note that actual FBO creation & config is deferred until GPU_framebuffer_bind or GPU_framebuffer_check_valid is called. This means the context the GPUFramebuffer is bound with is the one active when GPU_framebuffer_bind is called.
When a gpu::Texture is attached to a GPUFramebuffer a reference is created. Deleting either does not require any unbinding.
A GPUOffScreen is a convenience type that holds a GPUFramebuffer and its associated gpu::Textures. It is useful for quick drawing surface configuration.
Definition in file GPU_framebuffer.hh.
| #define GPU_ATTACHMENT_LEAVE |
Leave currently bound texture in this slot. DEPRECATED: Specify all textures for clarity.
Definition at line 265 of file GPU_framebuffer.hh.
| #define GPU_ATTACHMENT_NONE |
Empty bind point.
Definition at line 258 of file GPU_framebuffer.hh.
Referenced by blender::draw::overlay::Resources::acquire(), blender::draw::gpencil::Instance::acquire_resources(), blender::gpu::FrameBuffer::attachment_remove(), blender::gpu::GLFrameBuffer::attachment_set_loadstore_op(), blender::image_engine::ScreenSpaceDrawingMode::begin_sync(), blender::gpu::GLFrameBuffer::bind(), blender::workbench::AntiAliasingPass::draw(), blender::workbench::DofPass::draw(), blender::workbench::Instance::draw(), blender::workbench::OpaquePass::draw(), blender::workbench::OutlinePass::draw(), blender::workbench::TransparentDepthPass::draw(), blender::workbench::TransparentPass::draw(), blender::workbench::VolumePass::draw(), blender::eevee::VolumeModule::draw_resolve(), DRW_draw_depth_loop(), blender::draw::Framebuffer::ensure(), gizmo_find_intersected_3d(), blender::gpu::tests::gpu_shader_lib_test(), pygpu_framebuffer_new_parse_arg(), blender::eevee::DepthOfField::render(), blender::draw::gpencil::render_result_combined(), blender::draw::gpencil::render_result_separated_pass(), blender::eevee::CaptureView::render_world(), blender::gpu::GLFrameBuffer::subpass_transition_impl(), blender::eevee::LookdevModule::sync(), blender::draw::test_draw_resource_id_gen(), blender::draw::test_draw_submit_only(), blender::draw::test_draw_visibility(), blender::gpu::tests::test_framebuffer_clear_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_clear_color_single_attachment(), blender::gpu::tests::test_framebuffer_clear_multiple_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_cube(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_scissor_test(), blender::gpu::tests::test_framebuffer_subpass_input(), blender::ed::vse::update_gpu_scopes(), and view3d_gpu_read_Z_pixels().
| #define GPU_ATTACHMENT_TEXTURE | ( | _texture | ) |
Bind the first mip level of a texture (all layers).
Definition at line 272 of file GPU_framebuffer.hh.
Referenced by blender::draw::overlay::Resources::acquire(), blender::draw::gpencil::Instance::acquire_resources(), blender::image_engine::ScreenSpaceDrawingMode::begin_sync(), blender::render::hydra::GPURenderTaskDelegate::bind(), blender::workbench::AntiAliasingPass::draw(), blender::workbench::DofPass::draw(), blender::workbench::Instance::draw(), blender::workbench::OpaquePass::draw(), blender::workbench::OutlinePass::draw(), blender::workbench::ShadowPass::draw(), blender::workbench::TransparentDepthPass::draw(), blender::workbench::TransparentPass::draw(), blender::workbench::VolumePass::draw(), blender::draw::overlay::Outline::draw_line_only_ex(), blender::eevee::VolumeModule::draw_resolve(), DRW_draw_depth_loop(), blender::eevee::VolumeModule::end_sync(), gizmo_find_intersected_3d(), blender::gpu::tests::gpu_shader_lib_test(), blender::eevee::DepthOfField::render(), blender::eevee::ShadingView::render(), blender::draw::gpencil::render_init_buffers(), blender::eevee::CaptureView::render_probes(), blender::draw::gpencil::render_result_combined(), blender::draw::gpencil::render_result_separated_pass(), blender::eevee::ShadowModule::set_view(), blender::eevee::LookdevModule::sync(), blender::gpu::VKContext::sync_backbuffer(), blender::draw::test_draw_resource_id_gen(), blender::draw::test_draw_submit_only(), blender::draw::test_draw_visibility(), blender::gpu::tests::test_framebuffer_clear_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_clear_color_single_attachment(), blender::gpu::tests::test_framebuffer_clear_depth(), blender::gpu::tests::test_framebuffer_clear_multiple_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_scissor_test(), blender::gpu::tests::test_framebuffer_subpass_input(), blender::ed::vse::update_gpu_scopes(), and view3d_gpu_read_Z_pixels().
| #define GPU_ATTACHMENT_TEXTURE_CUBEFACE | ( | _texture, | |
| _face ) |
NOTE: The cube-face variants are equivalent to the layer ones but give better semantic. Bind the first mip level of a cube-map _face texture.
Definition at line 303 of file GPU_framebuffer.hh.
Referenced by blender::eevee::CaptureView::render_probes(), blender::eevee::CaptureView::render_world(), and blender::gpu::tests::test_framebuffer_cube().
| #define GPU_ATTACHMENT_TEXTURE_CUBEFACE_MIP | ( | _texture, | |
| _face, | |||
| _mip ) |
Bind the _mip level of a cube-map _face texture.
Definition at line 310 of file GPU_framebuffer.hh.
Referenced by GPU_framebuffer_texture_cubeface_attach().
| #define GPU_ATTACHMENT_TEXTURE_LAYER | ( | _texture, | |
| _layer ) |
Bind the _layer layer of the first mip level of a texture.
Definition at line 286 of file GPU_framebuffer.hh.
Referenced by blender::eevee::ShadingView::render(), blender::eevee::CaptureView::render_probes(), and blender::eevee::PlanarProbeModule::set_view().
| #define GPU_ATTACHMENT_TEXTURE_LAYER_MIP | ( | _texture, | |
| _layer, | |||
| _mip ) |
Bind the _layer layer of the _mip level of a texture.
Definition at line 293 of file GPU_framebuffer.hh.
Referenced by GPU_framebuffer_texture_layer_attach().
| #define GPU_ATTACHMENT_TEXTURE_MIP | ( | _texture, | |
| _mip ) |
Bind the _mip level of a texture (all layers).
Definition at line 279 of file GPU_framebuffer.hh.
Referenced by blender::workbench::DofPass::draw(), and GPU_framebuffer_texture_attach().
| #define GPU_framebuffer_bind_ex | ( | _fb, | |
| ... ) |
Definition at line 175 of file GPU_framebuffer.hh.
Referenced by blender::eevee::GBuffer::bind(), and blender::eevee::ShadowModule::set_view().
| #define GPU_framebuffer_ensure_config | ( | _fb, | |
| ... ) |
How to use GPU_framebuffer_ensure_config().
Example:
Definition at line 238 of file GPU_framebuffer.hh.
Referenced by blender::render::hydra::GPURenderTaskDelegate::bind(), DRW_draw_depth_loop(), DRW_view_data_default_lists_from_viewport(), blender::draw::overlay::Instance::end_sync(), gizmo_find_intersected_3d(), gpu_offscreen_fb_get(), blender::gpu::tests::gpu_shader_lib_test(), GPU_viewport_framebuffer_overlay_get(), GPU_viewport_framebuffer_render_get(), GPU_viewport_stereo_composite(), blender::gpu::tests::test_framebuffer_clear_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_clear_color_single_attachment(), blender::gpu::tests::test_framebuffer_clear_depth(), blender::gpu::tests::test_framebuffer_clear_multiple_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_cube(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_scissor_test(), blender::gpu::tests::test_framebuffer_subpass_input(), blender::ed::vse::update_gpu_scopes(), view3d_gpu_read_Z_pixels(), and workbench_render_framebuffers_init().
| #define GPU_FRAMEBUFFER_FREE_SAFE | ( | fb | ) |
Definition at line 85 of file GPU_framebuffer.hh.
Referenced by DRW_module_exit(), blender::draw::edit_select::Engine::free_static(), gpu_viewport_textures_free(), blender::gpu::tests::test_framebuffer_cube(), blender::ed::vse::update_gpu_scopes(), and blender::draw::Framebuffer::~Framebuffer().
| #define GPU_framebuffer_subpass_transition | ( | _fb, | |
| ... ) |
Definition at line 206 of file GPU_framebuffer.hh.
Referenced by blender::gpu::tests::test_framebuffer_subpass_input().
| #define NULL_ATTACHMENT_COLOR {0.0, 0.0, 0.0, 0.0} |
Definition at line 141 of file GPU_framebuffer.hh.
| #define NULL_LOAD_STORE {GPU_LOADACTION_DONT_CARE, GPU_STOREACTION_DONT_CARE, NULL_ATTACHMENT_COLOR} |
Definition at line 142 of file GPU_framebuffer.hh.
| enum GPUBackBuffer |
| Enumerator | |
|---|---|
| GPU_BACKBUFFER_LEFT | Default framebuffer of a window. Always available. |
| GPU_BACKBUFFER_RIGHT | Right buffer of a window. Only available if window was created using stereo-view. |
Definition at line 99 of file GPU_framebuffer.hh.
| enum GPUFrameBufferBits |
| Enumerator | |
|---|---|
| GPU_COLOR_BIT | |
| GPU_DEPTH_BIT | |
| GPU_STENCIL_BIT | |
Definition at line 35 of file GPU_framebuffer.hh.
| void GPU_backbuffer_bind | ( | GPUBackBuffer | back_buffer_type | ) |
Binds the active context's window frame-buffer. Note that GPU_BACKBUFFER_RIGHT is only available if the window was created using stereo-view.
Definition at line 274 of file gpu_framebuffer.cc.
References blender::gpu::Context::back_left, blender::gpu::Context::back_right, blender::gpu::FrameBuffer::bind(), blender::gpu::Context::get(), and GPU_BACKBUFFER_LEFT.
Referenced by wm_draw_window().
Clear all color attachment textures of the active frame-buffer with the given red, green, blue, alpha values.
Definition at line 470 of file gpu_framebuffer.cc.
References blender::gpu::Context::active_fb, BLI_assert_msg, blender::gpu::FrameBuffer::clear(), blender::gpu::Context::get(), and GPU_COLOR_BIT.
Referenced by blender::ed::space_node::draw_background_color(), DRW_draw_render_loop_offscreen(), ED_region_clear(), hud_region_draw(), blender::ed::greasepencil::image_render::image_render_begin(), playanim_toscreen_ex(), region_clear_fully_transparent(), region_draw_status_text(), screen_opengl_render_doit(), UI_ThemeClearColor(), wm_draw_window_offscreen(), wm_draw_window_onscreen(), wm_main_playanim_intern(), and wm_window_ghostwindow_add().
| void GPU_clear_depth | ( | float | depth | ) |
Clear the depth attachment texture of the active frame-buffer with the given depth value.
Definition at line 479 of file gpu_framebuffer.cc.
References blender::gpu::Context::active_fb, BLI_assert_msg, blender::gpu::FrameBuffer::clear(), blender::gpu::Context::get(), and GPU_DEPTH_BIT.
Referenced by gpu_select_pick_begin(), gpu_select_pick_load_id(), gpu_select_query_begin(), blender::ed::greasepencil::image_render::image_render_begin(), screen_opengl_render_doit(), and wm_xr_draw_view().
| blender::gpu::FrameBuffer * GPU_framebuffer_active_get | ( | ) |
Returns the current context active framebuffer. Return nullptr if no context is active.
Definition at line 291 of file gpu_framebuffer.cc.
References blender::gpu::Context::active_fb, and blender::gpu::Context::get().
Referenced by blender::gpu::GLTexture::clear(), blender::gpu::MTLTexture::clear(), blender::ed::space_node::draw_nodespace_back_pix(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), ED_region_do_draw(), ED_view3d_draw_offscreen_imbuf(), blender::draw::command::Clear::execute(), blender::draw::command::ClearMulti::execute(), blender::draw::command::SubPassTransition::execute(), GPU_framebuffer_bound(), GPU_offscreen_bind(), gpu_select_pick_load_id(), pygpu_framebuffer_stack_push_and_bind_or_error(), pygpu_state_active_framebuffer_get(), blender::render::hydra::ViewportEngine::render(), blender::ed::vse::sequencer_ibuf_get(), blender::eevee::ShadowModule::set_view(), wm_surface_make_drawable(), wm_surface_reset_drawable(), WM_system_gpu_context_activate(), WM_system_gpu_context_create(), WM_system_gpu_context_dispose(), WM_system_gpu_context_release(), wm_window_make_drawable(), wm_window_reset_drawable(), and wm_xr_session_surface_draw().
| blender::gpu::FrameBuffer * GPU_framebuffer_back_get | ( | ) |
Returns the default (back-left) frame-buffer. It will always exists even if it's just a dummy. Return nullptr if no context is active.
Definition at line 297 of file gpu_framebuffer.cc.
References blender::gpu::Context::back_left, and blender::gpu::Context::get().
Referenced by drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), wm_surface_make_drawable(), wm_surface_reset_drawable(), WM_system_gpu_context_activate(), WM_system_gpu_context_create(), WM_system_gpu_context_dispose(), WM_system_gpu_context_release(), wm_window_make_drawable(), and wm_window_reset_drawable().
| void GPU_framebuffer_bind | ( | blender::gpu::FrameBuffer * | fb | ) |
Binds a #FrameBuffer making it the active framebuffer for all geometry rendering.
Definition at line 239 of file gpu_framebuffer.cc.
References fb().
Referenced by blender::eevee::Film::accumulate(), blender::draw::gpencil::Instance::antialiasing_accumulate(), blender::draw::edit_select::Instance::begin_sync(), blender::draw::Framebuffer::bind(), blender::eevee::GBuffer::bind(), blender::render::hydra::GPURenderTaskDelegate::bind(), blender::gpu::GLTexture::clear(), blender::gpu::MTLTexture::clear(), blender::eevee::DeferredPipeline::debug_draw(), blender::eevee::HiZBuffer::debug_draw(), blender::eevee::LightModule::debug_draw(), blender::eevee::ShadowModule::debug_draw(), blender::eevee::Film::display(), blender::eevee::LookdevModule::display(), blender::draw::edit_select::Instance::draw(), blender::draw::gpencil::Instance::draw(), blender::draw::overlay::Facing::draw(), blender::draw::overlay::Fade::draw(), blender::draw::overlay::MeshUVs::draw(), blender::draw::overlay::ModeTransfer::draw(), blender::draw::overlay::Paints::draw(), blender::draw::overlay::Particles::draw(), blender::draw::overlay::Text::draw(), blender::draw::overlay::Cameras::draw_background_images(), blender::draw::overlay::Empties::draw_background_images(), blender::draw::overlay::Curves::draw_color_only(), blender::draw::overlay::GreasePencil::draw_color_only(), blender::draw::overlay::Grid::draw_color_only(), blender::draw::overlay::LightProbes::draw_color_only(), blender::draw::overlay::Meshes::draw_color_only(), blender::draw::overlay::MotionPath::draw_color_only(), blender::draw::overlay::Origins::draw_color_only(), blender::draw::overlay::XrayFade::draw_color_only(), blender::draw::overlay::Empties::draw_images(), blender::draw::overlay::Cameras::draw_in_front(), blender::draw::overlay::Empties::draw_in_front_images(), blender::draw::overlay::Armatures::draw_line(), blender::draw::overlay::AttributeViewer::draw_line(), blender::draw::overlay::Axes::draw_line(), blender::draw::overlay::Bounds::draw_line(), blender::draw::overlay::Cameras::draw_line(), blender::draw::overlay::Curves::draw_line(), blender::draw::overlay::Empties::draw_line(), blender::draw::overlay::Fluids::draw_line(), blender::draw::overlay::ForceFields::draw_line(), blender::draw::overlay::GreasePencil::draw_line(), blender::draw::overlay::Lattices::draw_line(), blender::draw::overlay::LightProbes::draw_line(), blender::draw::overlay::Lights::draw_line(), blender::draw::overlay::Meshes::draw_line(), blender::draw::overlay::Metaballs::draw_line(), blender::draw::overlay::Particles::draw_line(), blender::draw::overlay::PointClouds::draw_line(), blender::draw::overlay::Prepass::draw_line(), blender::draw::overlay::Relations::draw_line(), blender::draw::overlay::Sculpts::draw_line(), blender::draw::overlay::Speakers::draw_line(), blender::draw::overlay::Wireframe::draw_line(), blender::draw::overlay::Outline::draw_line_only_ex(), blender::draw::overlay::ImagePrepass::draw_on_render(), blender::draw::overlay::MeshUVs::draw_on_render(), blender::draw::overlay::Sculpts::draw_on_render(), blender::draw::overlay::Cursor::draw_output(), blender::ed::vse::draw_registered_callbacks(), blender::draw::overlay::Cameras::draw_scene_background_images(), blender::ed::vse::draw_timeline_post_view_callbacks(), blender::ed::vse::draw_timeline_pre_view_callbacks(), blender::image_engine::ScreenSpaceDrawingMode::draw_viewport(), drw_callbacks_post_scene(), drw_callbacks_post_scene_2D(), DRW_draw_depth_loop(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRW_draw_select_loop(), DRW_select_buffer_read(), ED_region_do_draw(), ED_view3d_draw_offscreen_imbuf(), blender::draw::command::FramebufferBind::execute(), gizmo_find_intersected_3d(), GPU_offscreen_create(), GPU_offscreen_unbind(), blender::gpu::tests::gpu_shader_lib_test(), GPU_viewport_stereo_composite(), blender::ed::vse::preview_draw_color_render_begin(), pygpu_framebuffer_stack_pop_and_restore_or_error(), pygpu_framebuffer_stack_push_and_bind_or_error(), blender::eevee::BackgroundPipeline::render(), blender::eevee::DeferredLayer::render(), blender::eevee::DeferredProbePipeline::render(), blender::eevee::DepthOfField::render(), blender::eevee::PlanarProbePipeline::render(), blender::eevee::ShadingView::render(), blender::render::hydra::ViewportEngine::render(), blender::draw::gpencil::render_init_buffers(), blender::eevee::CaptureView::render_probes(), blender::draw::gpencil::render_result_combined(), blender::draw::gpencil::render_result_separated_pass(), blender::eevee::CaptureView::render_world(), blender::ed::vse::sequencer_ibuf_get(), blender::eevee::ShadowModule::set_view(), blender::gpu::tests::test_framebuffer_clear_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_clear_color_single_attachment(), blender::gpu::tests::test_framebuffer_clear_depth(), blender::gpu::tests::test_framebuffer_clear_multiple_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_cube(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_scissor_test(), blender::gpu::tests::test_framebuffer_subpass_input(), blender::ed::vse::update_gpu_scopes(), blender::gpu::tests::ShaderSpecializationConst::validate(), view3d_gpu_read_Z_pixels(), write_render_color_output(), and write_render_z_output().
| void GPU_framebuffer_bind_loadstore | ( | blender::gpu::FrameBuffer * | fb, |
| const GPULoadStore * | load_store_actions, | ||
| uint | load_store_actions_len ) |
Load store config array (load_store_actions) matches attachment structure of GPU_framebuffer_config_array. This allows us to explicitly specify whether attachment data needs to be loaded and stored on a per-attachment basis. This enables a number of bandwidth optimizations:
NOTE: Using GPU_framebuffer_clear_* functions in conjunction with a custom load-store configuration is invalid. Instead, utilize GPU_LOADACTION_CLEAR and provide a clear color as the third parameter in GPULoadStore action.
For Color attachments: {GPU_LOADACTION_CLEAR, GPU_STOREACTION_STORE, {Rf, Gf, Bf, Af}} For Depth attachments: {GPU_LOADACTION_CLEAR, GPU_STOREACTION_STORE, {Df}}
Example:
Definition at line 247 of file gpu_framebuffer.cc.
References fb().
| void GPU_framebuffer_bind_no_srgb | ( | blender::gpu::FrameBuffer * | fb | ) |
Same as GPU_framebuffer_bind but do not enable the SRGB transform.
Definition at line 268 of file gpu_framebuffer.cc.
References fb().
Referenced by blender::ed::space_node::draw_nodespace_back_pix(), blender::ed::vse::draw_registered_callbacks(), blender::ed::vse::draw_timeline_post_view_callbacks(), blender::ed::vse::draw_timeline_pre_view_callbacks(), blender::ed::space_node::node_draw_space(), blender::ed::vse::preview_draw_overlay_begin(), and blender::ed::vse::sequencer_preview_draw_empty().
| void GPU_framebuffer_blit | ( | blender::gpu::FrameBuffer * | fb_read, |
| int | read_slot, | ||
| blender::gpu::FrameBuffer * | fb_write, | ||
| int | write_slot, | ||
| GPUFrameBufferBits | blit_buffers ) |
Copy the content of fb_read attachments to the fb_read attachments. The attachments types are chosen by blit_buffers . Only one color buffer can by copied at a time and its index is chosen by read_slot and write_slot. The source and destination frame-buffers dimensions have to match. DEPRECATED: Prefer using GPU_texture_copy().
Definition at line 517 of file gpu_framebuffer.cc.
References blender::gpu::Context::active_fb, blender::gpu::FrameBuffer::bind(), BLI_assert, blender::gpu::FrameBuffer::blit_to(), blender::gpu::FrameBuffer::color_tex(), blender::gpu::FrameBuffer::depth_tex(), blender::gpu::Context::get(), GPU_DEPTH_BIT, GPU_STENCIL_BIT, GPU_texture_format(), GPU_texture_has_depth_format(), and GPU_texture_has_stencil_format().
| bool GPU_framebuffer_bound | ( | blender::gpu::FrameBuffer * | fb | ) |
Return true if framebuffer is the active framebuffer of the active context.
Definition at line 303 of file gpu_framebuffer.cc.
References GPU_framebuffer_active_get().
Referenced by pygpu_framebuffer_clear(), pygpu_framebuffer_is_bound(), and pygpu_framebuffer_stack_pop_and_restore_or_error().
| bool GPU_framebuffer_check_valid | ( | blender::gpu::FrameBuffer * | fb, |
| char | err_out[256] ) |
Checks a framebuffer current configuration for errors. Checks for texture size mismatch, incompatible attachment, incomplete textures etc...
Definition at line 310 of file gpu_framebuffer.cc.
References blender::gpu::FrameBuffer::check().
Referenced by draw_select_framebuffer_depth_only_setup(), GPU_offscreen_create(), and workbench_render_framebuffers_init().
| void GPU_framebuffer_clear | ( | blender::gpu::FrameBuffer * | fb, |
| GPUFrameBufferBits | buffers, | ||
| const float | clear_col[4], | ||
| float | clear_depth, | ||
| unsigned int | clear_stencil ) |
Clear the frame-buffer attachments. buffers controls the types of attachments to clear. Setting GPU_COLOR_BIT will clear all the color attachment. Each attachment gets cleared to the value of its type:
Definition at line 412 of file gpu_framebuffer.cc.
References BLI_assert_msg, buffers, blender::gpu::FrameBuffer::clear(), and blender::gpu::FrameBuffer::get_use_explicit_loadstore().
Referenced by blender::draw::command::Clear::execute(), GPU_framebuffer_clear_color(), GPU_framebuffer_clear_color_depth(), GPU_framebuffer_clear_color_depth_stencil(), GPU_framebuffer_clear_depth(), GPU_framebuffer_clear_depth_stencil(), GPU_framebuffer_clear_stencil(), and pygpu_framebuffer_clear().
| void GPU_framebuffer_clear_color | ( | blender::gpu::FrameBuffer * | fb, |
| const float | clear_col[4] ) |
Clear all color attachment textures with the value clear_col .
Definition at line 424 of file gpu_framebuffer.cc.
References fb(), GPU_COLOR_BIT, and GPU_framebuffer_clear().
Referenced by blender::eevee::Film::accumulate(), blender::image_engine::ScreenSpaceDrawingMode::draw_viewport(), GPU_offscreen_create(), blender::ed::vse::preview_draw_color_render_begin(), blender::eevee::ShadingView::render(), blender::draw::gpencil::render_init_buffers(), blender::gpu::tests::test_framebuffer_clear_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_clear_color_single_attachment(), blender::gpu::tests::test_framebuffer_cube(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_scissor_test(), and blender::gpu::tests::test_framebuffer_subpass_input().
| void GPU_framebuffer_clear_color_depth | ( | blender::gpu::FrameBuffer * | fb, |
| const float | clear_col[4], | ||
| float | clear_depth ) |
Clear all color attachment textures with the value clear_col and the depth attachment texture with the value clear_depth .
Definition at line 434 of file gpu_framebuffer.cc.
References fb(), GPU_COLOR_BIT, GPU_DEPTH_BIT, and GPU_framebuffer_clear().
Referenced by blender::draw::edit_select::Instance::begin_sync(), blender::render::hydra::GPURenderTaskDelegate::bind(), blender::eevee::Instance::draw_viewport(), GPU_offscreen_create(), blender::eevee::ShadingView::render(), and blender::eevee::CaptureView::render_probes().
| void GPU_framebuffer_clear_color_depth_stencil | ( | blender::gpu::FrameBuffer * | fb, |
| const float | clear_col[4], | ||
| float | clear_depth, | ||
| uint | clear_stencil ) |
Clear the depth attachment texture with the value clear_depth , the stencil attachment with the value clear_stencil and all the color attachments with the value clear_col .
Definition at line 453 of file gpu_framebuffer.cc.
References fb(), GPU_COLOR_BIT, GPU_DEPTH_BIT, GPU_framebuffer_clear(), and GPU_STENCIL_BIT.
| void GPU_framebuffer_clear_depth | ( | blender::gpu::FrameBuffer * | fb, |
| float | clear_depth ) |
Clear the depth attachment texture with the value clear_depth .
Definition at line 429 of file gpu_framebuffer.cc.
References fb(), GPU_DEPTH_BIT, and GPU_framebuffer_clear().
Referenced by blender::draw::Framebuffer::clear_depth(), blender::draw::edit_select::Instance::draw(), DRW_draw_depth_loop(), DRW_draw_select_loop(), blender::eevee::PlanarProbePipeline::render(), blender::draw::gpencil::render_init_buffers(), and blender::gpu::tests::test_framebuffer_clear_depth().
| void GPU_framebuffer_clear_depth_stencil | ( | blender::gpu::FrameBuffer * | fb, |
| float | clear_depth, | ||
| uint | clear_stencil ) |
Clear the depth attachment texture with the value clear_depth and the stencil attachment with the value clear_stencil .
Definition at line 446 of file gpu_framebuffer.cc.
References fb(), GPU_DEPTH_BIT, GPU_framebuffer_clear(), and GPU_STENCIL_BIT.
Referenced by blender::workbench::Instance::draw(), drw_draw_render_loop_2d(), and drw_draw_render_loop_3d().
| void GPU_framebuffer_clear_stencil | ( | blender::gpu::FrameBuffer * | fb, |
| uint | clear_stencil ) |
Clear the stencil attachment with the value clear_stencil .
Definition at line 441 of file gpu_framebuffer.cc.
References fb(), GPU_framebuffer_clear(), and GPU_STENCIL_BIT.
Referenced by blender::eevee::GBuffer::bind(), and blender::workbench::OpaquePass::draw().
| void GPU_framebuffer_config_array | ( | blender::gpu::FrameBuffer * | fb, |
| const GPUAttachment * | config, | ||
| int | config_len ) |
First GPUAttachment in *config is always the depth/depth_stencil buffer. Following #GPUAttachments are color buffers. Setting GPUAttachment.mip to -1 will leave the texture in this slot. Setting GPUAttachment.tex to nullptr will detach the texture in this slot.
Definition at line 352 of file gpu_framebuffer.cc.
References fb(), GPU_FB_COLOR_ATTACHMENT0, GPU_FB_DEPTH_ATTACHMENT, GPU_FB_DEPTH_STENCIL_ATTACHMENT, GPU_texture_has_stencil_format(), GPUAttachment::mip, and GPUAttachment::tex.
Referenced by blender::draw::Framebuffer::ensure(), and pygpu_framebuffer__tp_new().
| blender::gpu::FrameBuffer * GPU_framebuffer_create | ( | const char * | name | ) |
Create a #FrameBuffer object. It is not configured and not bound to a specific context until GPU_framebuffer_bind() is called.
Definition at line 220 of file gpu_framebuffer.cc.
References blender::gpu::GPUBackend::framebuffer_alloc(), blender::gpu::GPUBackend::get(), and name.
Referenced by blender::render::hydra::GPURenderTaskDelegate::bind(), draw_select_framebuffer_depth_only_setup(), blender::draw::Framebuffer::ensure(), blender::draw::Framebuffer::ensure(), blender::gpu::tests::gpu_shader_lib_test(), pygpu_framebuffer__tp_new(), blender::gpu::tests::test_framebuffer_clear_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_clear_color_single_attachment(), blender::gpu::tests::test_framebuffer_clear_depth(), blender::gpu::tests::test_framebuffer_clear_multiple_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_scissor_test(), blender::gpu::tests::test_framebuffer_subpass_input(), and blender::gpu::tests::ShaderSpecializationConst::validate().
| void GPU_framebuffer_default_size | ( | blender::gpu::FrameBuffer * | fb, |
| int | width, | ||
| int | height ) |
Default size is used if the frame-buffer contains no attachments. It needs to be re-specified each time an attachment is added.
Definition at line 381 of file gpu_framebuffer.cc.
References blender::gpu::FrameBuffer::default_size_set().
Referenced by blender::draw::Framebuffer::ensure(), and blender::gpu::tests::ShaderSpecializationConst::validate().
| void GPU_framebuffer_free | ( | blender::gpu::FrameBuffer * | fb | ) |
Create a #FrameBuffer object. It is not configured and not bound to a specific context until GPU_framebuffer_bind() is called.
Definition at line 227 of file gpu_framebuffer.cc.
References fb().
Referenced by DRW_draw_depth_loop(), gizmo_find_intersected_3d(), gpu_offscreen_fb_get(), GPU_offscreen_free(), blender::gpu::tests::gpu_shader_lib_test(), pygpu_framebuffer_free_if_possible(), blender::gpu::tests::test_framebuffer_clear_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_clear_color_single_attachment(), blender::gpu::tests::test_framebuffer_clear_depth(), blender::gpu::tests::test_framebuffer_clear_multiple_color_multiple_attachments(), blender::gpu::tests::test_framebuffer_multi_viewport(), blender::gpu::tests::test_framebuffer_scissor_test(), blender::gpu::tests::test_framebuffer_subpass_input(), blender::render::hydra::GPURenderTaskDelegate::unbind(), blender::gpu::tests::ShaderSpecializationConst::validate(), view3d_gpu_read_Z_pixels(), and blender::gpu::GLTexture::~GLTexture().
| const char * GPU_framebuffer_get_name | ( | blender::gpu::FrameBuffer * | fb | ) |
Definition at line 232 of file gpu_framebuffer.cc.
References fb().
Referenced by blender::draw::command::FramebufferBind::serialize().
| void GPU_framebuffer_multi_clear | ( | blender::gpu::FrameBuffer * | fb, |
| const float(*) | clear_colors[4] ) |
Clear each color attachment texture attached to this frame-buffer with a different color. IMPORTANT: The size of clear_colors must match the number of color attachments.
Definition at line 462 of file gpu_framebuffer.cc.
References BLI_assert_msg, and fb().
Referenced by blender::draw::gpencil::Instance::draw(), blender::workbench::Instance::draw(), blender::draw::command::ClearMulti::execute(), and blender::gpu::tests::test_framebuffer_clear_multiple_color_multiple_attachments().
| void GPU_framebuffer_multi_viewports_set | ( | blender::gpu::FrameBuffer * | gpu_fb, |
| const int | viewport_rects[GPU_MAX_VIEWPORTS][4] ) |
Similar to GPU_framebuffer_viewport_set() but specify the bounds of all 16 viewports. By default geometry renders only to the first viewport. That can be changed by setting gpu_ViewportIndex in the vertex.
Definition at line 394 of file gpu_framebuffer.cc.
References GPU_MAX_VIEWPORTS, and blender::gpu::FrameBuffer::viewport_multi_set().
Referenced by blender::eevee::ShadowModule::set_view(), and blender::gpu::tests::test_framebuffer_multi_viewport().
| blender::gpu::FrameBuffer * GPU_framebuffer_pop | ( | ) |
Definition at line 590 of file gpu_framebuffer.cc.
References BLI_assert, and FrameBufferStack.
Referenced by GPU_offscreen_unbind(), and pygpu_framebuffer_stack_pop_and_restore_or_error().
| void GPU_framebuffer_push | ( | blender::gpu::FrameBuffer * | fb | ) |
Keep a stack of bound frame-buffer to allow scoped binding of frame-buffer in python. This is also used by GPUOffScreen to save/restore the current frame-buffers.
Definition at line 583 of file gpu_framebuffer.cc.
References BLI_assert, fb(), FRAMEBUFFER_STACK_DEPTH, and FrameBufferStack.
Referenced by GPU_offscreen_bind(), and pygpu_framebuffer_stack_push_and_bind_or_error().
| void ** GPU_framebuffer_py_reference_get | ( | blender::gpu::FrameBuffer * | fb | ) |
Reference of a pointer that needs to be cleaned when deallocating the frame-buffer. Points to BPyGPUFrameBuffer.fb
Definition at line 556 of file gpu_framebuffer.cc.
References fb().
Referenced by BPyGPUFrameBuffer_CreatePyObject().
| void GPU_framebuffer_py_reference_set | ( | blender::gpu::FrameBuffer * | fb, |
| void ** | py_ref ) |
Definition at line 561 of file gpu_framebuffer.cc.
References BLI_assert, and fb().
Referenced by BPyGPUFrameBuffer_CreatePyObject(), and pygpu_framebuffer_free_safe().
| void GPU_framebuffer_read_color | ( | blender::gpu::FrameBuffer * | fb, |
| int | x, | ||
| int | y, | ||
| int | width, | ||
| int | height, | ||
| int | channels, | ||
| int | slot, | ||
| eGPUDataFormat | data_format, | ||
| void * | r_data ) |
Read a region of a framebuffer color attachment and copy it to r_data . The pixel data will be converted to data_format but it needs to be compatible with the attachment type. DEPRECATED: Prefer using GPU_texture_read().
Definition at line 495 of file gpu_framebuffer.cc.
References data, fb(), GPU_COLOR_BIT, w(), x, and y.
Referenced by DRW_select_buffer_read(), GPU_offscreen_read_color_region(), pygpu_framebuffer_read_color(), blender::draw::gpencil::render_result_combined(), blender::draw::gpencil::render_result_separated_pass(), and write_render_color_output().
| void GPU_framebuffer_read_depth | ( | blender::gpu::FrameBuffer * | fb, |
| int | x, | ||
| int | y, | ||
| int | width, | ||
| int | height, | ||
| eGPUDataFormat | data_format, | ||
| void * | r_data ) |
Read a region of the framebuffer depth attachment and copy it to r_data . The pixel data will be converted to data_format but it needs to be compatible with the attachment type. DEPRECATED: Prefer using GPU_texture_read().
Definition at line 488 of file gpu_framebuffer.cc.
References data, fb(), GPU_DEPTH_BIT, w(), x, and y.
Referenced by gpu_select_pick_load_id(), pygpu_framebuffer_read_depth(), blender::draw::gpencil::render_result_z(), view3d_gpu_read_Z_pixels(), and write_render_z_output().
| void GPU_framebuffer_restore | ( | ) |
Binds back the active context's default frame-buffer. Equivalent to GPU_backbuffer_bind(GPU_BACKBUFFER_LEFT).
Definition at line 286 of file gpu_framebuffer.cc.
References blender::gpu::Context::back_left, blender::gpu::FrameBuffer::bind(), and blender::gpu::Context::get().
Referenced by blender::ed::space_node::draw_nodespace_back_pix(), DRW_custom_pipeline_end(), DRW_draw_depth_loop(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRW_draw_render_loop_offscreen(), DRW_draw_select_loop(), DRW_render_gpencil(), DRW_render_to_image(), DRW_select_buffer_read(), ED_view3d_draw_offscreen_imbuf(), gizmo_find_intersected_3d(), GPU_offscreen_create(), GPU_offscreen_unbind(), GPU_viewport_stereo_composite(), GPU_viewport_unbind(), blender::ed::vse::sequencer_ibuf_get(), view3d_gpu_read_Z_pixels(), wm_xr_draw_view(), wm_xr_session_surface_draw(), blender::gpu::GLFrameBuffer::~GLFrameBuffer(), and blender::gpu::MTLFrameBuffer::~MTLFrameBuffer().
| uint GPU_framebuffer_stack_level_get | ( | ) |
Definition at line 597 of file gpu_framebuffer.cc.
References FrameBufferStack.
Referenced by pygpu_framebuffer_stack_context_enter(), pygpu_framebuffer_stack_context_exit(), pygpu_framebuffer_stack_pop_and_restore_or_error(), pygpu_framebuffer_stack_push_and_bind_or_error(), pygpu_offscreen_stack_context_enter(), and pygpu_offscreen_stack_context_exit().
| void GPU_framebuffer_subpass_transition_array | ( | blender::gpu::FrameBuffer * | fb, |
| const GPUAttachmentState * | attachment_states, | ||
| uint | attachment_len ) |
Sub-pass config array matches attachment structure of GPU_framebuffer_config_array. This allows to explicitly specify attachment state within the next sub-pass. This enables a number of bandwidth optimizations specially on Tile Based Deferred Renderers where the attachments can be kept into tile memory and used in place for later sub-passes.
IMPORTANT: When using this, the framebuffer initial state is undefined. A sub-pass transition need to be issued before any draw-call.
Example:
Definition at line 260 of file gpu_framebuffer.cc.
References fb().
Referenced by blender::draw::command::SubPassTransition::execute().
| void GPU_framebuffer_texture_attach | ( | blender::gpu::FrameBuffer * | fb, |
| blender::gpu::Texture * | texture, | ||
| int | slot, | ||
| int | mip ) |
Attach an entire texture mip level to a #FrameBuffer. Changes will only take effect next time GPU_framebuffer_bind() is called. slot is the color texture slot to bind this texture to. Must be 0 if it is the depth texture. mip is the mip level of this texture to attach to the framebuffer. DEPRECATED: Prefer using multiple #FrameBuffer with different configurations with GPU_framebuffer_config_array().
Definition at line 324 of file gpu_framebuffer.cc.
References fb(), GPU_ATTACHMENT_TEXTURE_MIP, and gpu_framebuffer_texture_attach_ex().
Referenced by draw_select_framebuffer_depth_only_setup().
| void GPU_framebuffer_texture_cubeface_attach | ( | blender::gpu::FrameBuffer * | fb, |
| blender::gpu::Texture * | texture, | ||
| int | slot, | ||
| int | face, | ||
| int | mip ) |
Attach a single cube-face of an cube-map texture mip level to a #FrameBuffer. Changes will only take effect next time GPU_framebuffer_bind() is called. slot is the color texture slot to bind this texture to. Must be 0 if it is the depth texture. face is the cube-face of this cube-map texture to attach to the framebuffer. mip is the mip level of this texture to attach to the framebuffer. DEPRECATED: Prefer using multiple #FrameBuffer with different configurations with GPU_framebuffer_config_array().
Definition at line 340 of file gpu_framebuffer.cc.
References fb(), GPU_ATTACHMENT_TEXTURE_CUBEFACE_MIP, and gpu_framebuffer_texture_attach_ex().
| void GPU_framebuffer_texture_detach | ( | blender::gpu::FrameBuffer * | fb, |
| blender::gpu::Texture * | texture ) |
Detach a texture from a #FrameBuffer. The texture must be attached. Changes will only take effect next time GPU_framebuffer_bind() is called. DEPRECATED: Prefer using multiple #FrameBuffer with different configurations with GPU_framebuffer_config_array().
Definition at line 347 of file gpu_framebuffer.cc.
References blender::gpu::Texture::detach_from(), and fb().
| void GPU_framebuffer_texture_layer_attach | ( | blender::gpu::FrameBuffer * | fb, |
| blender::gpu::Texture * | texture, | ||
| int | slot, | ||
| int | layer, | ||
| int | mip ) |
Attach a single layer of an array texture mip level to a #FrameBuffer. Changes will only take effect next time GPU_framebuffer_bind() is called. slot is the color texture slot to bind this texture to. Must be 0 if it is the depth texture. layer is the layer of this array texture to attach to the framebuffer. mip is the mip level of this texture to attach to the framebuffer. DEPRECATED: Prefer using multiple #FrameBuffer with different configurations with GPU_framebuffer_config_array().
Definition at line 333 of file gpu_framebuffer.cc.
References fb(), GPU_ATTACHMENT_TEXTURE_LAYER_MIP, and gpu_framebuffer_texture_attach_ex().
| void GPU_framebuffer_viewport_get | ( | blender::gpu::FrameBuffer * | fb, |
| int | r_viewport[4] ) |
Return the viewport offset and size in a int quadruple: (x, y, width, height).
Definition at line 400 of file gpu_framebuffer.cc.
References blender::gpu::FrameBuffer::viewport_get().
Referenced by pygpu_framebuffer_viewport_get().
| void GPU_framebuffer_viewport_reset | ( | blender::gpu::FrameBuffer * | fb | ) |
Reset a frame-buffer viewport bounds to its attachment(s) size.
Definition at line 405 of file gpu_framebuffer.cc.
References blender::gpu::FrameBuffer::viewport_reset().
Referenced by blender::eevee::LookdevModule::display(), and blender::eevee::Instance::draw().
| void GPU_framebuffer_viewport_set | ( | blender::gpu::FrameBuffer * | fb, |
| int | x, | ||
| int | y, | ||
| int | width, | ||
| int | height ) |
Set the viewport offset and size. These are reset to the original dimensions explicitly (using GPU_framebuffer_viewport_reset()) or when binding the frame-buffer after modifying its attachments.
Definition at line 388 of file gpu_framebuffer.cc.
References blender::gpu::FrameBuffer::viewport_set(), x, and y.
Referenced by blender::eevee::Film::accumulate(), blender::eevee::Film::display(), and pygpu_framebuffer_viewport_set().
| void GPU_frontbuffer_read_color | ( | int | x, |
| int | y, | ||
| int | width, | ||
| int | height, | ||
| int | channels, | ||
| eGPUDataFormat | data_format, | ||
| void * | r_data ) |
Read the color of the window screen as it is currently displayed (so the previously rendered back-buffer). DEPRECATED: This isn't even working correctly on some implementation. TODO: Emulate this by doing some slow texture copy on the backend side or try to read the areas offscreen textures directly.
Definition at line 509 of file gpu_framebuffer.cc.
References data, blender::gpu::Context::front_left, blender::gpu::Context::get(), GPU_COLOR_BIT, blender::gpu::FrameBuffer::read(), w(), x, and y.
Referenced by WM_window_pixels_read_from_frontbuffer(), and WM_window_pixels_read_sample_from_frontbuffer().
| void GPU_offscreen_bind | ( | GPUOffScreen * | offscreen, |
| bool | save ) |
Unbind a GPUOffScreen from a #GPUContext. If save is true, it will save the currently bound framebuffer into a stack.
Definition at line 751 of file gpu_framebuffer.cc.
References blender::gpu::FrameBuffer::bind(), fb(), GPU_framebuffer_active_get(), GPU_framebuffer_push(), and gpu_offscreen_fb_get().
Referenced by blender::gpu::tests::blend_test(), DRW_draw_render_loop_offscreen(), ED_view3d_draw_offscreen_imbuf(), GPU_viewport_unbind_from_offscreen(), blender::ed::greasepencil::image_render::image_render_begin(), pygpu_offscreen_draw_view3d(), pygpu_offscreen_stack_context_enter(), screen_opengl_render_doit(), blender::gpu::tests::test_immediate_one_plane(), blender::gpu::tests::test_immediate_two_planes(), blender::gpu::tests::vertex_buffer_fetch_mode(), wm_draw_region_bind(), wm_draw_window(), WM_window_pixels_read_from_offscreen(), WM_window_pixels_read_sample_from_offscreen(), and wm_xr_draw_view().
| blender::gpu::Texture * GPU_offscreen_color_texture | ( | const GPUOffScreen * | offscreen | ) |
Return the color texture of a GPUOffScreen. Does not give ownership.
Definition at line 814 of file gpu_framebuffer.cc.
References GPUOffScreen::color.
Referenced by blender::gpu::tests::blend_test(), pygpu_offscreen_texture_color_get(), blender::gpu::tests::vertex_buffer_fetch_mode(), wm_draw_offscreen_texture_parameters(), wm_draw_region_texture(), and wm_draw_window().
| GPUOffScreen * GPU_offscreen_create | ( | int | width, |
| int | height, | ||
| bool | with_depth_buffer, | ||
| blender::gpu::TextureFormat | format, | ||
| eGPUTextureUsage | usage, | ||
| bool | clear, | ||
| char | err_out[256] ) |
Create a GPUOffScreen with attachment size of width by height pixels. If with_depth_buffer is true, a depth buffer attachment will also be created. format is the format of the color buffer. If clear is true, the color and depth buffer attachments will be cleared. If err_out is not nullptr it will be use to write any configuration error message..
Definition at line 666 of file gpu_framebuffer.cc.
References BLI_strncpy(), clear(), GPUOffScreen::color, GPUOffScreen::depth, error(), fb(), GPU_framebuffer_bind(), GPU_framebuffer_check_valid(), GPU_framebuffer_clear_color(), GPU_framebuffer_clear_color_depth(), GPU_framebuffer_restore(), gpu_offscreen_fb_get(), GPU_offscreen_free(), GPU_texture_create_2d(), GPU_TEXTURE_USAGE_ATTACHMENT, GPU_TEXTURE_USAGE_FORMAT_VIEW, max_ii(), and MEM_callocN().
Referenced by blender::gpu::tests::blend_test(), ED_view3d_draw_offscreen_imbuf(), blender::ed::greasepencil::image_render::image_render_begin(), pygpu_offscreen__tp_new(), screen_opengl_render_init(), blender::gpu::tests::test_immediate_one_plane(), blender::gpu::tests::test_immediate_two_planes(), blender::gpu::tests::vertex_buffer_fetch_mode(), wm_draw_region_buffer_create(), wm_draw_window(), WM_window_pixels_read_from_offscreen(), WM_window_pixels_read_sample_from_offscreen(), and wm_xr_session_surface_offscreen_ensure().
| void GPU_offscreen_draw_to_screen | ( | GPUOffScreen * | offscreen, |
| int | x, | ||
| int | y ) |
Blit the offscreen color texture to the active framebuffer at the (x, y) location.
Definition at line 775 of file gpu_framebuffer.cc.
References blender::gpu::Context::active_fb, blender::gpu::FrameBuffer::blit_to(), blender::gpu::Context::get(), GPU_COLOR_BIT, gpu_offscreen_fb_get(), x, and y.
Referenced by wm_draw_region_blit().
| blender::gpu::TextureFormat GPU_offscreen_format | ( | const GPUOffScreen * | offscreen | ) |
Return the texture format of a GPUOffScreen.
Definition at line 819 of file gpu_framebuffer.cc.
References GPUOffScreen::color, and GPU_texture_format().
Referenced by ED_view3d_draw_offscreen_imbuf(), and wm_draw_region_buffer_create().
| void GPU_offscreen_free | ( | GPUOffScreen * | offscreen | ) |
Free a GPUOffScreen.
Definition at line 734 of file gpu_framebuffer.cc.
References GPUOffScreen::color, GPUOffScreen::depth, GPUOffScreen::framebuffers, GPU_framebuffer_free(), GPU_texture_free(), and MEM_freeN().
Referenced by blender::gpu::tests::blend_test(), BPyGPUOffScreen__tp_dealloc(), ED_view3d_draw_offscreen_imbuf(), GPU_offscreen_create(), blender::ed::greasepencil::image_render::image_render_end(), pygpu_offscreen_free(), screen_opengl_render_end(), blender::gpu::tests::test_immediate_one_plane(), blender::gpu::tests::test_immediate_two_planes(), blender::gpu::tests::vertex_buffer_fetch_mode(), wm_draw_region_buffer_free(), wm_draw_window(), WM_window_pixels_read_from_offscreen(), WM_window_pixels_read_sample_from_offscreen(), wm_xr_session_surface_free_data(), and wm_xr_session_surface_offscreen_ensure().
| int GPU_offscreen_height | ( | const GPUOffScreen * | offscreen | ) |
Return the height of a GPUOffScreen.
Definition at line 809 of file gpu_framebuffer.cc.
References GPUOffScreen::color, and GPU_texture_height().
Referenced by ED_view3d_draw_offscreen_imbuf(), GPU_viewport_bind_from_offscreen(), blender::ed::greasepencil::image_render::image_render_end(), pygpu_offscreen_draw_view3d(), pygpu_offscreen_height_get(), wm_draw_region_buffer_create(), and wm_xr_session_surface_offscreen_ensure().
| void GPU_offscreen_read_color | ( | GPUOffScreen * | offscreen, |
| eGPUDataFormat | data_format, | ||
| void * | r_data ) |
Read the whole color texture of the GPUOffScreen. The pixel data will be converted to data_format but it needs to be compatible with the attachment type. IMPORTANT: r_data must be big enough for all pixels in data_format.
Definition at line 794 of file gpu_framebuffer.cc.
References BLI_assert, GPUOffScreen::color, ELEM, GPU_DATA_FLOAT, GPU_DATA_UBYTE, GPU_offscreen_read_color_region(), GPU_texture_height(), GPU_texture_width(), and w().
Referenced by blender::gpu::tests::blend_test(), ED_view3d_draw_offscreen_imbuf(), blender::ed::greasepencil::image_render::image_render_end(), screen_opengl_render_doit(), blender::gpu::tests::test_immediate_one_plane(), blender::gpu::tests::test_immediate_two_planes(), blender::gpu::tests::vertex_buffer_fetch_mode(), and WM_window_pixels_read_from_offscreen().
| void GPU_offscreen_read_color_region | ( | GPUOffScreen * | offscreen, |
| eGPUDataFormat | data_format, | ||
| int | x, | ||
| int | y, | ||
| int | w, | ||
| int | h, | ||
| void * | r_data ) |
A version of GPU_offscreen_read_color that reads into a region.
Definition at line 782 of file gpu_framebuffer.cc.
References BLI_assert, GPUOffScreen::color, ELEM, GPU_DATA_FLOAT, GPU_DATA_UBYTE, GPU_framebuffer_read_color(), gpu_offscreen_fb_get(), GPU_texture_height(), GPU_texture_width(), w(), x, and y.
Referenced by GPU_offscreen_read_color(), and WM_window_pixels_read_sample_from_offscreen().
| void GPU_offscreen_unbind | ( | GPUOffScreen * | offscreen, |
| bool | restore ) |
Unbind a GPUOffScreen from a #GPUContext. If restore is true, it will restore the previously bound framebuffer. If false, it will bind the window back-buffer.
Definition at line 760 of file gpu_framebuffer.cc.
References fb(), GPU_framebuffer_bind(), GPU_framebuffer_pop(), and GPU_framebuffer_restore().
Referenced by blender::gpu::tests::blend_test(), ED_view3d_draw_offscreen_imbuf(), blender::ed::greasepencil::image_render::image_render_end(), pygpu_offscreen_draw_view3d(), pygpu_offscreen_stack_context_exit(), pygpu_offscreen_unbind(), screen_opengl_render_doit(), blender::gpu::tests::test_immediate_one_plane(), blender::gpu::tests::test_immediate_two_planes(), blender::gpu::tests::vertex_buffer_fetch_mode(), wm_draw_region_unbind(), wm_draw_window(), WM_window_pixels_read_from_offscreen(), and WM_window_pixels_read_sample_from_offscreen().
| void GPU_offscreen_viewport_data_get | ( | GPUOffScreen * | offscreen, |
| blender::gpu::FrameBuffer ** | r_fb, | ||
| blender::gpu::Texture ** | r_color, | ||
| blender::gpu::Texture ** | r_depth ) |
Return the internals of a GPUOffScreen. Does not give ownership.
Definition at line 824 of file gpu_framebuffer.cc.
References GPUOffScreen::color, GPUOffScreen::depth, and gpu_offscreen_fb_get().
Referenced by GPU_viewport_bind_from_offscreen().
| int GPU_offscreen_width | ( | const GPUOffScreen * | offscreen | ) |
Return the width of a GPUOffScreen.
Definition at line 804 of file gpu_framebuffer.cc.
References GPUOffScreen::color, and GPU_texture_width().
Referenced by ED_view3d_draw_offscreen_imbuf(), GPU_viewport_bind_from_offscreen(), blender::ed::greasepencil::image_render::image_render_end(), pygpu_offscreen_draw_view3d(), pygpu_offscreen_width_get(), wm_draw_region_buffer_create(), and wm_xr_session_surface_offscreen_ensure().
|
staticconstexpr |
Definition at line 44 of file GPU_framebuffer.hh.
Referenced by blender::gpu::GLFrameBuffer::apply_state(), blender::gpu::MTLFrameBuffer::apply_state(), blender::gpu::MTLContext::ensure_render_pipeline_state(), GPU_framebuffer_multi_viewports_set(), blender::gpu::MTLContext::pipeline_state_init(), blender::gpu::MTLContext::set_viewports(), blender::gpu::FrameBuffer::viewport_multi_set(), blender::gpu::VKFrameBuffer::vk_render_areas_append(), and blender::gpu::VKFrameBuffer::vk_viewports_append().