Blender V4.3
draw_cache.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
12
14
15struct GPUMaterial;
16namespace blender::gpu {
17class Batch;
18class VertBuf;
19} // namespace blender::gpu
20struct ModifierData;
21struct Object;
22struct PTCacheEdit;
23struct ParticleSystem;
24struct Volume;
25struct bGPDstroke;
26struct bGPdata;
27struct Scene;
28
36
37 DRW_LOD_MAX, /* Max number of level of detail */
38};
39
41
42/* 3D cursor */
43blender::gpu::Batch *DRW_cache_cursor_get(bool crosshair_lines);
44
45/* Common Shapes */
46blender::gpu::Batch *DRW_cache_groundline_get();
47/* Grid */
48blender::gpu::Batch *DRW_cache_grid_get();
52blender::gpu::Batch *DRW_cache_fullscreen_quad_get();
53/* Just a regular quad with 4 vertices. */
54blender::gpu::Batch *DRW_cache_quad_get();
55/* Just a regular quad with 4 vertices - wires. */
56blender::gpu::Batch *DRW_cache_quad_wires_get();
57blender::gpu::Batch *DRW_cache_cube_get();
58blender::gpu::Batch *DRW_cache_normal_arrow_get();
59
60blender::gpu::Batch *DRW_cache_sphere_get(eDRWLevelOfDetail level_of_detail);
61
62/* Dummy VBOs */
63
64blender::gpu::Batch *DRW_gpencil_dummy_buffer_get();
65
66/* Common Object */
67
68blender::gpu::Batch *DRW_cache_object_all_edges_get(Object *ob);
69blender::gpu::Batch *DRW_cache_object_edge_detection_get(Object *ob, bool *r_is_manifold);
70blender::gpu::Batch *DRW_cache_object_surface_get(Object *ob);
71blender::gpu::Batch *DRW_cache_object_loose_edges_get(Object *ob);
72blender::gpu::Batch **DRW_cache_object_surface_material_get(Object *ob,
73 GPUMaterial **gpumat_array,
74 uint gpumat_array_len);
75blender::gpu::Batch *DRW_cache_object_face_wireframe_get(const Scene *scene, Object *ob);
77
82
83/* Empties */
84blender::gpu::Batch *DRW_cache_plain_axes_get();
85blender::gpu::Batch *DRW_cache_single_arrow_get();
86blender::gpu::Batch *DRW_cache_empty_cube_get();
87blender::gpu::Batch *DRW_cache_circle_get();
88blender::gpu::Batch *DRW_cache_empty_sphere_get();
89blender::gpu::Batch *DRW_cache_empty_cylinder_get();
90blender::gpu::Batch *DRW_cache_empty_cone_get();
91blender::gpu::Batch *DRW_cache_empty_capsule_cap_get();
92blender::gpu::Batch *DRW_cache_empty_capsule_body_get();
93
94/* Force Field */
95
96blender::gpu::Batch *DRW_cache_field_wind_get();
97blender::gpu::Batch *DRW_cache_field_force_get();
98blender::gpu::Batch *DRW_cache_field_vortex_get();
99
100/* Screen-aligned circle. */
101
102blender::gpu::Batch *DRW_cache_field_curve_get();
103blender::gpu::Batch *DRW_cache_field_tube_limit_get();
104blender::gpu::Batch *DRW_cache_field_cone_limit_get();
105
106/* Screen-aligned dashed circle */
107
108blender::gpu::Batch *DRW_cache_field_sphere_limit_get();
109
110/* Lights */
111
112blender::gpu::Batch *DRW_cache_light_icon_inner_lines_get();
113blender::gpu::Batch *DRW_cache_light_icon_outer_lines_get();
114blender::gpu::Batch *DRW_cache_light_icon_sun_rays_get();
115blender::gpu::Batch *DRW_cache_light_point_lines_get();
116blender::gpu::Batch *DRW_cache_light_sun_lines_get();
117blender::gpu::Batch *DRW_cache_light_spot_lines_get();
118blender::gpu::Batch *DRW_cache_light_area_disk_lines_get();
119blender::gpu::Batch *DRW_cache_light_area_square_lines_get();
120blender::gpu::Batch *DRW_cache_light_spot_volume_get();
121
122/* Camera */
123
124blender::gpu::Batch *DRW_cache_camera_frame_get();
125blender::gpu::Batch *DRW_cache_camera_volume_get();
126blender::gpu::Batch *DRW_cache_camera_volume_wire_get();
127blender::gpu::Batch *DRW_cache_camera_tria_wire_get();
128blender::gpu::Batch *DRW_cache_camera_tria_get();
129blender::gpu::Batch *DRW_cache_camera_distances_get();
130
131/* Speaker */
132
133blender::gpu::Batch *DRW_cache_speaker_get();
134
135/* Probe */
136
137blender::gpu::Batch *DRW_cache_lightprobe_cube_get();
138blender::gpu::Batch *DRW_cache_lightprobe_grid_get();
139blender::gpu::Batch *DRW_cache_lightprobe_planar_get();
140
141/* Bones */
142
143blender::gpu::Batch *DRW_cache_bone_octahedral_get();
144blender::gpu::Batch *DRW_cache_bone_octahedral_wire_get();
145blender::gpu::Batch *DRW_cache_bone_box_get();
146blender::gpu::Batch *DRW_cache_bone_box_wire_get();
147blender::gpu::Batch *DRW_cache_bone_envelope_solid_get();
148blender::gpu::Batch *DRW_cache_bone_envelope_outline_get();
149blender::gpu::Batch *DRW_cache_bone_point_get();
150blender::gpu::Batch *DRW_cache_bone_point_wire_outline_get();
151blender::gpu::Batch *DRW_cache_bone_stick_get();
152blender::gpu::Batch *DRW_cache_bone_arrows_get();
153blender::gpu::Batch *DRW_cache_bone_dof_sphere_get();
154blender::gpu::Batch *DRW_cache_bone_dof_lines_get();
155
156/* Meshes */
157
158blender::gpu::Batch *DRW_cache_mesh_all_verts_get(Object *ob);
159blender::gpu::Batch *DRW_cache_mesh_all_edges_get(Object *ob);
160blender::gpu::Batch *DRW_cache_mesh_loose_edges_get(Object *ob);
161blender::gpu::Batch *DRW_cache_mesh_edge_detection_get(Object *ob, bool *r_is_manifold);
162blender::gpu::Batch *DRW_cache_mesh_surface_get(Object *ob);
163blender::gpu::Batch *DRW_cache_mesh_surface_edges_get(Object *ob);
167blender::gpu::Batch **DRW_cache_mesh_surface_shaded_get(Object *ob,
168 GPUMaterial **gpumat_array,
169 uint gpumat_array_len);
173blender::gpu::Batch **DRW_cache_mesh_surface_texpaint_get(Object *ob);
174blender::gpu::Batch *DRW_cache_mesh_surface_texpaint_single_get(Object *ob);
175blender::gpu::Batch *DRW_cache_mesh_surface_vertpaint_get(Object *ob);
176blender::gpu::Batch *DRW_cache_mesh_surface_sculptcolors_get(Object *ob);
177blender::gpu::Batch *DRW_cache_mesh_surface_weights_get(Object *ob);
178blender::gpu::Batch *DRW_cache_mesh_surface_mesh_analysis_get(Object *ob);
179blender::gpu::Batch *DRW_cache_mesh_face_wireframe_get(Object *ob);
181
182/* Curve */
183
184blender::gpu::Batch *DRW_cache_curve_edge_wire_get(Object *ob);
186
187/* edit-mode */
188
189blender::gpu::Batch *DRW_cache_curve_edge_normal_get(Object *ob);
190blender::gpu::Batch *DRW_cache_curve_edge_overlay_get(Object *ob);
191blender::gpu::Batch *DRW_cache_curve_vert_overlay_get(Object *ob);
192
193/* Font */
194
195blender::gpu::Batch *DRW_cache_text_edge_wire_get(Object *ob);
196
197/* Surface */
198
199blender::gpu::Batch *DRW_cache_surf_edge_wire_get(Object *ob);
200
201/* Lattice */
202
203blender::gpu::Batch *DRW_cache_lattice_verts_get(Object *ob);
204blender::gpu::Batch *DRW_cache_lattice_wire_get(Object *ob, bool use_weight);
205blender::gpu::Batch *DRW_cache_lattice_vert_overlay_get(Object *ob);
206
207/* Particles */
208
209blender::gpu::Batch *DRW_cache_particles_get_hair(Object *object,
210 ParticleSystem *psys,
211 ModifierData *md);
212blender::gpu::Batch *DRW_cache_particles_get_dots(Object *object, ParticleSystem *psys);
213blender::gpu::Batch *DRW_cache_particles_get_edit_strands(Object *object,
214 ParticleSystem *psys,
215 PTCacheEdit *edit,
216 bool use_weight);
217blender::gpu::Batch *DRW_cache_particles_get_edit_inner_points(Object *object,
218 ParticleSystem *psys,
219 PTCacheEdit *edit);
220blender::gpu::Batch *DRW_cache_particles_get_edit_tip_points(Object *object,
221 ParticleSystem *psys,
222 PTCacheEdit *edit);
223blender::gpu::Batch *DRW_cache_particles_get_prim(int type);
224
225/* Curves */
226
227blender::gpu::Batch *DRW_cache_curves_surface_get(Object *ob);
229 GPUMaterial **gpumat_array,
230 uint gpumat_array_len);
232blender::gpu::Batch *DRW_cache_curves_edge_detection_get(Object *ob, bool *r_is_manifold);
233
234/* Volume */
235
238
239 /* Grid name. */
240 char *name;
241
242 /* 3D texture. */
243 GPUTexture *texture;
244
245 /* Transform between 0..1 texture space and object space. */
248
249 /* Transform from bounds to texture space. */
252};
253
254namespace blender::draw {
255
257 const bke::VolumeGridData *volume_grid);
258blender::gpu::Batch *DRW_cache_volume_face_wireframe_get(Object *ob);
259blender::gpu::Batch *DRW_cache_volume_selection_surface_get(Object *ob);
260
265
266/* Grease Pencil */
267
268blender::gpu::Batch *DRW_cache_grease_pencil_get(const Scene *scene, Object *ob);
269blender::gpu::Batch *DRW_cache_grease_pencil_edit_points_get(const Scene *scene, Object *ob);
270blender::gpu::Batch *DRW_cache_grease_pencil_edit_lines_get(const Scene *scene, Object *ob);
271gpu::VertBuf *DRW_cache_grease_pencil_position_buffer_get(const Scene *scene, Object *ob);
272gpu::VertBuf *DRW_cache_grease_pencil_color_buffer_get(const Scene *scene, Object *ob);
273blender::gpu::Batch *DRW_cache_grease_pencil_weight_points_get(const Scene *scene, Object *ob);
274blender::gpu::Batch *DRW_cache_grease_pencil_weight_lines_get(const Scene *scene, Object *ob);
275blender::gpu::Batch *DRW_cache_grease_pencil_face_wireframe_get(const Scene *scene, Object *ob);
276
277} // namespace blender::draw
unsigned int uint
blender::gpu::Batch * DRW_cache_groundline_get()
blender::gpu::Batch * DRW_cache_bone_point_get()
blender::gpu::Batch * DRW_cache_object_surface_get(Object *ob)
blender::gpu::Batch * DRW_cache_field_sphere_limit_get()
blender::gpu::Batch * DRW_cache_lightprobe_cube_get()
blender::gpu::Batch * DRW_cache_light_icon_outer_lines_get()
blender::gpu::Batch * DRW_cache_mesh_surface_weights_get(Object *ob)
blender::gpu::Batch * DRW_cache_curve_edge_wire_viewer_attribute_get(Object *ob)
blender::gpu::Batch * DRW_cache_field_vortex_get()
blender::gpu::Batch * DRW_cache_camera_volume_get()
blender::gpu::Batch * DRW_cache_mesh_surface_edges_get(Object *ob)
blender::gpu::Batch * DRW_cache_empty_cube_get()
void DRW_shape_cache_free()
blender::gpu::Batch * DRW_cache_lightprobe_grid_get()
blender::gpu::Batch * DRW_cache_light_point_lines_get()
blender::gpu::Batch * DRW_cache_light_spot_lines_get()
blender::gpu::Batch * DRW_cache_lattice_verts_get(Object *ob)
blender::gpu::Batch * DRW_cache_normal_arrow_get()
blender::gpu::Batch * DRW_cache_curve_edge_wire_get(Object *ob)
blender::gpu::Batch * DRW_cache_field_force_get()
blender::gpu::Batch * DRW_cache_object_face_wireframe_get(const Scene *scene, Object *ob)
blender::gpu::Batch * DRW_cache_mesh_surface_get(Object *ob)
blender::gpu::Batch * DRW_cache_particles_get_prim(int type)
blender::gpu::Batch * DRW_cache_circle_get()
blender::gpu::Batch * DRW_cache_mesh_edge_detection_get(Object *ob, bool *r_is_manifold)
blender::gpu::Batch * DRW_cache_object_edge_detection_get(Object *ob, bool *r_is_manifold)
blender::gpu::Batch * DRW_cache_curve_edge_overlay_get(Object *ob)
blender::gpu::Batch * DRW_cache_bone_point_wire_outline_get()
blender::gpu::Batch * DRW_cache_object_all_edges_get(Object *ob)
blender::gpu::Batch * DRW_cache_camera_volume_wire_get()
blender::gpu::Batch * DRW_cache_particles_get_dots(Object *object, ParticleSystem *psys)
blender::gpu::Batch * DRW_cache_curve_vert_overlay_get(Object *ob)
blender::gpu::Batch ** DRW_cache_curves_surface_shaded_get(Object *ob, GPUMaterial **gpumat_array, uint gpumat_array_len)
blender::gpu::Batch * DRW_cache_mesh_all_edges_get(Object *ob)
blender::gpu::Batch * DRW_cache_sphere_get(eDRWLevelOfDetail level_of_detail)
blender::gpu::Batch * DRW_cache_light_area_square_lines_get()
blender::gpu::Batch * DRW_cache_field_cone_limit_get()
eDRWLevelOfDetail
Definition draw_cache.hh:32
@ DRW_LOD_MEDIUM
Definition draw_cache.hh:34
@ DRW_LOD_LOW
Definition draw_cache.hh:33
@ DRW_LOD_HIGH
Definition draw_cache.hh:35
@ DRW_LOD_MAX
Definition draw_cache.hh:37
blender::gpu::Batch * DRW_cache_surf_edge_wire_get(Object *ob)
blender::gpu::Batch * DRW_cache_mesh_surface_sculptcolors_get(Object *ob)
blender::gpu::Batch * DRW_cache_particles_get_hair(Object *object, ParticleSystem *psys, ModifierData *md)
blender::gpu::Batch * DRW_cache_mesh_all_verts_get(Object *ob)
blender::gpu::Batch * DRW_cache_text_edge_wire_get(Object *ob)
blender::gpu::Batch ** DRW_cache_mesh_surface_shaded_get(Object *ob, GPUMaterial **gpumat_array, uint gpumat_array_len)
blender::gpu::Batch * DRW_cache_lattice_vert_overlay_get(Object *ob)
blender::gpu::Batch * DRW_cache_light_sun_lines_get()
blender::gpu::Batch * DRW_cache_bone_envelope_solid_get()
blender::gpu::Batch * DRW_cache_mesh_surface_vertpaint_get(Object *ob)
blender::gpu::Batch * DRW_cache_empty_sphere_get()
blender::gpu::Batch * DRW_cache_light_icon_sun_rays_get()
blender::gpu::Batch * DRW_cache_field_curve_get()
blender::gpu::Batch * DRW_cache_curves_face_wireframe_get(Object *ob)
blender::gpu::Batch * DRW_cache_mesh_face_wireframe_get(Object *ob)
blender::gpu::Batch * DRW_cache_curves_edge_detection_get(Object *ob, bool *r_is_manifold)
blender::gpu::VertBuf * DRW_cache_object_pos_vertbuf_get(Object *ob)
blender::gpu::Batch * DRW_cache_field_wind_get()
blender::gpu::Batch * DRW_cache_cursor_get(bool crosshair_lines)
blender::gpu::Batch * DRW_cache_bone_arrows_get()
blender::gpu::Batch * DRW_cache_single_arrow_get()
blender::gpu::Batch * DRW_cache_light_icon_inner_lines_get()
blender::gpu::Batch * DRW_cache_bone_octahedral_wire_get()
blender::gpu::Batch * DRW_cache_lightprobe_planar_get()
blender::gpu::Batch * DRW_cache_bone_octahedral_get()
blender::gpu::Batch * DRW_cache_curves_surface_get(Object *ob)
blender::gpu::Batch * DRW_cache_particles_get_edit_strands(Object *object, ParticleSystem *psys, PTCacheEdit *edit, bool use_weight)
blender::gpu::Batch * DRW_cache_quad_get()
blender::gpu::Batch * DRW_cache_speaker_get()
blender::gpu::Batch * DRW_gpencil_dummy_buffer_get()
blender::gpu::Batch ** DRW_cache_object_surface_material_get(Object *ob, GPUMaterial **gpumat_array, uint gpumat_array_len)
int DRW_cache_object_material_count_get(const Object *ob)
blender::gpu::Batch * DRW_cache_bone_envelope_outline_get()
blender::gpu::Batch * DRW_cache_bone_dof_lines_get()
blender::gpu::Batch * DRW_cache_particles_get_edit_tip_points(Object *object, ParticleSystem *psys, PTCacheEdit *edit)
blender::gpu::Batch * DRW_cache_fullscreen_quad_get()
blender::gpu::Batch * DRW_cache_bone_box_get()
blender::gpu::Batch * DRW_cache_camera_distances_get()
blender::gpu::Batch * DRW_cache_light_area_disk_lines_get()
blender::gpu::Batch * DRW_cache_particles_get_edit_inner_points(Object *object, ParticleSystem *psys, PTCacheEdit *edit)
blender::gpu::Batch * DRW_cache_mesh_surface_texpaint_single_get(Object *ob)
blender::gpu::Batch * DRW_cache_camera_tria_wire_get()
blender::gpu::Batch * DRW_cache_quad_wires_get()
blender::gpu::Batch * DRW_cache_camera_frame_get()
blender::gpu::Batch * DRW_cache_bone_stick_get()
blender::gpu::Batch * DRW_cache_grid_get()
blender::gpu::Batch * DRW_cache_mesh_surface_mesh_analysis_get(Object *ob)
blender::gpu::Batch * DRW_cache_bone_dof_sphere_get()
blender::gpu::Batch * DRW_cache_light_spot_volume_get()
blender::gpu::Batch * DRW_cache_empty_cylinder_get()
blender::gpu::Batch * DRW_cache_empty_capsule_body_get()
blender::gpu::Batch * DRW_cache_camera_tria_get()
blender::gpu::Batch * DRW_cache_mesh_loose_edges_get(Object *ob)
blender::gpu::Batch * DRW_cache_plain_axes_get()
blender::gpu::Batch * DRW_cache_field_tube_limit_get()
blender::gpu::Batch * DRW_cache_bone_box_wire_get()
blender::gpu::Batch * DRW_cache_mesh_surface_viewer_attribute_get(Object *ob)
blender::gpu::Batch * DRW_cache_lattice_wire_get(Object *ob, bool use_weight)
blender::gpu::Batch * DRW_cache_empty_cone_get()
blender::gpu::Batch * DRW_cache_curve_edge_normal_get(Object *ob)
blender::gpu::Batch * DRW_cache_object_loose_edges_get(Object *ob)
blender::gpu::Batch ** DRW_cache_mesh_surface_texpaint_get(Object *ob)
blender::gpu::Batch * DRW_cache_empty_capsule_cap_get()
blender::gpu::Batch * DRW_cache_cube_get()
blender::gpu::Batch * DRW_cache_grease_pencil_get(const Scene *scene, Object *ob)
blender::gpu::Batch * DRW_cache_volume_face_wireframe_get(Object *ob)
blender::gpu::Batch * DRW_cache_grease_pencil_face_wireframe_get(const Scene *scene, Object *ob)
gpu::VertBuf * DRW_cache_grease_pencil_position_buffer_get(const Scene *scene, Object *ob)
blender::gpu::Batch * DRW_cache_grease_pencil_edit_lines_get(const Scene *scene, Object *ob)
blender::gpu::Batch * DRW_cache_grease_pencil_weight_lines_get(const Scene *scene, Object *ob)
blender::gpu::Batch * DRW_cache_grease_pencil_edit_points_get(const Scene *scene, Object *ob)
blender::gpu::Batch * DRW_cache_volume_selection_surface_get(Object *ob)
blender::gpu::Batch * DRW_cache_grease_pencil_weight_points_get(const Scene *scene, Object *ob)
DRWVolumeGrid * DRW_volume_batch_cache_get_grid(Volume *volume, const bke::VolumeGridData *volume_grid)
void DRW_cache_gpencil_sbuffer_clear(Object *ob)
gpu::VertBuf * DRW_cache_grease_pencil_color_buffer_get(const Scene *scene, Object *ob)
blender::float4x4 object_to_texture
blender::float4x4 object_to_bounds
GPUTexture * texture
blender::float4x4 bounds_to_texture
DRWVolumeGrid * prev
DRWVolumeGrid * next
blender::float4x4 texture_to_object