107thread_local DRWContext *DRWContext::g_context =
nullptr;
125 this->inv_size = 1.0f / this->size;
136 if (this->v3d !=
nullptr && this->region !=
nullptr) {
147 this->object_pose = this->obact;
153 this->object_pose =
nullptr;
166 if (this->object_edit && rv3d) {
220 if (space_data !=
nullptr) {
248 static thread_local TaskGraph *task_graph_ptr_;
262 if (delayed_extraction) {
263 task_graph_ptr_ =
graph;
264 BLI_gset_free(delayed_extraction, delayed_extraction_free_callback);
265 task_graph_ptr_ =
nullptr;
266 delayed_extraction =
nullptr;
275 static void delayed_extraction_free_callback(
void *
object)
278 reinterpret_cast<Object *
>(
object), *task_graph_ptr_);
282thread_local TaskGraph *ExtractionGraph::task_graph_ptr_ =
nullptr;
383 Mesh &mesh = *
static_cast<Mesh *
>(
object.data);
395 if (cage_mesh ==
nullptr) {
417 for (
int i = 0;
i < 2;
i++) {
445 for (
int i = 0;
i < 2;
i++) {
460 if (
data ==
nullptr) {
497 if (this->
rv3d !=
nullptr) {
501 else if (this->region) {
504 rctf region_space = {0.0f, 1.0f, 0.0f, 1.0f};
510 winmat[0][0] = winmat[1][1] = 2.0f;
511 winmat[3][0] = winmat[3][1] = -1.0f;
523 this->
data->modules_init();
530 this->
data->modules_exit();
537 if (this->
data !=
nullptr && this->
viewport ==
nullptr) {
540 this->
data =
nullptr;
547 pass_name, [&]() {
return std::make_unique<blender::draw::TextureFromPool>(pass_name); });
573 ID *ob_data =
nullptr;
577 return this->ob == ob_dupli->
ob && this->ob_data == ob_dupli->
ob_data;
585 friend bool operator==(
const DupliKey &a,
const DupliKey &
b)
587 return a.ob ==
b.ob && a.ob_data ==
b.ob_data;
593 DupliKey last_key_ = {};
616 if (dupli_set_ ==
nullptr) {
617 dupli_set_ = MEM_new<blender::Set<DupliKey>>(
"DupliCacheManager::dupli_set_");
620 if (dupli_set_->add(last_key_)) {
637 if (dupli_set_ ==
nullptr) {
647 Iter
begin = dupli_set_->begin();
648 Iter end = dupli_set_->end();
649 for (Iter iter =
begin; iter != end; ++iter) {
650 const DupliKey &key = *iter;
653 if (key.ob_data != ob->
data) {
656 tmp_object = blender::dna::shallow_copy(*ob);
657 tmp_object.
runtime = &tmp_runtime;
670 MEM_SAFE_DELETE(dupli_set_);
711 static int lasttime = 0;
714 if (
U.vbotimeout == 0 || (ctime - lasttime) <
U.vbocollectrate || ctime == lasttime) {
774 data->modules_begin_sync();
780 iter_callback(dupli_handler, extraction);
848 if (instance.
info[0] !=
'\0') {
851 const char *buf = buf_step;
853 const int buf_len = buf_step - buf;
854 *yoffset -= line_height;
856 }
while (*buf_step ? ((
void)buf_step++,
true) :
false);
933 if ((drawtype >=
OB_SOLID) || !use_xray) {
941#ifdef WITH_DRAW_DEBUG
942 if (
G.debug_value == 31) {
943 view_data.edit_select_debug.set_used(
true);
1019 if (do_annotations) {
1032#ifdef WITH_XR_OPENXR
1093#ifdef WITH_XR_OPENXR
1169 if (do_annotations) {
1185 if (do_annotations) {
1193 if (do_draw_gizmos) {
1235 const bool do_populate_loop = internal_engine || overlays_on || !draw_type_render ||
1236 gpencil_engine_needed;
1242 if (do_populate_loop) {
1250 if ((object_type_exclude_viewport & (1 << ob->type)) != 0) {
1295 if (do_populate_loop) {
1355 const bool is_image_render,
1357 const bool do_color_management,
1365 if (viewport ==
nullptr) {
1376 BLI_assert(is_xr_surface == !is_image_render);
1414 if (viewport ==
nullptr) {
1451 if (render_layer ==
nullptr) {
1468 BLI_rcti_init(&render_rect, 0, draw_ctx.size[0], 0, draw_ctx.size[1]);
1472 render_view !=
nullptr;
1473 render_view = render_view->
next)
1485 draw_ctx.release_data();
1520 BLI_rcti_init(&render_rect, 0, draw_ctx.size[0], 0, draw_ctx.size[1]);
1527 GPU_viewport(0, 0, draw_ctx.size[0], draw_ctx.size[1]);
1539 render_view !=
nullptr;
1540 render_view = render_view->
next)
1543 render_view_cb(engine, render_layer, render_rect);
1554 draw_ctx.release_data();
1568 const int object_type_exclude_viewport = draw_ctx.
v3d ?
1577 if ((object_type_exclude_viewport & (1 << ob->type)) == 0) {
1670 bool use_obedit_skip,
1673 const bool do_material_sub_selection,
1676 void *select_pass_user_data,
1678 void *object_filter_user_data)
1688 bool use_obedit =
false;
1692 eObjectMode object_mode = eObjectMode::OB_MODE_EDIT;
1693 int object_type = 0;
1694 if (obedit !=
nullptr) {
1695 object_type = obedit->
type;
1710 if (obpose ==
nullptr) {
1716 obpose = ob_armature;
1723 object_type = obpose->
type;
1730 bool use_gpencil = !use_obedit && !draw_surface &&
1745 ob_iter->runtime->select_id =
DEG_get_original(ob_iter)->runtime->select_id;
1755 const bool use_pose_exception = (draw_ctx.
object_pose !=
nullptr);
1759 bool filter_exclude =
false;
1782 if ((object_type_exclude_select & (1 << ob->type)) == 0) {
1783 if (object_filter_fn !=
nullptr) {
1788 filter_exclude = (object_filter_fn(ob, object_filter_user_data) ==
false);
1790 if (filter_exclude) {
1838 const bool use_gpencil,
1839 const bool use_only_selected,
1840 const bool use_only_active_object)
1860 if (use_only_active_object) {
1866 if ((object_type_exclude_viewport & (1 << ob->type)) != 0) {
1872 if (use_only_selected && !(ob->base_flag &
BASE_SELECTED)) {
1887 GPUFrameBuffer *depth_fb =
nullptr;
1976 if (this->
evil_C !=
nullptr) {
2012 if (!this->
scene->use_nodes) {
2016 if (!this->
scene->nodetree) {
2053#ifdef WITH_DRAW_DEBUG
2054 blender::draw::edit_select_debug::Engine::free_static();
Depsgraph * CTX_data_expect_evaluated_depsgraph(const bContext *C)
SpaceLink * CTX_wm_space_data(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
void(* BKE_curve_batch_cache_free_cb)(Curve *cu)
void(* BKE_curve_batch_cache_dirty_tag_cb)(Curve *cu, int mode)
Low-level operations for curves that cannot be defined in the C++ header yet.
void(* BKE_curves_batch_cache_dirty_tag_cb)(struct Curves *curves, int mode)
void(* BKE_curves_batch_cache_free_cb)(struct Curves *curves)
Low-level operations for grease pencil that cannot be defined in the C++ header yet.
void(* BKE_grease_pencil_batch_cache_dirty_tag_cb)(GreasePencil *grease_pencil, int mode)
void(* BKE_grease_pencil_batch_cache_free_cb)(GreasePencil *grease_pencil)
void(* BKE_lattice_batch_cache_dirty_tag_cb)(Lattice *lt, int mode)
void(* BKE_lattice_batch_cache_free_cb)(Lattice *lt)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
#define FOREACH_OBJECT_IN_MODE_END
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
bool BKE_object_is_visible_in_viewport(const View3D *v3d, const Object *ob)
#define FOREACH_OBJECT_IN_MODE_BEGIN(_scene, _view_layer, _v3d, _object_type, _object_mode, _instance)
void(* BKE_mesh_batch_cache_free_cb)(void *batch_cache)
void(* BKE_mesh_batch_cache_dirty_tag_cb)(Mesh *mesh, eMeshBatchDirtyMode mode)
Mesh * BKE_mesh_wrapper_ensure_subdivision(Mesh *mesh)
Object * BKE_modifiers_is_deformed_by_armature(Object *ob)
General operations, lookup, etc. for blender objects.
const Mesh * BKE_object_get_editmesh_eval_cage(const Object *object)
bool BKE_object_is_in_editmode(const Object *ob)
void BKE_object_replace_data_on_shallow_copy(Object *ob, ID *new_data)
Object * BKE_object_pose_armature_get(Object *ob)
int BKE_object_visibility(const Object *ob, int dag_eval_mode)
bool psys_check_enabled(struct Object *ob, struct ParticleSystem *psys, bool use_render_params)
void(* BKE_particle_batch_cache_dirty_tag_cb)(struct ParticleSystem *psys, int mode)
bool psys_in_edit_mode(struct Depsgraph *depsgraph, const struct ParticleSystem *psys)
void(* BKE_particle_batch_cache_free_cb)(struct ParticleSystem *psys)
General operations for point clouds.
void(* BKE_pointcloud_batch_cache_free_cb)(PointCloud *pointcloud)
void(* BKE_pointcloud_batch_cache_dirty_tag_cb)(PointCloud *pointcloud, int mode)
Depsgraph * BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer)
SpaceType * BKE_spacetype_from_id(int spaceid)
ARegionType * BKE_regiontype_from_id(const SpaceType *st, int regionid)
bool BKE_subsurf_modifier_has_gpu_subdiv(const Mesh *mesh)
void(* BKE_subsurf_modifier_free_gpu_cache_cb)(blender::bke::subdiv::Subdiv *subdiv)
void(* BKE_volume_batch_cache_dirty_tag_cb)(Volume *volume, int mode)
void(* BKE_volume_batch_cache_free_cb)(Volume *volume)
void BLF_draw_default(float x, float y, float z, const char *str, size_t str_len) ATTR_NONNULL()
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
void BLI_rcti_init(struct rcti *rect, int xmin, int xmax, int ymin, int ymax)
void BLI_rctf_transform_calc_m4_pivot_min(const rctf *dst, const rctf *src, float matrix[4][4])
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
bool BLI_rcti_is_empty(const struct rcti *rect)
char char size_t char const char * BLI_strchr_or_end(const char *str, char ch) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1)
void BLI_task_graph_free(struct TaskGraph *task_graph)
struct TaskGraph * BLI_task_graph_create(void)
void BLI_task_graph_work_and_wait(struct TaskGraph *task_graph)
Platform independent time functions.
double BLI_time_now_seconds(void)
#define UNUSED_VARS_NDEBUG(...)
#define DEG_OBJECT_ITER_BEGIN(settings_, instance_)
#define DEG_OBJECT_ITER_END
Scene * DEG_get_evaluated_scene(const Depsgraph *graph)
ViewLayer * DEG_get_evaluated_view_layer(const Depsgraph *graph)
#define DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS
T * DEG_get_original(T *id)
Scene * DEG_get_input_scene(const Depsgraph *graph)
bool DEG_id_type_any_exists(const Depsgraph *depsgraph, short id_type)
@ BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT
@ BASE_ENABLED_AND_MAYBE_VISIBLE_IN_VIEWPORT
#define OB_MODE_ALL_WEIGHT_PAINT
#define OBPOSE_FROM_OBACT(ob)
#define BASE_SELECTED(v3d, base)
#define OBEDIT_FROM_OBACT(ob)
#define OBWEIGHTPAINT_FROM_OBACT(ob)
#define BASE_SELECTABLE(v3d, base)
@ V3D_SHADING_USE_COMPOSITOR_CAMERA
@ V3D_SHADING_USE_COMPOSITOR_DISABLED
@ V3D_XR_SHOW_CUSTOM_OVERLAYS
@ V3D_XR_SHOW_CONTROLLERS
@ V3D_SHADING_SCENE_WORLD_RENDER
@ V3D_SHADING_SCENE_WORLD
@ V3D_OVERLAY_BONE_SELECT
void DRW_submission_end()
bool DRW_render_check_grease_pencil(Depsgraph *depsgraph)
DRWData * DRW_viewport_data_create()
void DRW_draw_region_engine_info(int xoffset, int *yoffset, int line_height)
bool DRW_draw_in_progress()
void DRW_draw_view(const bContext *C)
bool DRW_gpencil_engine_needed_viewport(Depsgraph *depsgraph, View3D *v3d)
bool(*)(Object *ob, void *user_data) DRW_ObjectFilterFn
void DRW_draw_depth_loop(Depsgraph *depsgraph, ARegion *region, View3D *v3d, GPUViewport *viewport, const bool use_gpencil, const bool use_only_selected, const bool use_only_active_object)
void DRW_cache_free_old_batches(Main *bmain)
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_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_render_context_disable(Render *render)
void DRW_viewport_data_free(DRWData *drw_data)
void DRW_submission_start()
void DRW_draw_select_id(Depsgraph *depsgraph, ARegion *region, View3D *v3d)
void DRW_render_gpencil(RenderEngine *engine, Depsgraph *depsgraph)
void DRW_engines_register()
void DRW_render_context_enable(Render *render)
bool(*)(eDRWSelectStage stage, void *user_data) DRW_SelectPassFn
void ED_region_pixelspace(const ARegion *region)
bScreen * ED_screen_animation_playing(const wmWindowManager *wm)
void ED_region_draw_cb_draw(const bContext *C, ARegion *region, int type)
#define REGION_DRAW_POST_VIEW
void ED_region_surface_draw_cb_draw(ARegionType *art, int type)
#define REGION_DRAW_PRE_VIEW
#define XRAY_ENABLED(v3d)
#define RETOPOLOGY_ENABLED(v3d)
void ED_view3d_init_mats_rv3d(const Object *ob, RegionView3D *rv3d)
RenderEngineType * ED_view3d_engine_type(const Scene *scene, int drawtype)
GPUContext * GPU_context_active_get()
eGPUBackendType GPU_backend_get_type()
void GPU_debug_group_end()
void GPU_debug_group_begin(const char *name)
GPUFrameBuffer * GPU_framebuffer_create(const char *name)
#define GPU_FRAMEBUFFER_FREE_SAFE(fb)
#define GPU_ATTACHMENT_TEXTURE(_texture)
GPUFrameBuffer * GPU_framebuffer_active_get()
bool GPU_framebuffer_check_valid(GPUFrameBuffer *fb, char err_out[256])
void GPU_offscreen_bind(GPUOffScreen *offscreen, bool save)
void GPU_framebuffer_restore()
void GPU_framebuffer_clear_depth_stencil(GPUFrameBuffer *fb, float clear_depth, uint clear_stencil)
#define GPU_ATTACHMENT_NONE
void GPU_framebuffer_free(GPUFrameBuffer *fb)
void GPU_framebuffer_bind(GPUFrameBuffer *fb)
void GPU_clear_color(float red, float green, float blue, float alpha)
#define GPU_framebuffer_ensure_config(_fb,...)
void GPU_framebuffer_clear_depth(GPUFrameBuffer *fb, float clear_depth)
GPUFrameBuffer * GPU_framebuffer_back_get()
void GPU_framebuffer_texture_attach(GPUFrameBuffer *fb, GPUTexture *texture, int slot, int mip)
void GPU_matrix_identity_projection_set()
void GPU_matrix_identity_set()
#define GPU_matrix_set(x)
void GPU_matrix_push_projection()
void GPU_matrix_pop_projection()
#define GPU_matrix_projection_set(x)
@ GPU_BLEND_ALPHA_PREMULT
void GPU_blend(eGPUBlend blend)
void GPU_viewport(int x, int y, int width, int height)
void GPU_depth_test(eGPUDepthTest test)
int GPU_texture_height(const GPUTexture *texture)
GPUTexture * GPU_texture_create_2d(const char *name, int width, int height, int mip_len, eGPUTextureFormat format, eGPUTextureUsage usage, const float *data)
void GPU_texture_free(GPUTexture *texture)
int GPU_texture_width(const GPUTexture *texture)
@ GPU_TEXTURE_USAGE_SHADER_READ
@ GPU_TEXTURE_USAGE_ATTACHMENT
#define GPU_TEXTURE_FREE_SAFE(texture)
GPUTexture * GPU_viewport_color_texture(GPUViewport *viewport, int view)
void GPU_viewport_unbind_from_offscreen(GPUViewport *viewport, GPUOffScreen *ofs, bool display_colorspace, bool do_overlay_merge)
GPUViewport * GPU_viewport_create()
void GPU_viewport_bind_from_offscreen(GPUViewport *viewport, GPUOffScreen *ofs, bool is_xr_surface)
int GPU_viewport_active_view_get(GPUViewport *viewport)
void GPU_viewport_free(GPUViewport *viewport)
GPUTexture * GPU_viewport_depth_texture(GPUViewport *viewport)
void GPU_viewport_tag_update(GPUViewport *viewport)
DRWData ** GPU_viewport_data_get(GPUViewport *viewport)
void UI_SetTheme(int spacetype, int regionid)
void ED_annotation_draw_view3d(Scene *scene, Depsgraph *depsgraph, View3D *v3d, ARegion *region, bool only3d)
void ED_annotation_draw_view2d(const bContext *C, bool onlyv2d)
bool operator==(const AssetWeakReference &a, const AssetWeakReference &b)
BMesh const char void * data
BPy_StructRNA * depsgraph
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Value & lookup_or_add_cb(const Key &key, const CreateValueF &create_value)
constexpr const char * c_str() const
static void default_set(const float4x4 &view_mat, const float4x4 &win_mat)
void reset(bool force_free=false)
static TexturePool & get()
CCL_NAMESPACE_BEGIN struct Options options
void DRW_smoke_begin_sync(DRWData *drw_data)
void DRW_smoke_exit(DRWData *drw_data)
static bool draw_show_annotation()
const DRWContext * DRW_context_get()
DRWData * DRW_viewport_data_create()
static void drw_draw_render_loop_2d(DRWContext &draw_ctx)
void DRW_custom_pipeline_begin(DRWContext &draw_ctx, Depsgraph *)
static void drw_draw_render_loop_3d(DRWContext &draw_ctx, RenderEngineType *engine_type)
static void drw_callbacks_post_scene(DRWContext &draw_ctx)
static void drw_callbacks_pre_scene(DRWContext &draw_ctx)
static void drw_callbacks_post_scene_2D(DRWContext &draw_ctx, View2D &v2d)
bool DRW_object_is_in_edit_mode(const Object *ob)
static void drw_engines_cache_populate(blender::draw::ObjectRef &ref, DupliCacheManager &dupli_cache, ExtractionGraph &extraction)
blender::draw::TextureFromPool & DRW_viewport_pass_texture_get(const char *pass_name)
void DRW_render_to_image(RenderEngine *engine, Depsgraph *depsgraph, std::function< void(RenderEngine *, RenderLayer *, const rcti)> render_view_cb, std::function< void(RenderResult *)> store_metadata_cb)
static DRWData * drw_viewport_data_ensure(GPUViewport *viewport)
bool DRW_object_use_hide_faces(const Object *ob)
void DRW_render_object_iter(RenderEngine *engine, Depsgraph *depsgraph, std::function< void(blender::draw::ObjectRef &, RenderEngine *, Depsgraph *)> callback)
bool DRW_object_is_renderable(const Object *ob)
DRWTextStore * DRW_text_cache_ensure()
static bool gpencil_object_is_excluded(View3D *v3d)
int DRW_object_visibility_in_active_context(const Object *ob)
Mesh & DRW_object_get_data_for_drawing(const Object &object)
bool DRW_object_is_visible_psys_in_active_context(const Object *object, const ParticleSystem *psys)
void DRW_viewport_data_free(DRWData *drw_data)
const Mesh * DRW_object_get_editmesh_cage_for_drawing(const Object &object)
static struct DRWSelectBuffer g_select_buffer
void DRW_render_set_time(RenderEngine *engine, Depsgraph *depsgraph, int frame, float subframe)
void DRW_custom_pipeline_end(DRWContext &draw_ctx)
void DRW_viewport_request_redraw()
static void draw_select_framebuffer_depth_only_setup(const int size[2])
static bool gpencil_any_exists(Depsgraph *depsgraph)
static void drw_engines_draw_text()
static void drw_callbacks_pre_scene_2D(DRWContext &draw_ctx)
blender::draw::Manager * DRW_manager_get()
DRWTextStore * DRW_text_cache_create()
void DRW_text_cache_draw(DRWTextStore *dt, ARegion *region, View3D *v3d)
void DRW_text_cache_destroy(DRWTextStore *dt)
void DRW_draw_region_info(const bContext *C, ARegion *region)
void DRW_draw_gizmo_3d(const bContext *C, ARegion *region)
void DRW_draw_gizmo_2d(const bContext *C, ARegion *region)
void DRW_view_data_default_lists_from_viewport(DRWViewData *view_data, GPUViewport *viewport)
void DRW_view_data_reset(DRWViewData *view_data)
void DRW_view_data_free_unused(DRWViewData *view_data)
RenderEngineType DRW_engine_viewport_eevee_type
bool DRW_engine_external_acquire_for_image_editor(const DRWContext *draw_ctx)
void RE_GetViewPlane(Render *re, rctf *r_viewplane, rcti *r_disprect)
void RE_engine_frame_set(RenderEngine *engine, int frame, float subframe)
RenderResult * RE_engine_begin_result(RenderEngine *engine, int x, int y, int w, int h, const char *layername, const char *viewname)
RenderResult * RE_engine_get_result(RenderEngine *engine)
void RE_engines_register(RenderEngineType *render_type)
void RE_engine_end_result(RenderEngine *engine, RenderResult *result, bool cancel, bool highlight, bool merge_results)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void viewport_color_management_set(GPUViewport &viewport, DRWContext &draw_ctx)
void DRW_curves_module_free(draw::CurvesModule *module)
void DRW_particle_batch_cache_free(ParticleSystem *psys)
void DRW_pointcloud_module_free(draw::PointCloudModule *module)
void DRW_lattice_batch_cache_dirty_tag(Lattice *lt, int mode)
void DRW_lattice_batch_cache_free(Lattice *lt)
void DRW_grease_pencil_batch_cache_free(GreasePencil *grease_pencil)
void drw_batch_cache_generate_requested_evaluated_mesh_or_curve(Object *ob, TaskGraph &task_graph)
void DRW_pointcloud_batch_cache_dirty_tag(PointCloud *pointcloud, int mode)
void DRW_curves_init(DRWData *drw_data=nullptr)
void drw_batch_cache_validate(Object *ob)
void DRW_subdiv_cache_free(bke::subdiv::Subdiv *subdiv)
void DRW_grease_pencil_batch_cache_dirty_tag(GreasePencil *grease_pencil, int mode)
void DRW_volume_batch_cache_free(Volume *volume)
void DRW_mesh_batch_cache_free(void *batch_cache)
void DRW_curves_update(draw::Manager &manager)
void DRW_volume_init(DRWData *drw_data=nullptr)
void DRW_volume_batch_cache_dirty_tag(Volume *volume, int mode)
void DRW_curve_batch_cache_free(Curve *cu)
void DRW_curves_begin_sync(DRWData *drw_data)
void drw_batch_cache_generate_requested(Object *ob, TaskGraph &task_graph)
void DRW_curves_batch_cache_dirty_tag(Curves *curves, int mode)
void DRW_pointcloud_init(DRWData *drw_data=nullptr)
void DRW_cache_free_old_subdiv()
void DRW_mesh_batch_cache_dirty_tag(Mesh *mesh, eMeshBatchDirtyMode mode)
void DRW_particle_batch_cache_dirty_tag(ParticleSystem *psys, int mode)
void DRW_pointcloud_batch_cache_free(PointCloud *pointcloud)
void DRW_batch_cache_free_old(Object *ob, int ctime)
void DRW_volume_module_free(draw::VolumeModule *module)
void DRW_curves_batch_cache_free(Curves *curves)
void DRW_curve_batch_cache_dirty_tag(Curve *cu, int mode)
MatBase< float, 4, 4 > float4x4
uint64_t get_default_hash(const T &v, const Args &...args)
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
SELECTID_Context * DRW_select_engine_context_get()
RenderLayer * RE_GetRenderLayer(RenderResult *rr, const char *name)
void RE_SetActiveRenderView(Render *re, const char *viewname)
DupliObject * dupli_object_current
const ViewerPath * viewer_path
bool is_image_render() const
DRWContext(Mode mode, Depsgraph *depsgraph, GPUViewport *viewport, const bContext *C=nullptr, ARegion *region=nullptr, View3D *v3d=nullptr)
DRWViewData * view_data_active
std::function< void(struct DupliCacheManager &, struct ExtractionGraph &)> iter_callback_t
GSet * delayed_extraction
void sync(iter_callback_t iter_callback)
DefaultFramebufferList * viewport_framebuffer_list_get() const
struct DRWContext::@104106145204363037226002274050347030264243156307 options
bool is_scene_render() const
DRWTextStore ** text_store_p
void enable_engines(bool gpencil_engine_needed=false, RenderEngineType *render_engine_type=nullptr)
static DRWContext & get_active()
enum DRWContext::Mode mode
void engines_draw_scene()
void engines_init_and_sync(iter_callback_t iter_callback)
GPUFrameBuffer * default_framebuffer()
bool is_transforming() const
DefaultTextureList * viewport_texture_list_get() const
void engines_data_validate()
bool is_navigating() const
bool is_viewport_compositor_enabled() const
blender::draw::VolumeModule * volume_module
blender::draw::View * default_view
blender::draw::CurvesModule * curves_module
blender::draw::PointCloudModule * pointcloud_module
DRWViewData * view_data[2]
void modules_begin_sync()
GPUTexture * texture_depth
GPUFrameBuffer * framebuffer_depth_only
blender::draw::external::Engine external
blender::draw::select::Engine object_select
blender::Map< std::string, std::unique_ptr< blender::draw::TextureFromPool > > viewport_compositor_passes
void foreach_enabled_engine(CallbackT callback)
blender::workbench::Engine workbench
blender::draw::compositor_engine::Engine compositor
blender::draw::gpencil::Engine grease_pencil
blender::image_engine::Engine image
blender::draw::overlay::Engine overlay
blender::draw::edit_select::Engine edit_select
blender::eevee::Engine eevee
GPUFrameBuffer * overlay_fb
virtual void begin_sync()=0
virtual void object_sync(blender::draw::ObjectRef &ob_ref, blender::draw::Manager &manager)=0
virtual void draw(blender::draw::Manager &manager)=0
virtual blender::StringRefNull name_get()=0
DRWTextStore * text_draw_cache
virtual void end_sync()=0
void try_add(blender::draw::ObjectRef &ob_ref)
void extract_all(ExtractionGraph &extraction)
ObjectRuntimeHandle * runtime
struct PointCache * pointcache
blender::Vector< Object * > objects
struct ToolSettings * toolsettings
int object_type_exclude_select
int object_type_exclude_viewport
const c_style_mat & ptr() const
static MatBase identity()
DupliObject * dupli_object
ResourceHandleRange handle
static void set(DRWState state=DRW_STATE_DEFAULT)
static void free_static()
static void free_static()
static void render_to_image(RenderEngine *engine, RenderLayer *render_layer, const rcti rect)
static void free_static()
static void free_static()
static void free_static()
static void free_static()
static void draw_background(const rcti *rect)
GPUViewport * WM_draw_region_get_viewport(ARegion *region)
GPUViewport * WM_draw_region_get_bound_viewport(ARegion *region)
void wmOrtho2(float x1, float x2, float y1, float y2)
ARegionType * WM_xr_surface_controller_region_type_get()
RenderEngineType DRW_engine_viewport_workbench_type