|
Blender V5.0
|
#include <DRW_render.hh>
Public Types | |
| enum | Mode { VIEWPORT = 0 , VIEWPORT_XR , VIEWPORT_OFFSCREEN , VIEWPORT_RENDER , SELECT_OBJECT , SELECT_OBJECT_MATERIAL , SELECT_EDIT_MESH , DEPTH , DEPTH_ACTIVE_OBJECT , RENDER , CUSTOM } |
| using | iter_callback_t |
Static Public Member Functions | |
| static DRWContext & | get_active () |
| static bool | is_active () |
Public Attributes | |
| DRWData * | data = nullptr |
| DRWViewData * | view_data_active = nullptr |
| GPUViewport * | viewport = nullptr |
| blender::float2 | size = {0, 0} |
| blender::float2 | inv_size = {0, 0} |
| enum DRWContext::Mode | mode |
| struct { | |
| bool draw_background = false | |
| } | options |
| DRWTextStore ** | text_store_p = nullptr |
| GSet * | delayed_extraction = nullptr |
| Depsgraph * | depsgraph = nullptr |
| Scene * | scene = nullptr |
| ViewLayer * | view_layer = nullptr |
| const bContext * | evil_C = nullptr |
| ARegion * | region = nullptr |
| SpaceLink * | space_data = nullptr |
| RegionView3D * | rv3d = nullptr |
| View3D * | v3d = nullptr |
| Object * | obact = nullptr |
| Object * | object_pose = nullptr |
| Object * | object_edit = nullptr |
| eObjectMode | object_mode = OB_MODE_OBJECT |
Definition at line 224 of file DRW_render.hh.
Definition at line 368 of file DRW_render.hh.
| enum DRWContext::Mode |
| Enumerator | |
|---|---|
| VIEWPORT | Render for display of 2D or 3D area. Runs on main thread. |
| VIEWPORT_XR | Render for a 3D viewport in XR. Runs on main thread. |
| VIEWPORT_OFFSCREEN | Render for a 3D viewport offscreen render (python). Runs on main thread. |
| VIEWPORT_RENDER | Render for a 3D viewport image render (render preview). Runs on main thread. |
| SELECT_OBJECT | Render for object mode selection. Runs on main thread. |
| SELECT_OBJECT_MATERIAL | Render for object material selection. Runs on main thread. |
| SELECT_EDIT_MESH | Render for edit mesh selection. Runs on main thread. |
| DEPTH | Render for depth picking (auto-depth). Runs on main thread. |
| DEPTH_ACTIVE_OBJECT | |
| RENDER | Render for F12 final render. Can run in any thread. |
| CUSTOM | Used by custom pipeline. Can run in any thread. |
Definition at line 250 of file DRW_render.hh.
| DRWContext::DRWContext | ( | Mode | mode, |
| Depsgraph * | depsgraph, | ||
| GPUViewport * | viewport, | ||
| const bContext * | C = nullptr, | ||
| ARegion * | region = nullptr, | ||
| View3D * | v3d = nullptr ) |
If viewport is not specified, DRWData will be considered temporary and discarded on exit. If C is nullptr, it means that the context is not associated with any UI or operator. If region is nullptr, it will be sourced from the context C or left as nullptr otherwise. If v3d is nullptr, it will be sourced from the context C or left as nullptr otherwise.
Definition at line 170 of file draw_context.cc.
References C, depsgraph, DRWContext(), GPU_texture_height(), GPU_texture_width(), GPU_viewport_color_texture(), region, v3d, viewport, and blender::draw::color_management::viewport_color_management_set().
Referenced by DRWContext(), and get_active().
| DRWContext::~DRWContext | ( | ) |
Definition at line 189 of file draw_context.cc.
References BLI_assert.
| void DRWContext::acquire_data | ( | ) |
Acquire data and view_data_active. Needs to be called before enabling any draw engine. IMPORTANT: This can be called multiple times before release_data. IMPORTANT: This must be called with an active GPUContext.
Definition at line 450 of file draw_context.cc.
References BLI_assert, BLI_rctf_transform_calc_m4_pivot_min(), View2D::cur, CUSTOM, data, blender::draw::View::default_set(), DRW_view_data_default_lists_from_viewport(), DRW_viewport_data_create(), drw_viewport_data_ensure(), blender::gpu::TexturePool::get(), GPU_context_active_get(), GPU_viewport_active_view_get(), blender::MatBase< float, 4, 4 >::identity(), is_image_render(), mode, blender::MatBase< T, NumCol, NumRow, Alignment >::ptr(), blender::gpu::TexturePool::reset(), rv3d, ARegion::v2d, view, view_data_active, and viewport.
Referenced by DRW_cache_restart(), DRW_custom_pipeline_begin(), DRW_draw_depth_loop(), DRW_draw_render_loop_offscreen(), DRW_draw_select_id(), DRW_draw_select_loop(), DRW_draw_view(), DRW_render_gpencil(), and DRW_render_to_image().
| blender::gpu::FrameBuffer * DRWContext::default_framebuffer | ( | ) |
Returns the viewport's default frame-buffer.
Definition at line 195 of file draw_context.cc.
References view_data_active.
Referenced by drw_draw_render_loop_2d(), and drw_draw_render_loop_3d().
| void DRWContext::enable_engines | ( | bool | gpencil_engine_needed = false, |
| RenderEngineType * | render_engine_type = nullptr ) |
Enable engines from context. Not needed for Mode::RENDER and Mode::CUSTOM.
render_engine_type specify the engine to use in OB_MATERIAL or OB_RENDER modes. gpencil_engine_needed should be set to true if the grease pencil engine is needed.
Definition at line 1066 of file draw_context.cc.
References BLI_assert_unreachable, DRWViewData::compositor, DEPTH, DEPTH_ACTIVE_OBJECT, DRW_engine_external_acquire_for_image_editor(), DRW_engine_viewport_eevee_type, DRW_engine_viewport_workbench_type, DRWViewData::edit_select, DRWViewData::eevee, ELEM, DRWViewData::external, RenderEngineType::flag, SpaceNode::flag, G, DRWViewData::grease_pencil, DRWViewData::image, is_viewport_compositor_enabled(), mode, OB_MATERIAL, OB_RENDER, OB_SOLID, OB_WIRE, DRWViewData::object_select, DRWViewData::overlay, RE_INTERNAL, SELECT_EDIT_MESH, SELECT_OBJECT, SELECT_OBJECT_MATERIAL, DrawEngine::Pointer::set_used(), View3D::shading, SNODE_BACKDRAW, space_data, SPACE_IMAGE, SPACE_NODE, View3DShading::type, view_data_active, DRWViewData::workbench, and XRAY_ENABLED.
Referenced by DRW_draw_depth_loop(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRW_draw_select_id(), and DRW_draw_select_loop().
| void DRWContext::engines_data_validate | ( | ) |
Free unused engine data.
Definition at line 1154 of file draw_context.cc.
References DRW_view_data_free_unused(), and view_data_active.
Referenced by drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), and DRW_draw_select_loop().
| void DRWContext::engines_draw_scene | ( | ) |
Run enabled engine init and draw scene callbacks.
Definition at line 1023 of file draw_context.cc.
References blender::StringRefNull::c_str(), DrawEngine::draw(), DRW_manager_get(), G, G_DEBUG_GPU, GPU_BACKEND_OPENGL, GPU_debug_group_begin(), GPU_debug_group_end(), GPU_DEVICE_ANY, GPU_DRIVER_ANY, GPU_flush(), GPU_OS_ANY, GPU_type_matches_ex(), DrawEngine::name_get(), blender::draw::command::StateSet::set(), and view_data_active.
Referenced by DRW_draw_depth_loop(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRW_draw_select_id(), and DRW_draw_select_loop().
| void DRWContext::engines_init_and_sync | ( | iter_callback_t | iter_callback | ) |
Run enabled engine init and sync callbacks. iter_callback defines which object to sync.
Definition at line 1008 of file draw_context.cc.
References DrawEngine::begin_sync(), DrawEngine::end_sync(), DrawEngine::init(), obact, sync(), and view_data_active.
Referenced by DRW_draw_depth_loop(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRW_draw_select_id(), and DRW_draw_select_loop().
|
inlinestatic |
|
inlinestatic |
Return true if any DRWContext is active on this thread.
Definition at line 389 of file DRW_render.hh.
Referenced by DRW_draw_in_progress().
|
inline |
Definition at line 402 of file DRW_render.hh.
References DEPTH, DEPTH_ACTIVE_OBJECT, ELEM, and mode.
Referenced by blender::draw::overlay::Instance::init().
|
inline |
Definition at line 406 of file DRW_render.hh.
References ELEM, mode, RENDER, and VIEWPORT_RENDER.
Referenced by acquire_data(), blender::workbench::AntiAliasingPass::draw(), DRW_object_is_visible_psys_in_active_context(), blender::draw::overlay::Instance::init(), blender::workbench::SceneResources::init(), and blender::workbench::ObjectState::ObjectState().
|
inline |
Definition at line 398 of file DRW_render.hh.
References ELEM, mode, and SELECT_OBJECT_MATERIAL.
Referenced by blender::draw::overlay::Instance::init().
| bool DRWContext::is_navigating | ( | ) | const |
True if current viewport is drawn during navigation operator.
Definition at line 2170 of file draw_context.cc.
References rv3d, RV3D_NAVIGATING, and RV3D_PAINTING.
| bool DRWContext::is_painting | ( | ) | const |
True if current viewport is drawn during painting operator.
Definition at line 2175 of file draw_context.cc.
References rv3d, and RV3D_PAINTING.
| bool DRWContext::is_playback | ( | ) | const |
True if current viewport is drawn during playback.
Definition at line 2161 of file draw_context.cc.
References CTX_wm_manager(), ED_screen_animation_playing(), and evil_C.
|
inline |
Definition at line 410 of file DRW_render.hh.
References ELEM, mode, and RENDER.
Referenced by blender::workbench::AntiAliasingPass::draw(), DRW_object_visibility_in_active_context(), and blender::workbench::ObjectState::ObjectState().
|
inline |
Definition at line 394 of file DRW_render.hh.
References ELEM, mode, SELECT_EDIT_MESH, SELECT_OBJECT, and SELECT_OBJECT_MATERIAL.
| bool DRWContext::is_transforming | ( | ) | const |
True if current viewport is drawn during transforming operator.
Definition at line 2180 of file draw_context.cc.
References G, G_TRANSFORM_EDIT, and G_TRANSFORM_OBJ.
| bool DRWContext::is_viewport_compositor_enabled | ( | ) | const |
True if viewport compositor is enabled when drawing with this context.
Definition at line 2185 of file draw_context.cc.
References OB_MATERIAL, rv3d, RV3D_CAMOB, scene, View3D::shading, View3DShading::type, View3DShading::use_compositor, V3D_SHADING_USE_COMPOSITOR_CAMERA, and V3D_SHADING_USE_COMPOSITOR_DISABLED.
Referenced by enable_engines().
|
inline |
Definition at line 414 of file DRW_render.hh.
References ELEM, mode, and VIEWPORT_RENDER.
Referenced by blender::draw::compositor_engine::Context::get_compositing_region(), and blender::draw::overlay::Instance::init().
| void DRWContext::release_data | ( | ) |
Make sure to release acquired DRWData. If created on the fly, make sure to destroy them. IMPORTANT: This needs to be called with the same active GPUContext acquire_data() was called with.
Definition at line 510 of file draw_context.cc.
References BLI_assert, data, DRW_view_data_reset(), DRW_viewport_data_free(), GPU_context_active_get(), blender::draw::command::StateSet::set(), view_data_active, and viewport.
Referenced by DRW_custom_pipeline_end(), DRW_draw_depth_loop(), DRW_draw_render_loop_offscreen(), DRW_draw_select_id(), DRW_draw_select_loop(), DRW_draw_view(), DRW_render_gpencil(), and DRW_render_to_image().
| void DRWContext::sync | ( | iter_callback_t | iter_callback | ) |
Run the sync phase with data extraction. iter_callback defines which object to sync.
Definition at line 991 of file draw_context.cc.
References data, delayed_extraction, blender::draw::DRW_curves_update(), DupliCacheManager::extract_all(), view_data_active, and ExtractionGraph::work_and_wait().
Referenced by DRW_render_object_iter(), and engines_init_and_sync().
| DefaultFramebufferList * DRWContext::viewport_framebuffer_list_get | ( | ) | const |
Returns the viewport's default frame-buffer list. Not all of them might be available.
Definition at line 200 of file draw_context.cc.
References view_data_active.
Referenced by blender::draw::overlay::Resources::acquire(), drw_callbacks_post_scene(), drw_callbacks_post_scene_2D(), blender::draw::overlay::Instance::end_sync(), workbench_render_framebuffers_init(), and workbench_render_to_image().
|
inline |
Definition at line 383 of file DRW_render.hh.
References size.
Referenced by blender::draw::overlay::Instance::end_sync(), blender::draw::compositor_engine::Context::get_compositing_region(), blender::image_engine::ScreenTileTextures< Divisions >::gpu_texture_size(), blender::workbench::SceneResources::init(), blender::draw::gpencil::render_init_buffers(), blender::workbench::DofPass::sync(), blender::draw::overlay::Resources::update_theme_settings(), and workbench_render_framebuffers_init().
| DefaultTextureList * DRWContext::viewport_texture_list_get | ( | ) | const |
Returns the viewport's default texture list. Not all of them might be available.
Definition at line 205 of file draw_context.cc.
References view_data_active.
Referenced by blender::draw::overlay::Resources::acquire(), blender::image_engine::ScreenSpaceDrawingMode::begin_sync(), DRW_draw_select_loop(), blender::draw::overlay::Instance::end_sync(), blender::draw::compositor_engine::Context::get_pass(), workbench_render_framebuffers_init(), and workbench_render_to_image().
Cache generation
Definition at line 233 of file DRW_render.hh.
Referenced by acquire_data(), blender::draw::curves_pos_buffer_get(), blender::draw::curves_sub_pass_setup_implementation(), blender::draw::View::default_get(), blender::draw::View::default_set(), DRW_cache_restart(), blender::draw::DRW_curves_init(), blender::draw::DRW_curves_texture_for_evaluated_attribute(), blender::draw::DRW_curves_update(), DRW_custom_pipeline_begin(), blender::draw::DRW_pointcloud_init(), blender::draw::DRW_volume_init(), blender::draw::drw_volume_object_mesh_init(), blender::draw::hair_pos_buffer_get(), blender::draw::hair_sub_pass_setup_implementation(), blender::draw::pointcloud_sub_pass_setup_implementation(), release_data(), sync(), blender::draw::volume_object_grids_init(), and blender::draw::volume_world_grids_init().
Contains list of objects that needs to be extracted from other objects.
Definition at line 288 of file DRW_render.hh.
Referenced by blender::draw::drw_batch_cache_generate_requested_delayed(), and sync().
| Depsgraph* DRWContext::depsgraph = nullptr |
Current rendering context. Avoid too many lookups while drawing. Evaluated Depsgraph.
Definition at line 295 of file DRW_render.hh.
Referenced by drw_callbacks_post_scene(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRW_object_is_visible_psys_in_active_context(), blender::draw::drw_particle_get_hair_source(), blender::draw::drw_particle_update_ptcache(), blender::draw::drw_particle_update_ptcache_edit(), DRWContext(), DRWContext(), blender::draw::foreach_obref_in_scene(), blender::draw::compositor_engine::Context::get_compositing_region(), blender::draw::overlay::Instance::init(), blender::draw::particle_batch_cache_ensure_pos(), blender::draw::gpencil::Engine::render_to_image(), blender::eevee::store_node_tree_errors(), blender::draw::color_management::viewport_color_management_set(), and workbench_render_to_image().
| bool DRWContext::draw_background = false |
Definition at line 281 of file DRW_render.hh.
Referenced by DRW_draw_render_loop_offscreen(), DRW_draw_view(), DRW_render_gpencil(), DRW_render_to_image(), and blender::draw::overlay::Instance::init().
Last resort (some functions take this as an arg so we can't easily avoid). May be nullptr when used for selection or depth buffer.
Definition at line 303 of file DRW_render.hh.
Referenced by drw_callbacks_post_scene(), drw_callbacks_post_scene_2D(), drw_callbacks_pre_scene(), drw_callbacks_pre_scene_2D(), DRW_engine_external_acquire_for_image_editor(), blender::image_engine::Instance::init(), is_playback(), blender::workbench::ObjectState::ObjectState(), and blender::draw::sculpt_batches_get_ex().
| blender::float2 DRWContext::inv_size = {0, 0} |
Definition at line 241 of file DRW_render.hh.
| enum DRWContext::Mode DRWContext::mode |
Use 'object_edit' for edit-mode
Definition at line 313 of file DRW_render.hh.
Referenced by blender::draw::overlay::Armatures::draw_armature_pose(), blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_generate_requested_evaluated_mesh_or_curve(), DRW_draw_depth_loop(), engines_init_and_sync(), blender::draw::overlay::Instance::init(), and blender::workbench::ObjectState::ObjectState().
Definition at line 315 of file DRW_render.hh.
Referenced by blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_generate_requested_evaluated_mesh_or_curve(), DRW_object_is_renderable(), DRW_object_is_visible_psys_in_active_context(), and blender::draw::overlay::Instance::init().
| eObjectMode DRWContext::object_mode = OB_MODE_OBJECT |
Definition at line 314 of file DRW_render.hh.
Referenced by blender::draw::overlay::Armatures::draw_armature_pose(), DRW_draw_select_loop(), and blender::draw::overlay::Instance::init().
| struct { ... } DRWContext::options |
Can be nullptr depending on context.
Definition at line 305 of file DRW_render.hh.
Referenced by drw_callbacks_post_scene(), drw_callbacks_post_scene_2D(), drw_callbacks_pre_scene(), drw_callbacks_pre_scene_2D(), drw_draw_render_loop_2d(), drw_draw_render_loop_3d(), DRWContext(), blender::draw::compositor_engine::Context::get_compositing_region(), blender::draw::overlay::Instance::init(), and blender::image_engine::Instance::init().
| RegionView3D* DRWContext::rv3d = nullptr |
Can be nullptr depending on context.
Definition at line 309 of file DRW_render.hh.
Referenced by acquire_data(), drw_callbacks_post_scene(), drw_callbacks_pre_scene(), blender::draw::compositor_engine::Context::get_compositing_region(), blender::draw::overlay::Instance::init(), blender::workbench::DofPass::init(), is_navigating(), is_painting(), is_viewport_compositor_enabled(), blender::draw::external::Prepass::object_sync(), blender::workbench::ObjectState::ObjectState(), and blender::draw::sculpt_batches_get_ex().
Evaluated Scene.
Definition at line 297 of file DRW_render.hh.
Referenced by blender::draw::overlay::Armatures::draw_armature_pose(), blender::draw::drw_batch_cache_generate_requested(), blender::draw::drw_batch_cache_generate_requested_evaluated_mesh_or_curve(), DRW_engine_external_acquire_for_image_editor(), DRW_object_is_visible_psys_in_active_context(), blender::draw::drw_particle_update_ptcache(), blender::draw::drw_particle_update_ptcache_edit(), DRW_render_set_time(), blender::draw::DRW_volume_batch_cache_get_wireframes_face(), blender::draw::foreach_obref_in_scene(), blender::draw::compositor_engine::Context::get_compositing_region(), blender::image_engine::Instance::image_sync(), blender::draw::overlay::Instance::init(), is_viewport_compositor_enabled(), blender::draw::external::Prepass::object_sync(), blender::draw::particle_batch_cache_ensure_pos(), blender::draw::gpencil::render_frame(), and blender::draw::color_management::viewport_color_management_set().
| blender::float2 DRWContext::size = {0, 0} |
Size of the viewport or the final render frame.
Definition at line 240 of file DRW_render.hh.
Referenced by DRW_render_gpencil(), DRW_render_to_image(), DRWContext(), and viewport_size_get().
Can be nullptr depending on context.
Definition at line 307 of file DRW_render.hh.
Referenced by draw_show_annotation(), drw_callbacks_post_scene_2D(), drw_draw_render_loop_2d(), DRW_engine_external_acquire_for_image_editor(), enable_engines(), blender::draw::overlay::Instance::init(), blender::image_engine::Instance::init(), and blender::draw::color_management::viewport_color_management_set().
| DRWTextStore** DRWContext::text_store_p = nullptr |
Convenience pointer to text_store owned by the viewport
Definition at line 285 of file DRW_render.hh.
Referenced by DRW_text_cache_ensure().
Can be nullptr depending on context.
Definition at line 311 of file DRW_render.hh.
Referenced by blender::draw::Manager::compute_visibility(), draw_show_annotation(), drw_callbacks_post_scene(), drw_draw_render_loop_3d(), DRW_draw_view(), DRW_object_is_renderable(), DRW_render_object_iter(), DRWContext(), blender::draw::foreach_obref_in_scene(), blender::draw::compositor_engine::Context::get_compositing_region(), blender::draw::overlay::Instance::init(), and blender::draw::color_management::viewport_color_management_set().
| DRWViewData* DRWContext::view_data_active = nullptr |
Active view data structure for one of the 2 stereo view.
Definition at line 235 of file DRW_render.hh.
Referenced by acquire_data(), default_framebuffer(), DRW_draw_region_engine_info(), drw_engines_cache_populate(), DRW_manager_get(), DRW_viewport_pass_texture_get(), enable_engines(), engines_data_validate(), engines_draw_scene(), engines_init_and_sync(), release_data(), sync(), viewport_framebuffer_list_get(), and viewport_texture_list_get().
Evaluated ViewLayer.
Definition at line 299 of file DRW_render.hh.
Referenced by DRW_render_set_time(), blender::draw::overlay::Instance::init(), blender::draw::gpencil::render_frame(), blender::draw::gpencil::render_result_z(), and blender::draw::gpencil::Engine::render_to_image().
| GPUViewport* DRWContext::viewport = nullptr |
Optional associated viewport. Can be nullptr.
Definition at line 238 of file DRW_render.hh.
Referenced by acquire_data(), DRWContext(), and release_data().