Blender V4.3
DRW_engine.hh File Reference
#include "BLI_sys_types.h"
#include "DNA_object_enums.h"

Go to the source code of this file.

Classes

struct  DRWUpdateContext
 

Namespaces

namespace  blender
 
namespace  blender::draw
 

Typedefs

using DRW_SelectPassFn = bool (*)(eDRWSelectStage stage, void *user_data)
 
using DRW_ObjectFilterFn = bool (*)(Object *ob, void *user_data)
 

Enumerations

enum  eDRWSelectStage { DRW_SELECT_PASS_PRE = 1 , DRW_SELECT_PASS_POST }
 

Functions

void DRW_engines_register ()
 
void DRW_engines_free ()
 
bool DRW_engine_render_support (DrawEngineType *draw_engine_type)
 
void DRW_engine_register (DrawEngineType *draw_engine_type)
 
void DRW_engine_external_free (RegionView3D *rv3d)
 
void DRW_notify_view_update (const DRWUpdateContext *update_ctx)
 
void DRW_draw_view (const bContext *C)
 
void DRW_draw_region_engine_info (int xoffset, int *yoffset, int line_height)
 
void DRW_draw_render_loop_ex (Depsgraph *depsgraph, RenderEngineType *engine_type, ARegion *region, View3D *v3d, GPUViewport *viewport, const bContext *evil_C)
 
void DRW_draw_render_loop (Depsgraph *depsgraph, ARegion *region, View3D *v3d, GPUViewport *viewport)
 
void DRW_draw_render_loop_offscreen (Depsgraph *depsgraph, RenderEngineType *engine_type, ARegion *region, View3D *v3d, bool is_image_render, bool draw_background, bool do_color_management, GPUOffScreen *ofs, GPUViewport *viewport)
 
void DRW_draw_render_loop_2d_ex (Depsgraph *depsgraph, ARegion *region, GPUViewport *viewport, const bContext *evil_C)
 
void DRW_draw_select_loop (Depsgraph *depsgraph, ARegion *region, View3D *v3d, bool use_obedit_skip, bool draw_surface, bool use_nearest, bool do_material_sub_selection, const rcti *rect, DRW_SelectPassFn select_pass_fn, void *select_pass_user_data, DRW_ObjectFilterFn object_filter_fn, void *object_filter_user_data)
 
void DRW_draw_depth_loop (Depsgraph *depsgraph, ARegion *region, View3D *v3d, GPUViewport *viewport, const bool use_gpencil, const bool use_basic, const bool use_overlay, const bool use_only_selected)
 
void DRW_draw_depth_object (Scene *scene, ARegion *region, View3D *v3d, GPUViewport *viewport, Object *object)
 
void DRW_draw_select_id (Depsgraph *depsgraph, ARegion *region, View3D *v3d)
 
bool DRW_draw_in_progress ()
 
bool DRW_render_check_grease_pencil (Depsgraph *depsgraph)
 
void DRW_render_gpencil (RenderEngine *engine, Depsgraph *depsgraph)
 
DRWInstanceDataListDRW_instance_data_list_create ()
 
void DRW_instance_data_list_free (DRWInstanceDataList *idatalist)
 
void DRW_uniform_attrs_pool_free (GHash *table)
 
void DRW_render_context_enable (Render *render)
 
void DRW_render_context_disable (Render *render)
 
void DRW_gpu_context_create ()
 
void DRW_gpu_context_destroy ()
 
void DRW_gpu_context_enable ()
 
void DRW_gpu_context_disable ()
 
void DRW_cache_free_old_batches (Main *bmain)
 
void blender::draw::DRW_cache_free_old_subdiv ()
 
void blender::draw::DRW_subdiv_free ()
 
void DRW_gpu_context_enable_ex (bool restore)
 
void DRW_gpu_context_disable_ex (bool restore)
 
void DRW_system_gpu_render_context_enable (void *re_system_gpu_context)
 
void DRW_system_gpu_render_context_disable (void *re_system_gpu_context)
 
void DRW_blender_gpu_render_context_enable (void *re_gpu_context)
 
void DRW_blender_gpu_render_context_disable (void *re_gpu_context)
 
void DRW_deferred_shader_remove (GPUMaterial *mat)
 
void DRW_deferred_shader_optimize_remove (GPUMaterial *mat)
 
DrawDataListDRW_drawdatalist_from_id (ID *id)
 
void DRW_drawdata_free (ID *id)
 
DRWDataDRW_viewport_data_create ()
 
void DRW_viewport_data_free (DRWData *drw_data)
 
bool DRW_gpu_context_release ()
 
void DRW_gpu_context_activate (bool drw_state)
 
void DRW_draw_cursor_2d_ex (const ARegion *region, const float cursor[2])
 
void DRW_cdlayer_attr_aliases_add (GPUVertFormat *format, const char *base_name, int data_type, const char *layer_name, bool is_active_render, bool is_active_layer)
 

Typedef Documentation

◆ DRW_ObjectFilterFn

using DRW_ObjectFilterFn = bool (*)(Object *ob, void *user_data)

Definition at line 63 of file DRW_engine.hh.

◆ DRW_SelectPassFn

using DRW_SelectPassFn = bool (*)(eDRWSelectStage stage, void *user_data)

Definition at line 62 of file DRW_engine.hh.

Enumeration Type Documentation

◆ eDRWSelectStage

Enumerator
DRW_SELECT_PASS_PRE 
DRW_SELECT_PASS_POST 

Definition at line 58 of file DRW_engine.hh.

Function Documentation

◆ DRW_blender_gpu_render_context_disable()

void DRW_blender_gpu_render_context_disable ( void * re_gpu_context)

Definition at line 3349 of file draw_manager_c.cc.

References GPU_context_active_set(), and GPU_flush().

Referenced by DRW_render_context_disable().

◆ DRW_blender_gpu_render_context_enable()

void DRW_blender_gpu_render_context_enable ( void * re_gpu_context)

Definition at line 3341 of file draw_manager_c.cc.

References BLI_assert, BLI_thread_is_main(), and GPU_context_active_set().

Referenced by DRW_render_context_enable().

◆ DRW_cache_free_old_batches()

◆ DRW_cdlayer_attr_aliases_add()

void DRW_cdlayer_attr_aliases_add ( GPUVertFormat * format,
const char * base_name,
int data_type,
const char * layer_name,
bool is_active_render,
bool is_active_layer )

◆ DRW_deferred_shader_optimize_remove()

◆ DRW_deferred_shader_remove()

◆ DRW_draw_cursor_2d_ex()

◆ DRW_draw_depth_loop()

void DRW_draw_depth_loop ( Depsgraph * depsgraph,
ARegion * region,
View3D * v3d,
GPUViewport * viewport,
const bool use_gpencil,
const bool use_basic,
const bool use_overlay,
const bool use_only_selected )

Object mode select-loop.

Definition at line 2649 of file draw_manager_c.cc.

References BASE_SELECTED, BKE_object_is_visible_in_viewport(), BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS, DEGObjectIterSettings::depsgraph, depsgraph, DRWContextState::depsgraph, DRWManager::draw_ctx, draw_engine_gpencil_type, drw_context_state_init(), drw_duplidata_free(), drw_duplidata_load(), drw_engines_cache_finish(), drw_engines_cache_init(), drw_engines_cache_populate(), drw_engines_disable(), drw_engines_draw_scene(), drw_engines_enable_basic(), drw_engines_enable_overlays(), drw_engines_init(), drw_engines_world_update(), DRW_globals_update(), drw_manager_exit(), drw_manager_init(), DRW_render_instance_buffer_finish(), DRW_smoke_exit(), DRW_smoke_init(), drw_state_prepare_clean_for_draw(), DRW_state_reset(), drw_task_graph_deinit(), drw_task_graph_init(), DRW_volume_init(), DST, DRWManager::dupli_origin, DRWManager::dupli_origin_data, DRWManager::dupli_parent, DRWManager::dupli_source, ED_view3d_engine_type(), DRWContextState::engine_type, View3D::flag2, DEGObjectIterSettings::flags, GPU_ATTACHMENT_NONE, GPU_ATTACHMENT_TEXTURE, GPU_framebuffer_bind(), GPU_framebuffer_clear_depth(), GPU_framebuffer_ensure_config, GPU_framebuffer_free(), GPU_framebuffer_restore(), GPU_viewport_depth_texture(), DRWManager::is_depth, DRWContextState::obact, View3D::object_type_exclude_viewport, DRWManager::options, DRWContextState::region, DRWContextState::rv3d, DRWContextState::scene, scene, View3D::shading, View3DShading::type, use_drw_engine(), DRWContextState::v3d, V3D_SHOW_VIEWER, DRWContextState::view_layer, DEGObjectIterSettings::viewer_path, View3D::viewer_path, and DRWManager::vmempool.

Referenced by ED_view3d_depth_override().

◆ DRW_draw_depth_object()

◆ DRW_draw_in_progress()

bool DRW_draw_in_progress ( )

Query that drawing is in progress (use to prevent nested draw calls).

Definition at line 2953 of file draw_manager_c.cc.

References DST, and DRWManager::in_progress.

Referenced by ED_view3d_draw_offscreen_check_nested().

◆ DRW_draw_region_engine_info()

void DRW_draw_region_engine_info ( int xoffset,
int * yoffset,
int line_height )

Draw render engine info.

Definition at line 1153 of file draw_manager_c.cc.

References BLF_draw_default(), BLI_strchr_or_end(), DRW_ENABLED_ENGINE_ITER, DST, IFACE_, and DRWManager::view_data_active.

Referenced by view3d_draw_region_info().

◆ DRW_draw_render_loop()

void DRW_draw_render_loop ( Depsgraph * depsgraph,
ARegion * region,
View3D * v3d,
GPUViewport * viewport )

◆ DRW_draw_render_loop_2d_ex()

void DRW_draw_render_loop_2d_ex ( Depsgraph * depsgraph,
ARegion * region,
GPUViewport * viewport,
const bContext * evil_C )

Definition at line 2199 of file draw_manager_c.cc.

References BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), BLI_assert, CTX_wm_space_data(), DRWManager::default_framebuffer, DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS, DEGObjectIterSettings::depsgraph, depsgraph, DRWContextState::depsgraph, DRWManager::draw_ctx, drw_context_state_init(), drw_debug_init(), DRW_draw_cursor_2d(), DRW_draw_gizmo_2d(), drw_draw_show_annotation(), drw_engines_cache_finish(), drw_engines_cache_init(), drw_engines_cache_populate(), drw_engines_data_validate(), drw_engines_disable(), drw_engines_draw_scene(), drw_engines_draw_text(), drw_engines_enable_editors(), drw_engines_init(), DRW_globals_update(), drw_manager_exit(), drw_manager_init(), DRW_render_instance_buffer_finish(), DRW_state_reset(), DRW_stats_begin(), DRW_stats_draw(), DRW_stats_reset(), drw_task_graph_deinit(), drw_task_graph_init(), DRW_view_data_cache_time_get(), DRW_viewport_colormanagement_set(), DRW_viewport_framebuffer_list_get(), DST, ED_annotation_draw_view2d(), ED_region_draw_cb_draw(), ED_region_pixelspace(), ED_region_visible_rect(), DRWContextState::evil_C, DEGObjectIterSettings::flags, G, GPU_BACKEND_OPENGL, GPU_DEPTH_LESS_EQUAL, GPU_DEPTH_NONE, GPU_depth_test(), GPU_DEVICE_ANY, GPU_DRIVER_ANY, GPU_flush(), GPU_framebuffer_active_get(), GPU_framebuffer_back_get(), GPU_framebuffer_bind(), GPU_framebuffer_clear_depth_stencil(), GPU_framebuffer_restore(), GPU_matrix_pop_projection(), GPU_matrix_push_projection(), GPU_OS_ANY, GPU_type_matches_ex(), DRWContextState::obact, DefaultFramebufferList::overlay_fb, PROFILE_END_UPDATE, PROFILE_START, DRWContextState::region, REGION_DRAW_POST_VIEW, REGION_DRAW_PRE_VIEW, DRWContextState::scene, scene, DRWContextState::space_data, SPACE_IMAGE, SpaceLink::spacetype, DRWManager::view_data_active, DRWContextState::view_layer, WM_draw_region_get_bound_viewport(), and wmOrtho2().

Referenced by DRW_draw_view().

◆ DRW_draw_render_loop_ex()

void DRW_draw_render_loop_ex ( Depsgraph * depsgraph,
RenderEngineType * engine_type,
ARegion * region,
View3D * v3d,
GPUViewport * viewport,
const bContext * evil_C )

Used for both regular and off-screen drawing. Need to reset DST before calling this function

Definition at line 1657 of file draw_manager_c.cc.

References BKE_object_is_visible_in_viewport(), BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), BLI_assert, DRWManager::default_framebuffer, DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS, DEGObjectIterSettings::depsgraph, depsgraph, DRWContextState::depsgraph, DRWManager::draw_ctx, drw_context_state_init(), drw_debug_init(), DRW_draw_callbacks_post_scene(), DRW_draw_callbacks_pre_scene(), drw_duplidata_free(), drw_duplidata_load(), drw_engines_cache_finish(), drw_engines_cache_init(), drw_engines_cache_populate(), drw_engines_data_validate(), drw_engines_disable(), drw_engines_draw_scene(), drw_engines_enable(), drw_engines_init(), drw_engines_world_update(), DRW_globals_update(), drw_gpencil_engine_needed(), drw_manager_exit(), drw_manager_init(), DRW_render_instance_buffer_finish(), DRW_smoke_exit(), DRW_smoke_init(), DRW_state_reset(), DRW_stats_begin(), DRW_stats_reset(), drw_task_graph_deinit(), drw_task_graph_init(), DRW_view_data_cache_time_get(), DRW_viewport_colormanagement_set(), DRW_volume_init(), DST, DRWManager::dupli_origin, DRWManager::dupli_origin_data, DRWManager::dupli_parent, DRWManager::dupli_source, DRWContextState::engine_type, DRWContextState::evil_C, RenderEngineType::flag, View3D::flag2, DEGObjectIterSettings::flags, GPU_BACKEND_OPENGL, GPU_DEVICE_ANY, GPU_DRIVER_ANY, GPU_flush(), GPU_framebuffer_active_get(), GPU_framebuffer_back_get(), GPU_framebuffer_bind(), GPU_framebuffer_clear_depth_stencil(), GPU_framebuffer_restore(), GPU_OS_ANY, GPU_type_matches_ex(), OB_RENDER, DRWContextState::obact, View3D::object_type_exclude_viewport, PROFILE_END_UPDATE, PROFILE_START, RE_INTERNAL, DRWContextState::region, DRWContextState::rv3d, DRWContextState::scene, scene, View3D::shading, View3DShading::type, DRWContextState::v3d, V3D_HIDE_OVERLAYS, V3D_SHOW_VIEWER, DRWManager::view_data_active, DRWContextState::view_layer, DEGObjectIterSettings::viewer_path, View3D::viewer_path, DRWManager::vmempool, and WM_draw_region_get_bound_viewport().

Referenced by DRW_draw_render_loop(), DRW_draw_render_loop_offscreen(), and DRW_draw_view().

◆ DRW_draw_render_loop_offscreen()

◆ DRW_draw_select_id()

◆ DRW_draw_select_loop()

void DRW_draw_select_loop ( Depsgraph * depsgraph,
ARegion * region,
View3D * v3d,
bool use_obedit_skip,
bool draw_surface,
bool use_nearest,
bool do_material_sub_selection,
const rcti * rect,
DRW_SelectPassFn select_pass_fn,
void * select_pass_user_data,
DRW_ObjectFilterFn object_filter_fn,
void * object_filter_user_data )

Object mode select-loop.

Definition at line 2401 of file draw_manager_c.cc.

References BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT, BASE_FROM_DUPLI, BASE_SELECTABLE, BKE_modifiers_is_deformed_by_armature(), BKE_object_is_visible_in_viewport(), BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), BLI_assert, BLI_rcti_size_x(), BLI_rcti_size_y(), DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), DEG_OBJECT_ITER_BEGIN, DEG_OBJECT_ITER_END, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS, DEGObjectIterSettings::depsgraph, depsgraph, DRWContextState::depsgraph, DefaultTextureList::depth, DRWManager::draw_ctx, draw_engine_gpencil_type, draw_engine_select_next_type, draw_select_framebuffer_depth_only_setup(), drw_context_state_init(), DRW_draw_callbacks_pre_scene(), drw_duplidata_free(), drw_duplidata_load(), drw_engines_cache_finish(), drw_engines_cache_init(), drw_engines_cache_populate(), drw_engines_data_validate(), drw_engines_disable(), drw_engines_draw_scene(), drw_engines_enable_basic(), drw_engines_enable_overlays(), drw_engines_init(), drw_engines_world_update(), DRW_globals_update(), drw_gpencil_engine_needed(), drw_manager_exit(), drw_manager_init(), DRW_render_instance_buffer_finish(), DRW_select_load_id(), DRW_SELECT_PASS_POST, DRW_SELECT_PASS_PRE, DRW_smoke_exit(), DRW_smoke_init(), DRW_STATE_DEPTH_TEST_ENABLED, DRW_state_lock(), drw_state_prepare_clean_for_draw(), DRW_state_reset(), DRW_STATE_WRITE_DEPTH, drw_task_graph_deinit(), drw_task_graph_init(), DRW_viewport_texture_list_get(), DRW_volume_init(), DST, DRWManager::dupli_origin, DRWManager::dupli_origin_data, DRWManager::dupli_parent, DRWManager::dupli_source, ED_view3d_engine_type(), DRWContextState::engine_type, View3DOverlay::flag, View3D::flag2, DEGObjectIterSettings::flags, FOREACH_OBJECT_IN_MODE_BEGIN, FOREACH_OBJECT_IN_MODE_END, DRWSelectBuffer::framebuffer_depth_only, g_select_buffer, GPU_framebuffer_bind(), GPU_framebuffer_clear_depth(), GPU_framebuffer_restore(), DRWManager::is_material_select, DRWManager::is_select, Object::mode, OB_ARMATURE, OB_MBALL, OB_MODE_POSE, DRWContextState::obact, OBEDIT_FROM_OBACT, DRWContextState::object_pose, View3D::object_type_exclude_select, View3D::object_type_exclude_viewport, OBPOSE_FROM_OBACT, OBWEIGHTPAINT_FROM_OBACT, DRWManager::options, View3D::overlay, DRWContextState::region, DRWContextState::rv3d, DRWContextState::scene, scene, View3D::shading, DRWSelectBuffer::texture_depth, Object::type, View3DShading::type, UNUSED_VARS, use_drw_engine(), DRWContextState::v3d, V3D_HIDE_OVERLAYS, V3D_OVERLAY_BONE_SELECT, V3D_SHOW_VIEWER, DRWContextState::view_layer, DEGObjectIterSettings::viewer_path, View3D::viewer_path, and DRWManager::vmempool.

Referenced by view3d_opengl_select_ex().

◆ DRW_draw_view()

◆ DRW_drawdata_free()

◆ DRW_drawdatalist_from_id()

DrawDataList * DRW_drawdatalist_from_id ( ID * id)

Get DrawData from the given ID-block. In order for this to work, we assume that the DrawData pointer is stored in the in the same fashion as in IdDdtTemplate.

Definition at line 873 of file draw_manager_c.cc.

References IdDdtTemplate::drawdata, and id_can_have_drawdata().

Referenced by direct_link_id_common(), DRW_drawdata_ensure(), DRW_drawdata_free(), DRW_drawdata_get(), drw_drawdata_unlink_dupli(), id_buffer_init_from_id(), blender::deg::RuntimeBackup::init_from_id(), and select_cache_populate().

◆ DRW_engine_external_free()

◆ DRW_engine_register()

◆ DRW_engine_render_support()

bool DRW_engine_render_support ( DrawEngineType * draw_engine_type)

Definition at line 3057 of file draw_manager_c.cc.

References DrawEngineType::render_to_image.

◆ DRW_engines_free()

◆ DRW_engines_register()

◆ DRW_gpu_context_activate()

◆ DRW_gpu_context_create()

◆ DRW_gpu_context_destroy()

◆ DRW_gpu_context_disable()

◆ DRW_gpu_context_disable_ex()

◆ DRW_gpu_context_enable()

◆ DRW_gpu_context_enable_ex()

◆ DRW_gpu_context_release()

◆ DRW_instance_data_list_create()

◆ DRW_instance_data_list_free()

◆ DRW_notify_view_update()

◆ DRW_render_check_grease_pencil()

◆ DRW_render_context_disable()

◆ DRW_render_context_enable()

◆ DRW_render_gpencil()

◆ DRW_system_gpu_render_context_disable()

void DRW_system_gpu_render_context_disable ( void * re_system_gpu_context)

◆ DRW_system_gpu_render_context_enable()

void DRW_system_gpu_render_context_enable ( void * re_system_gpu_context)

◆ DRW_uniform_attrs_pool_free()

void DRW_uniform_attrs_pool_free ( GHash * table)

Definition at line 747 of file draw_instance_data.cc.

References BLI_ghash_free(), and drw_uniform_attrs_pool_free_cb().

Referenced by DRW_viewport_data_free().

◆ DRW_viewport_data_create()

◆ DRW_viewport_data_free()