Blender V4.3
DRW_engine.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2016 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "BLI_sys_types.h" /* for bool */
12
13#include "DNA_object_enums.h"
14
15struct ARegion;
16struct DRWData;
18struct Depsgraph;
19struct DrawDataList;
20struct DrawEngineType;
21struct GHash;
22struct GPUMaterial;
23struct GPUOffScreen;
24struct GPUVertFormat;
25struct GPUViewport;
26struct ID;
27struct Main;
28struct Object;
29struct RegionView3D;
30struct Render;
31struct RenderEngine;
32struct RenderEngineType;
33struct Scene;
34struct View3D;
35struct ViewLayer;
36struct bContext;
37struct rcti;
38
40void DRW_engines_free();
41
42bool DRW_engine_render_support(DrawEngineType *draw_engine_type);
43void DRW_engine_register(DrawEngineType *draw_engine_type);
44
46
56void DRW_notify_view_update(const DRWUpdateContext *update_ctx);
57
62using DRW_SelectPassFn = bool (*)(eDRWSelectStage stage, void *user_data);
63using DRW_ObjectFilterFn = bool (*)(Object *ob, void *user_data);
64
70void DRW_draw_view(const bContext *C);
74void DRW_draw_region_engine_info(int xoffset, int *yoffset, int line_height);
75
81 RenderEngineType *engine_type,
82 ARegion *region,
83 View3D *v3d,
84 GPUViewport *viewport,
85 const bContext *evil_C);
86void DRW_draw_render_loop(Depsgraph *depsgraph,
87 ARegion *region,
88 View3D *v3d,
89 GPUViewport *viewport);
94 RenderEngineType *engine_type,
95 ARegion *region,
96 View3D *v3d,
97 bool is_image_render,
98 bool draw_background,
99 bool do_color_management,
100 GPUOffScreen *ofs,
101 GPUViewport *viewport);
103 ARegion *region,
104 GPUViewport *viewport,
105 const bContext *evil_C);
109void DRW_draw_select_loop(Depsgraph *depsgraph,
110 ARegion *region,
111 View3D *v3d,
112 bool use_obedit_skip,
113 bool draw_surface,
114 bool use_nearest,
115 bool do_material_sub_selection,
116 const rcti *rect,
117 DRW_SelectPassFn select_pass_fn,
118 void *select_pass_user_data,
119 DRW_ObjectFilterFn object_filter_fn,
120 void *object_filter_user_data);
124void DRW_draw_depth_loop(Depsgraph *depsgraph,
125 ARegion *region,
126 View3D *v3d,
127 GPUViewport *viewport,
128 const bool use_gpencil,
129 const bool use_basic,
130 const bool use_overlay,
131 const bool use_only_selected);
136 Scene *scene, ARegion *region, View3D *v3d, GPUViewport *viewport, Object *object);
137void DRW_draw_select_id(Depsgraph *depsgraph, ARegion *region, View3D *v3d);
138
143
144/* Grease pencil render. */
145
150void DRW_render_gpencil(RenderEngine *engine, Depsgraph *depsgraph);
151
158
161
166
167#ifdef WITH_XR_OPENXR
168/* XXX: see comment on #DRW_system_gpu_context_get() */
169void *DRW_system_gpu_context_get();
170void *DRW_xr_blender_gpu_context_get();
171void DRW_xr_drawing_begin();
172void DRW_xr_drawing_end();
173#endif
174
175/* For garbage collection */
177
178namespace blender::draw {
179
181
182/* For the OpenGL evaluators and garbage collected subdivision data. */
183void DRW_subdiv_free();
184
185} // namespace blender::draw
186
187/* Never use this. Only for closing blender. */
188void DRW_gpu_context_enable_ex(bool restore);
189void DRW_gpu_context_disable_ex(bool restore);
190
191/* Render pipeline GPU context control.
192 * Enable system context first, then enable blender context,
193 * then disable blender context, then disable system context. */
194void DRW_system_gpu_render_context_enable(void *re_system_gpu_context);
195void DRW_system_gpu_render_context_disable(void *re_system_gpu_context);
196void DRW_blender_gpu_render_context_enable(void *re_gpu_context);
197void DRW_blender_gpu_render_context_disable(void *re_gpu_context);
198
201
207void DRW_drawdata_free(ID *id);
208
210void DRW_viewport_data_free(DRWData *drw_data);
211
213void DRW_gpu_context_activate(bool drw_state);
214
219void DRW_draw_cursor_2d_ex(const ARegion *region, const float cursor[2]);
220
222 const char *base_name,
223 int data_type,
224 const char *layer_name,
225 bool is_active_render,
226 bool is_active_layer);
void DRW_drawdata_free(ID *id)
void DRW_blender_gpu_render_context_disable(void *re_gpu_context)
void DRW_gpu_context_destroy()
void DRW_draw_render_loop_ex(Depsgraph *depsgraph, RenderEngineType *engine_type, ARegion *region, View3D *v3d, GPUViewport *viewport, const bContext *evil_C)
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_instance_data_list_free(DRWInstanceDataList *idatalist)
void DRW_draw_view(const bContext *C)
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)
void DRW_draw_render_loop(Depsgraph *depsgraph, ARegion *region, View3D *v3d, GPUViewport *viewport)
bool DRW_engine_render_support(DrawEngineType *draw_engine_type)
void DRW_notify_view_update(const DRWUpdateContext *update_ctx)
void DRW_gpu_context_disable()
DRWInstanceDataList * DRW_instance_data_list_create()
void DRW_gpu_context_disable_ex(bool restore)
bool(*)(Object *ob, void *user_data) DRW_ObjectFilterFn
Definition DRW_engine.hh:63
void DRW_deferred_shader_optimize_remove(GPUMaterial *mat)
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_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_system_gpu_render_context_enable(void *re_system_gpu_context)
void DRW_gpu_context_enable()
void DRW_engines_free()
void DRW_gpu_context_create()
void DRW_draw_depth_object(Scene *scene, ARegion *region, View3D *v3d, GPUViewport *viewport, Object *object)
eDRWSelectStage
Definition DRW_engine.hh:58
@ DRW_SELECT_PASS_POST
Definition DRW_engine.hh:60
@ DRW_SELECT_PASS_PRE
Definition DRW_engine.hh:59
void DRW_gpu_context_activate(bool drw_state)
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_gpu_context_enable_ex(bool restore)
void DRW_engine_external_free(RegionView3D *rv3d)
void DRW_viewport_data_free(DRWData *drw_data)
void DRW_system_gpu_render_context_disable(void *re_system_gpu_context)
DrawDataList * DRW_drawdatalist_from_id(ID *id)
void DRW_engine_register(DrawEngineType *draw_engine_type)
void DRW_draw_cursor_2d_ex(const ARegion *region, const float cursor[2])
void DRW_draw_render_loop_2d_ex(Depsgraph *depsgraph, ARegion *region, GPUViewport *viewport, const bContext *evil_C)
void DRW_draw_select_id(Depsgraph *depsgraph, ARegion *region, View3D *v3d)
void DRW_render_gpencil(RenderEngine *engine, Depsgraph *depsgraph)
bool DRW_gpu_context_release()
void DRW_engines_register()
void DRW_render_context_enable(Render *render)
bool(*)(eDRWSelectStage stage, void *user_data) DRW_SelectPassFn
Definition DRW_engine.hh:62
void DRW_uniform_attrs_pool_free(GHash *table)
void DRW_blender_gpu_render_context_enable(void *re_gpu_context)
EvaluationStage stage
Definition deg_eval.cc:83
const Depsgraph * depsgraph
format
static void draw_background()
Depsgraph * depsgraph
Definition DRW_engine.hh:49
ViewLayer * view_layer
Definition DRW_engine.hh:51
ARegion * region
Definition DRW_engine.hh:52
RenderEngineType * engine_type
Definition DRW_engine.hh:54
Definition DNA_ID.h:413
void * DRW_deferred_shader_remove
Definition stubs.c:39