Blender  V3.3
Classes | Typedefs | Enumerations | Functions
DRW_engine.h File Reference
#include "BLI_sys_types.h"
#include "DNA_object_enums.h"

Go to the source code of this file.

Classes

struct  DRWUpdateContext
 

Typedefs

typedef struct DRWUpdateContext DRWUpdateContext
 
typedef enum eDRWSelectStage eDRWSelectStage
 
typedef bool(* DRW_SelectPassFn) (eDRWSelectStage stage, void *user_data)
 
typedef bool(* DRW_ObjectFilterFn) (struct Object *ob, void *user_data)
 

Enumerations

enum  eDRWSelectStage { DRW_SELECT_PASS_PRE = 1 , DRW_SELECT_PASS_POST }
 

Functions

void DRW_engines_register (void)
 
void DRW_engines_register_experimental (void)
 
void DRW_engines_free (void)
 
bool DRW_engine_render_support (struct DrawEngineType *draw_engine_type)
 
void DRW_engine_register (struct DrawEngineType *draw_engine_type)
 
void DRW_notify_view_update (const DRWUpdateContext *update_ctx)
 
void DRW_draw_view (const struct bContext *C)
 
void DRW_draw_region_engine_info (int xoffset, int *yoffset, int line_height)
 
void DRW_draw_render_loop_ex (struct Depsgraph *depsgraph, struct RenderEngineType *engine_type, struct ARegion *region, struct View3D *v3d, struct GPUViewport *viewport, const struct bContext *evil_C)
 
void DRW_draw_render_loop (struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, struct GPUViewport *viewport)
 
void DRW_draw_render_loop_offscreen (struct Depsgraph *depsgraph, struct RenderEngineType *engine_type, struct ARegion *region, struct View3D *v3d, bool is_image_render, bool draw_background, bool do_color_management, struct GPUOffScreen *ofs, struct GPUViewport *viewport)
 
void DRW_draw_render_loop_2d_ex (struct Depsgraph *depsgraph, struct ARegion *region, struct GPUViewport *viewport, const struct bContext *evil_C)
 
void DRW_draw_select_loop (struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, bool use_obedit_skip, bool draw_surface, bool use_nearest, bool do_material_sub_selection, const struct 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 (struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, struct GPUViewport *viewport, const bool use_gpencil, const bool use_basic, const bool use_overlay)
 
void DRW_draw_depth_object (struct Scene *scene, struct ARegion *region, struct View3D *v3d, struct GPUViewport *viewport, struct Object *object)
 
void DRW_draw_select_id (struct Depsgraph *depsgraph, struct ARegion *region, struct View3D *v3d, const struct rcti *rect)
 
bool DRW_render_check_grease_pencil (struct Depsgraph *depsgraph)
 
void DRW_render_gpencil (struct RenderEngine *engine, struct Depsgraph *depsgraph)
 
struct DRWInstanceDataListDRW_instance_data_list_create (void)
 
void DRW_instance_data_list_free (struct DRWInstanceDataList *idatalist)
 
void DRW_uniform_attrs_pool_free (struct GHash *table)
 
void DRW_render_context_enable (struct Render *render)
 
void DRW_render_context_disable (struct Render *render)
 
void DRW_opengl_context_create (void)
 
void DRW_opengl_context_destroy (void)
 
void DRW_opengl_context_enable (void)
 
void DRW_opengl_context_disable (void)
 
void DRW_cache_free_old_batches (struct Main *bmain)
 
void DRW_cache_free_old_subdiv (void)
 
void DRW_subdiv_free (void)
 
void DRW_opengl_context_enable_ex (bool restore)
 
void DRW_opengl_context_disable_ex (bool restore)
 
void DRW_opengl_render_context_enable (void *re_gl_context)
 
void DRW_opengl_render_context_disable (void *re_gl_context)
 
void DRW_gpu_render_context_enable (void *re_gpu_context)
 
void DRW_gpu_render_context_disable (void *re_gpu_context)
 
void DRW_deferred_shader_remove (struct GPUMaterial *mat)
 
struct DrawDataListDRW_drawdatalist_from_id (struct ID *id)
 
void DRW_drawdata_free (struct ID *id)
 
struct DRWDataDRW_viewport_data_create (void)
 
void DRW_viewport_data_free (struct DRWData *drw_data)
 
bool DRW_opengl_context_release (void)
 
void DRW_opengl_context_activate (bool drw_state)
 
void DRW_draw_cursor_2d_ex (const struct ARegion *region, const float cursor[2])
 
void DRW_cdlayer_attr_aliases_add (struct GPUVertFormat *format, const char *base_name, const struct CustomData *data, const struct CustomDataLayer *cl, bool is_active_render, bool is_active_layer)
 

Typedef Documentation

◆ DRW_ObjectFilterFn

typedef bool(* DRW_ObjectFilterFn) (struct Object *ob, void *user_data)

Definition at line 65 of file DRW_engine.h.

◆ DRW_SelectPassFn

typedef bool(* DRW_SelectPassFn) (eDRWSelectStage stage, void *user_data)

Definition at line 64 of file DRW_engine.h.

◆ DRWUpdateContext

◆ eDRWSelectStage

Enumeration Type Documentation

◆ eDRWSelectStage

Enumerator
DRW_SELECT_PASS_PRE 
DRW_SELECT_PASS_POST 

Definition at line 60 of file DRW_engine.h.

Function Documentation

◆ DRW_cache_free_old_batches()

void DRW_cache_free_old_batches ( struct Main bmain)

◆ DRW_cache_free_old_subdiv()

void DRW_cache_free_old_subdiv ( void  )

◆ DRW_cdlayer_attr_aliases_add()

void DRW_cdlayer_attr_aliases_add ( struct GPUVertFormat format,
const char *  base_name,
const struct CustomData data,
const struct CustomDataLayer cl,
bool  is_active_render,
bool  is_active_layer 
)

◆ DRW_deferred_shader_remove()

void DRW_deferred_shader_remove ( struct GPUMaterial mat)

◆ DRW_draw_cursor_2d_ex()

void DRW_draw_cursor_2d_ex ( const struct ARegion region,
const float  cursor[2] 
)

We may want to move this into a more general location.

Note
This doesn't require the draw context to be in use.

Referenced by sequencer_preview_region_draw().

◆ DRW_draw_depth_loop()

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

object mode select-loop, see: ED_view3d_draw_depth_loop (legacy drawing).

object mode select-loop, see: ED_view3d_draw_depth_loop (legacy drawing).

Definition at line 2538 of file draw_manager.c.

References BKE_object_is_visible_in_viewport(), data_, DEG_get_evaluated_scene(), DEG_get_evaluated_view_layer(), DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN, DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END, depsgraph, DRWContextState::depsgraph, DRWManager::draw_ctx, draw_engine_gpencil_type, drw_context_state_init(), DRW_curves_init(), DRW_curves_update(), 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(), GPU_framebuffer_bind(), GPU_framebuffer_free(), GPU_framebuffer_restore(), GPU_viewport_depth_texture(), DRWManager::is_depth, NULL, OBACT, View3D::object_type_exclude_viewport, DRWManager::options, DRWContextState::region, ARegion::regiondata, scene, DRWContextState::scene, View3D::shading, View3DShading::type, use_drw_engine(), and DRWManager::vmempool.

Referenced by ED_view3d_depth_override().

◆ DRW_draw_depth_object()

void DRW_draw_depth_object ( struct Scene scene,
struct ARegion region,
struct View3D v3d,
struct GPUViewport viewport,
struct Object object 
)

◆ DRW_draw_region_engine_info()

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

◆ DRW_draw_render_loop()

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

◆ DRW_draw_render_loop_2d_ex()

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

◆ DRW_draw_render_loop_ex()

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

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

◆ DRW_draw_render_loop_offscreen()

void DRW_draw_render_loop_offscreen ( struct Depsgraph depsgraph,
struct RenderEngineType engine_type,
struct ARegion region,
struct View3D v3d,
bool  is_image_render,
bool  draw_background,
bool  do_color_management,
struct GPUOffScreen ofs,
struct GPUViewport viewport 
)

◆ DRW_draw_select_id()

void DRW_draw_select_id ( struct Depsgraph depsgraph,
struct ARegion region,
struct View3D v3d,
const struct rcti rect 
)

Referenced by DRW_select_buffer_read().

◆ DRW_draw_select_loop()

void DRW_draw_select_loop ( struct Depsgraph depsgraph,
struct ARegion region,
struct View3D v3d,
bool  use_obedit_skip,
bool  draw_surface,
bool  use_nearest,
bool  do_material_sub_selection,
const struct 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, see: ED_view3d_draw_select_loop (legacy drawing).

Referenced by view3d_opengl_select_ex().

◆ DRW_draw_view()

void DRW_draw_view ( const struct bContext C)

Everything starts here. This function takes care of calling all cache and rendering functions for each relevant engine / mode engine.

Referenced by blender::ed::space_node::draw_nodespace_back_pix(), image_main_region_draw(), and view3d_draw_view().

◆ DRW_drawdata_free()

void DRW_drawdata_free ( struct ID id)

Definition at line 911 of file draw_manager.c.

References BLI_freelistN(), DRW_drawdatalist_from_id(), LISTBASE_FOREACH, and NULL.

Referenced by object_free_data(), and world_free_data().

◆ DRW_drawdatalist_from_id()

struct DrawDataList* DRW_drawdatalist_from_id ( struct 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 struct in the same fashion as in IdDdtTemplate.

Definition at line 836 of file draw_manager.c.

References IdDdtTemplate::drawdata, id_can_have_drawdata(), and NULL.

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

◆ DRW_engine_register()

void DRW_engine_register ( struct DrawEngineType draw_engine_type)

◆ DRW_engine_render_support()

bool DRW_engine_render_support ( struct DrawEngineType draw_engine_type)

Definition at line 2903 of file draw_manager.c.

References DrawEngineType::render_to_image.

Referenced by RE_engine_is_opengl().

◆ DRW_engines_free()

void DRW_engines_free ( void  )

◆ DRW_engines_register()

void DRW_engines_register ( void  )

Definition at line 2925 of file draw_manager.c.

References BKE_curve_batch_cache_dirty_tag_cb, BKE_curve_batch_cache_free_cb, BKE_curves_batch_cache_dirty_tag_cb, BKE_curves_batch_cache_free_cb, BKE_gpencil_batch_cache_dirty_tag_cb, BKE_gpencil_batch_cache_free_cb, BKE_lattice_batch_cache_dirty_tag_cb, BKE_lattice_batch_cache_free_cb, BKE_mball_batch_cache_dirty_tag_cb, BKE_mball_batch_cache_free_cb, BKE_mesh_batch_cache_dirty_tag_cb, BKE_mesh_batch_cache_free_cb, BKE_particle_batch_cache_dirty_tag_cb, BKE_particle_batch_cache_free_cb, BKE_pointcloud_batch_cache_dirty_tag_cb, BKE_pointcloud_batch_cache_free_cb, BKE_subsurf_modifier_free_gpu_cache_cb, BKE_volume_batch_cache_dirty_tag_cb, BKE_volume_batch_cache_free_cb, RenderEngineType::draw_engine, draw_engine_basic_type, draw_engine_debug_select_type, draw_engine_gpencil_type, draw_engine_image_type, draw_engine_overlay_type, draw_engine_select_type, DRW_curve_batch_cache_dirty_tag(), DRW_curve_batch_cache_free(), DRW_curves_batch_cache_dirty_tag(), DRW_curves_batch_cache_free(), DRW_engine_register(), DRW_engine_viewport_eevee_type, DRW_engine_viewport_external_type, DRW_engine_viewport_workbench_type, DRW_gpencil_batch_cache_dirty_tag(), DRW_gpencil_batch_cache_free(), DRW_lattice_batch_cache_dirty_tag(), DRW_lattice_batch_cache_free(), DRW_mball_batch_cache_dirty_tag(), DRW_mball_batch_cache_free(), DRW_mesh_batch_cache_dirty_tag(), DRW_mesh_batch_cache_free(), DRW_particle_batch_cache_dirty_tag(), DRW_particle_batch_cache_free(), DRW_pointcloud_batch_cache_dirty_tag(), DRW_pointcloud_batch_cache_free(), DRW_subdiv_cache_free(), DRW_volume_batch_cache_dirty_tag(), DRW_volume_batch_cache_free(), and RE_engines_register().

Referenced by RE_engines_init().

◆ DRW_engines_register_experimental()

void DRW_engines_register_experimental ( void  )

◆ DRW_gpu_render_context_disable()

void DRW_gpu_render_context_disable ( void re_gpu_context)

Needs to be called BEFORE DRW_opengl_render_context_disable().

◆ DRW_gpu_render_context_enable()

void DRW_gpu_render_context_enable ( void re_gpu_context)

Needs to be called AFTER DRW_opengl_render_context_enable().

Definition at line 3179 of file draw_manager.c.

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

◆ DRW_instance_data_list_create()

struct DRWInstanceDataList* DRW_instance_data_list_create ( void  )

◆ DRW_instance_data_list_free()

void DRW_instance_data_list_free ( struct DRWInstanceDataList idatalist)

◆ DRW_notify_view_update()

void DRW_notify_view_update ( const DRWUpdateContext update_ctx)

◆ DRW_opengl_context_activate()

void DRW_opengl_context_activate ( bool  drw_state)

◆ DRW_opengl_context_create()

void DRW_opengl_context_create ( void  )

◆ DRW_opengl_context_destroy()

void DRW_opengl_context_destroy ( void  )

◆ DRW_opengl_context_disable()

void DRW_opengl_context_disable ( void  )

◆ DRW_opengl_context_disable_ex()

void DRW_opengl_context_disable_ex ( bool  restore)

◆ DRW_opengl_context_enable()

void DRW_opengl_context_enable ( void  )

◆ DRW_opengl_context_enable_ex()

void DRW_opengl_context_enable_ex ( bool  restore)

Referenced by WM_exit_ex().

◆ DRW_opengl_context_release()

bool DRW_opengl_context_release ( void  )

◆ DRW_opengl_render_context_disable()

void DRW_opengl_render_context_disable ( void re_gl_context)

◆ DRW_opengl_render_context_enable()

void DRW_opengl_render_context_enable ( void re_gl_context)

◆ DRW_render_check_grease_pencil()

bool DRW_render_check_grease_pencil ( struct Depsgraph depsgraph)

◆ DRW_render_context_disable()

void DRW_render_context_disable ( struct Render render)

◆ DRW_render_context_enable()

void DRW_render_context_enable ( struct Render render)

◆ DRW_render_gpencil()

void DRW_render_gpencil ( struct RenderEngine engine,
struct Depsgraph depsgraph 
)

◆ DRW_subdiv_free()

void DRW_subdiv_free ( void  )

◆ DRW_uniform_attrs_pool_free()

void DRW_uniform_attrs_pool_free ( struct GHash table)

Definition at line 750 of file draw_instance_data.c.

References BLI_ghash_free(), drw_uniform_attrs_pool_free_cb(), and NULL.

Referenced by DRW_viewport_data_free().

◆ DRW_viewport_data_create()

struct DRWData* DRW_viewport_data_create ( void  )

◆ DRW_viewport_data_free()

void DRW_viewport_data_free ( struct DRWData drw_data)