|
Blender V4.5
|
#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 | |
| bool draw_text = 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 209 of file DRW_render.hh.
Definition at line 354 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 235 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 174 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 193 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 466 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().
| GPUFrameBuffer * DRWContext::default_framebuffer | ( | ) |
Returns the viewport's default frame-buffer.
Definition at line 199 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 861 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 949 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 814 of file draw_context.cc.
References blender::StringRefNull::c_str(), DrawEngine::draw(), DRW_manager_get(), 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 788 of file draw_context.cc.
References DrawEngine::begin_sync(), DRW_text_cache_destroy(), DrawEngine::end_sync(), DrawEngine::init(), obact, sync(), DrawEngine::text_draw_cache, text_store_p, 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 375 of file DRW_render.hh.
Referenced by DRW_draw_in_progress().
|
inline |
Definition at line 388 of file DRW_render.hh.
References DEPTH, DEPTH_ACTIVE_OBJECT, ELEM, and mode.
Referenced by blender::draw::overlay::Instance::init().
|
inline |
Definition at line 392 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 384 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 1983 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 1988 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 1974 of file draw_context.cc.
References CTX_wm_manager(), ED_screen_animation_playing(), and evil_C.
|
inline |
Definition at line 396 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 380 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 1993 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 1998 of file draw_context.cc.
References OB_MATERIAL, rv3d, RV3D_CAMOB, scene, View3D::shading, this, View3DShading::type, View3DShading::use_compositor, V3D_SHADING_USE_COMPOSITOR_CAMERA, and V3D_SHADING_USE_COMPOSITOR_DISABLED.
Referenced by enable_engines().
|
inline |
Definition at line 400 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 526 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(), and DRW_draw_view().
| 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 771 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 204 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 369 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 209 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 218 of file DRW_render.hh.
Referenced by acquire_data(), blender::draw::curves_cache_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_cache_update_compute(), blender::draw::DRW_curves_init(), blender::draw::DRW_curves_update(), DRW_custom_pipeline_begin(), drw_hair_particle_cache_update_compute(), blender::draw::DRW_pointcloud_init(), blender::draw::DRW_volume_init(), blender::draw::drw_volume_object_mesh_init(), blender::draw::hair_particle_cache_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 274 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 281 of file DRW_render.hh.
Referenced by drw_callbacks_post_scene(), DRW_draw_depth_loop(), 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::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::draw::color_management::viewport_color_management_set(), and workbench_render_to_image().
| bool DRWContext::draw_background = false |
Definition at line 266 of file DRW_render.hh.
Referenced by DRW_draw_render_loop_offscreen(), DRW_draw_view(), and blender::draw::overlay::Instance::init().
| bool DRWContext::draw_text = false |
Definition at line 267 of file DRW_render.hh.
Referenced by 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 289 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(), 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 226 of file DRW_render.hh.
| enum DRWContext::Mode DRWContext::mode |
Use 'object_edit' for edit-mode
Definition at line 299 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 301 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 300 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 |
Referenced by DRW_draw_render_loop_offscreen(), DRW_draw_view(), and blender::draw::overlay::Instance::init().
Can be nullptr depending on context.
Definition at line 291 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(), drw_engines_draw_text(), 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 295 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 283 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(), blender::draw::DRW_curves_pos_buffer_get(), DRW_engine_external_acquire_for_image_editor(), DRW_hair_pos_buffer_get(), 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::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 225 of file DRW_render.hh.
Referenced by DRWContext(), and viewport_size_get().
Can be nullptr depending on context.
Definition at line 293 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 271 of file DRW_render.hh.
Referenced by DRW_text_cache_ensure(), and engines_init_and_sync().
Can be nullptr depending on context.
Definition at line 297 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_engines_draw_text(), DRW_object_is_renderable(), DRW_render_object_iter(), DRWContext(), 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 220 of file DRW_render.hh.
Referenced by acquire_data(), default_framebuffer(), DRW_draw_region_engine_info(), drw_engines_cache_populate(), drw_engines_draw_text(), 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 285 of file DRW_render.hh.
Referenced by DRW_render_set_time(), blender::draw::overlay::Instance::init(), 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 223 of file DRW_render.hh.
Referenced by acquire_data(), DRWContext(), and release_data().