Blender V5.0
DRWContext Struct Reference

#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

Public Member Functions

blender::gpu::FrameBufferdefault_framebuffer ()
DefaultFramebufferListviewport_framebuffer_list_get () const
DefaultTextureListviewport_texture_list_get () const
 DRWContext (Mode mode, Depsgraph *depsgraph, GPUViewport *viewport, const bContext *C=nullptr, ARegion *region=nullptr, View3D *v3d=nullptr)
 DRWContext (Mode mode, Depsgraph *depsgraph, const blender::int2 size={1, 1}, const bContext *C=nullptr, ARegion *region=nullptr, View3D *v3d=nullptr)
 ~DRWContext ()
blender::float2 viewport_size_get () const
bool is_select () const
bool is_material_select () const
bool is_depth () const
bool is_image_render () const
bool is_scene_render () const
bool is_viewport_image_render () const
Viewport (DRW_viewport)
void acquire_data ()
void release_data ()
Rendering (DRW_engines)
void enable_engines (bool gpencil_engine_needed=false, RenderEngineType *render_engine_type=nullptr)
void engines_data_validate ()
void sync (iter_callback_t iter_callback)
void engines_init_and_sync (iter_callback_t iter_callback)
void engines_draw_scene ()
Draw Manager State
bool is_playback () const
bool is_navigating () const
bool is_painting () const
bool is_transforming () const
bool is_viewport_compositor_enabled () const

Static Public Member Functions

static DRWContextget_active ()
static bool is_active ()

Public Attributes

DRWDatadata = nullptr
DRWViewDataview_data_active = nullptr
GPUViewportviewport = 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
GSetdelayed_extraction = nullptr
Depsgraph * depsgraph = nullptr
Scenescene = nullptr
ViewLayerview_layer = nullptr
const bContextevil_C = nullptr
ARegionregion = nullptr
SpaceLinkspace_data = nullptr
RegionView3Drv3d = nullptr
View3Dv3d = nullptr
Objectobact = nullptr
Objectobject_pose = nullptr
Objectobject_edit = nullptr
eObjectMode object_mode = OB_MODE_OBJECT

Detailed Description

Definition at line 224 of file DRW_render.hh.

Member Typedef Documentation

◆ iter_callback_t

Initial value:

Definition at line 368 of file DRW_render.hh.

Member Enumeration Documentation

◆ 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.

Constructor & Destructor Documentation

◆ DRWContext() [1/2]

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() [2/2]

DRWContext::DRWContext ( Mode mode,
Depsgraph * depsgraph,
const blender::int2 size = {1, 1},
const bContext * C = nullptr,
ARegion * region = nullptr,
View3D * v3d = nullptr )

References depsgraph, mode, and size.

◆ ~DRWContext()

DRWContext::~DRWContext ( )

Definition at line 189 of file draw_context.cc.

References BLI_assert.

Member Function Documentation

◆ acquire_data()

◆ default_framebuffer()

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().

◆ enable_engines()

◆ engines_data_validate()

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().

◆ engines_draw_scene()

◆ engines_init_and_sync()

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().

◆ get_active()

DRWContext & DRWContext::get_active ( )
inlinestatic

Definition at line 378 of file DRW_render.hh.

References DRWContext().

Referenced by drw_get().

◆ is_active()

bool DRWContext::is_active ( )
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().

◆ is_depth()

bool DRWContext::is_depth ( ) const
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().

◆ is_image_render()

◆ is_material_select()

bool DRWContext::is_material_select ( ) const
inline

Definition at line 398 of file DRW_render.hh.

References ELEM, mode, and SELECT_OBJECT_MATERIAL.

Referenced by blender::draw::overlay::Instance::init().

◆ is_navigating()

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.

◆ is_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.

◆ is_playback()

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.

◆ is_scene_render()

bool DRWContext::is_scene_render ( ) const
inline

◆ is_select()

bool DRWContext::is_select ( ) const
inline

Definition at line 394 of file DRW_render.hh.

References ELEM, mode, SELECT_EDIT_MESH, SELECT_OBJECT, and SELECT_OBJECT_MATERIAL.

◆ is_transforming()

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.

◆ is_viewport_compositor_enabled()

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().

◆ is_viewport_image_render()

bool DRWContext::is_viewport_image_render ( ) const
inline

◆ release_data()

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().

◆ sync()

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().

◆ viewport_framebuffer_list_get()

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().

◆ viewport_size_get()

◆ viewport_texture_list_get()

Member Data Documentation

◆ data

◆ delayed_extraction

GSet* DRWContext::delayed_extraction = nullptr

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

◆ draw_background

◆ evil_C

const bContext* DRWContext::evil_C = nullptr

◆ inv_size

blender::float2 DRWContext::inv_size = {0, 0}

Definition at line 241 of file DRW_render.hh.

◆ mode

◆ obact

◆ object_edit

◆ object_mode

◆ object_pose

◆ [struct]

◆ region

◆ rv3d

◆ scene

◆ size

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().

◆ space_data

◆ text_store_p

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().

◆ v3d

◆ view_data_active

◆ view_layer

◆ viewport

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().


The documentation for this struct was generated from the following files: