Blender  V3.3
draw_cache_impl.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2016 Blender Foundation. */
3 
8 #pragma once
9 
10 struct GPUBatch;
11 struct GPUIndexBuf;
12 struct GPUMaterial;
13 struct GPUVertBuf;
14 struct ListBase;
15 struct ModifierData;
16 struct PTCacheEdit;
17 struct ParticleSystem;
18 struct TaskGraph;
19 
20 struct Curve;
21 struct Curves;
22 struct Lattice;
23 struct Mesh;
24 struct MetaBall;
25 struct PointCloud;
26 struct Volume;
27 struct bGPdata;
28 
29 #include "BKE_mesh_types.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /* -------------------------------------------------------------------- */
39 void DRW_mball_batch_cache_dirty_tag(struct MetaBall *mb, int mode);
41 void DRW_mball_batch_cache_free(struct MetaBall *mb);
42 
43 void DRW_curve_batch_cache_dirty_tag(struct Curve *cu, int mode);
44 void DRW_curve_batch_cache_validate(struct Curve *cu);
45 void DRW_curve_batch_cache_free(struct Curve *cu);
46 
48 void DRW_mesh_batch_cache_validate(struct Object *object, struct Mesh *me);
49 void DRW_mesh_batch_cache_free(struct Mesh *me);
50 
51 void DRW_lattice_batch_cache_dirty_tag(struct Lattice *lt, int mode);
53 void DRW_lattice_batch_cache_free(struct Lattice *lt);
54 
55 void DRW_particle_batch_cache_dirty_tag(struct ParticleSystem *psys, int mode);
57 
59 void DRW_gpencil_batch_cache_free(struct bGPdata *gpd);
60 
61 void DRW_curves_batch_cache_dirty_tag(struct Curves *curves, int mode);
64 
65 void DRW_pointcloud_batch_cache_dirty_tag(struct PointCloud *pointcloud, int mode);
66 void DRW_pointcloud_batch_cache_validate(struct PointCloud *pointcloud);
67 void DRW_pointcloud_batch_cache_free(struct PointCloud *pointcloud);
68 
69 void DRW_volume_batch_cache_dirty_tag(struct Volume *volume, int mode);
70 void DRW_volume_batch_cache_validate(struct Volume *volume);
71 void DRW_volume_batch_cache_free(struct Volume *volume);
72 
75 /* -------------------------------------------------------------------- */
79 void DRW_batch_cache_free_old(struct Object *ob, int ctime);
80 
85 void DRW_mesh_batch_cache_free_old(struct Mesh *me, int ctime);
86 void DRW_curves_batch_cache_free_old(struct Curves *curves, int ctime);
87 
90 /* -------------------------------------------------------------------- */
94 void DRW_vertbuf_create_wiredata(struct GPUVertBuf *vbo, int vert_len);
95 
98 /* -------------------------------------------------------------------- */
102 void DRW_curve_batch_cache_create_requested(struct Object *ob, const struct Scene *scene);
103 
104 int DRW_curve_material_count_get(struct Curve *cu);
105 
110 
113 /* -------------------------------------------------------------------- */
118 
121  struct MetaBall *mb,
122  struct GPUMaterial **gpumat_array,
123  uint gpumat_array_len);
126  bool *r_is_manifold);
127 
130 /* -------------------------------------------------------------------- */
135  struct GPUVertBuf *vbo,
136  const struct Scene *scene);
137 void DRW_displist_vertbuf_create_wiredata(struct ListBase *lb, struct GPUVertBuf *vbo);
141  struct GPUIndexBuf *ibo,
142  bool *r_is_manifold);
143 
146 /* -------------------------------------------------------------------- */
151  bool use_weight,
152  int actdef);
155 
158 /* -------------------------------------------------------------------- */
163 
171  const char *name,
172  bool *r_is_point_domain);
173 
175 
177 
180 /* -------------------------------------------------------------------- */
184 int DRW_pointcloud_material_count_get(struct PointCloud *pointcloud);
185 
189  struct GPUMaterial **gpumat_array,
190  uint gpumat_array_len);
191 
194 /* -------------------------------------------------------------------- */
198 int DRW_volume_material_count_get(struct Volume *volume);
199 
202 
205 /* -------------------------------------------------------------------- */
213  struct Object *ob,
214  struct Mesh *me,
215  const struct Scene *scene,
216  bool is_paint_mode,
217  bool use_hide);
218 
222 struct GPUBatch *DRW_mesh_batch_cache_get_edge_detection(struct Mesh *me, bool *r_is_manifold);
224 struct GPUBatch *DRW_mesh_batch_cache_get_surface_edges(struct Object *object, struct Mesh *me);
226  struct Mesh *me,
227  struct GPUMaterial **gpumat_array,
228  uint gpumat_array_len);
230  struct Mesh *me);
232  struct Mesh *me);
234  struct Mesh *me);
235 struct GPUBatch *DRW_mesh_batch_cache_get_surface_sculpt(struct Object *object, struct Mesh *me);
238 
241 /* -------------------------------------------------------------------- */
252 
255 /* -------------------------------------------------------------------- */
263 
266 /* -------------------------------------------------------------------- */
271 
274 /* -------------------------------------------------------------------- */
286  struct Mesh *me,
287  float **tot_area,
288  float **tot_uv_area);
290  struct Mesh *me);
291 struct GPUBatch *DRW_mesh_batch_cache_get_edituv_faces(struct Object *object, struct Mesh *me);
292 struct GPUBatch *DRW_mesh_batch_cache_get_edituv_edges(struct Object *object, struct Mesh *me);
293 struct GPUBatch *DRW_mesh_batch_cache_get_edituv_verts(struct Object *object, struct Mesh *me);
294 struct GPUBatch *DRW_mesh_batch_cache_get_edituv_facedots(struct Object *object, struct Mesh *me);
295 
298 /* -------------------------------------------------------------------- */
302 struct GPUBatch *DRW_mesh_batch_cache_get_uv_edges(struct Object *object, struct Mesh *me);
304 
307 /* -------------------------------------------------------------------- */
313 
314 int DRW_mesh_material_count_get(const struct Object *object, const struct Mesh *me);
315 
316 /* See 'common_globals_lib.glsl' for duplicate defines. */
317 
318 /* Edit mesh bitflags (is this the right place?) */
319 enum {
325  VFLAG_EDGE_SEAM = 1 << 5,
328  /* Beware to not go over 1 << 7 (it's a byte flag). */
329  /* NOTE: Grease pencil edit curve use another type of data format that allows for this value. */
331 };
332 
333 enum {
342  /* Beware to not go over 1 << 7 (it's a byte flag). */
343 };
344 
347 /* -------------------------------------------------------------------- */
351 struct GPUBatch *DRW_particles_batch_cache_get_hair(struct Object *object,
352  struct ParticleSystem *psys,
353  struct ModifierData *md);
354 struct GPUBatch *DRW_particles_batch_cache_get_dots(struct Object *object,
355  struct ParticleSystem *psys);
357  struct ParticleSystem *psys,
358  struct PTCacheEdit *edit,
359  bool use_weight);
361  struct ParticleSystem *psys,
362  struct PTCacheEdit *edit);
364  struct ParticleSystem *psys,
365  struct PTCacheEdit *edit);
366 
369 #ifdef __cplusplus
370 }
371 #endif
eMeshBatchDirtyMode
Definition: BKE_mesh_types.h:9
unsigned int uint
Definition: BLI_sys_types.h:67
GPUBatch
Definition: GPU_batch.h:78
struct GPUIndexBuf GPUIndexBuf
struct GPUTexture GPUTexture
Definition: GPU_texture.h:17
struct GPUVertBuf GPUVertBuf
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to curves
Scene scene
void DRW_displist_indexbuf_create_edges_adjacency_lines(struct ListBase *lb, struct GPUIndexBuf *ibo, bool *r_is_manifold)
struct GPUBatch ** DRW_metaball_batch_cache_get_surface_shaded(struct Object *ob, struct MetaBall *mb, struct GPUMaterial **gpumat_array, uint gpumat_array_len)
struct GPUBatch * DRW_mesh_batch_cache_get_edge_detection(struct Mesh *me, bool *r_is_manifold)
struct GPUBatch ** DRW_mesh_batch_cache_get_surface_texpaint(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_curve_batch_cache_get_wire_edge(struct Curve *cu)
struct GPUBatch * DRW_mesh_batch_cache_get_surface_sculpt(struct Object *object, struct Mesh *me)
void DRW_mesh_batch_cache_validate(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_particles_batch_cache_get_edit_tip_points(struct Object *object, struct ParticleSystem *psys, struct PTCacheEdit *edit)
struct GPUTexture ** DRW_curves_texture_for_evaluated_attribute(struct Curves *curves, const char *name, bool *r_is_point_domain)
struct GPUBatch * DRW_mesh_batch_cache_get_edituv_faces(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_pointcloud_batch_cache_get_surface(struct Object *ob)
struct GPUBatch * DRW_curve_batch_cache_get_edit_edges(struct Curve *cu)
void DRW_particle_batch_cache_free(struct ParticleSystem *psys)
int DRW_metaball_material_count_get(struct MetaBall *mb)
struct GPUVertBuf * DRW_mesh_batch_cache_pos_vertbuf_get(struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_loose_edges(struct Mesh *me)
void DRW_pointcloud_batch_cache_validate(struct PointCloud *pointcloud)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_vertices(struct Mesh *me)
void DRW_mesh_batch_cache_create_requested(struct TaskGraph *task_graph, struct Object *ob, struct Mesh *me, const struct Scene *scene, bool is_paint_mode, bool use_hide)
struct GPUBatch * DRW_mesh_batch_cache_get_edituv_facedots(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_volume_batch_cache_get_wireframes_face(struct Volume *volume)
struct GPUBatch * DRW_particles_batch_cache_get_edit_strands(struct Object *object, struct ParticleSystem *psys, struct PTCacheEdit *edit, bool use_weight)
struct GPUBatch * DRW_mesh_batch_cache_get_wireframes_face(struct Mesh *me)
@ VFLAG_EDGE_SEAM
@ VFLAG_EDGE_FREESTYLE
@ VFLAG_EDGE_ACTIVE
@ VFLAG_VERT_SELECTED_BEZT_HANDLE
@ VFLAG_EDGE_SHARP
@ VFLAG_EDGE_SELECTED
@ VFLAG_VERT_SELECTED
@ VFLAG_VERT_ACTIVE
@ VFLAG_VERT_GPENCIL_BEZT_HANDLE
struct GPUBatch * DRW_curves_batch_cache_get_edit_points(struct Curves *curves)
void DRW_displist_vertbuf_create_wiredata(struct ListBase *lb, struct GPUVertBuf *vbo)
struct GPUBatch * DRW_lattice_batch_cache_get_edit_verts(struct Lattice *lt)
void DRW_curve_batch_cache_free(struct Curve *cu)
struct GPUBatch * DRW_mesh_batch_cache_get_edituv_faces_stretch_angle(struct Object *object, struct Mesh *me)
struct GPUBatch ** DRW_cache_pointcloud_surface_shaded_get(struct Object *ob, struct GPUMaterial **gpumat_array, uint gpumat_array_len)
void DRW_lattice_batch_cache_free(struct Lattice *lt)
void DRW_curve_batch_cache_create_requested(struct Object *ob, const struct Scene *scene)
void DRW_batch_cache_free_old(struct Object *ob, int ctime)
Definition: draw_cache.c:3397
void DRW_gpencil_batch_cache_dirty_tag(struct bGPdata *gpd)
struct GPUBatch * DRW_pointcloud_batch_cache_get_dots(struct Object *ob)
struct GPUBatch * DRW_volume_batch_cache_get_selection_surface(struct Volume *volume)
void DRW_lattice_batch_cache_dirty_tag(struct Lattice *lt, int mode)
void DRW_gpencil_batch_cache_free(struct bGPdata *gpd)
struct GPUBatch * DRW_mesh_batch_cache_get_surface_vertpaint(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_all_edges(struct Mesh *me)
int DRW_mesh_material_count_get(const struct Object *object, const struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_surface_weights(struct Mesh *me)
void DRW_lattice_batch_cache_validate(struct Lattice *lt)
void DRW_volume_batch_cache_free(struct Volume *volume)
struct GPUBatch * DRW_lattice_batch_cache_get_all_verts(struct Lattice *lt)
struct GPUBatch * DRW_mesh_batch_cache_get_triangles_with_select_id(struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_all_verts(struct Mesh *me)
struct GPUVertBuf * DRW_mball_batch_cache_pos_vertbuf_get(struct Object *ob)
void DRW_particle_batch_cache_dirty_tag(struct ParticleSystem *psys, int mode)
struct GPUBatch * DRW_mesh_batch_cache_get_edges_with_select_id(struct Mesh *me)
struct GPUBatch * DRW_particles_batch_cache_get_edit_inner_points(struct Object *object, struct ParticleSystem *psys, struct PTCacheEdit *edit)
void DRW_curve_batch_cache_validate(struct Curve *cu)
void DRW_curves_batch_cache_dirty_tag(struct Curves *curves, int mode)
void DRW_displist_indexbuf_create_triangles_in_order(struct ListBase *lb, struct GPUIndexBuf *ibo)
void DRW_mball_batch_cache_dirty_tag(struct MetaBall *mb, int mode)
struct GPUBatch * DRW_mesh_batch_cache_get_sculpt_overlays(struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_vnors(struct Mesh *me)
void DRW_mball_batch_cache_validate(struct MetaBall *mb)
struct GPUBatch * DRW_curve_batch_cache_get_normal_edge(struct Curve *cu)
void DRW_displist_indexbuf_create_lines_in_order(struct ListBase *lb, struct GPUIndexBuf *ibo)
struct GPUBatch * DRW_mesh_batch_cache_get_edituv_verts(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_edges(struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_edituv_faces_stretch_area(struct Object *object, struct Mesh *me, float **tot_area, float **tot_uv_area)
void DRW_mesh_batch_cache_dirty_tag(struct Mesh *me, eMeshBatchDirtyMode mode)
struct GPUBatch * DRW_mesh_batch_cache_get_facedots_with_select_id(struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_surface_texpaint_single(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_surface_edges(struct Object *object, struct Mesh *me)
void DRW_mball_batch_cache_free(struct MetaBall *mb)
int DRW_curve_material_count_get(struct Curve *cu)
struct GPUBatch * DRW_metaball_batch_cache_get_wireframes_face(struct Object *ob)
void DRW_volume_batch_cache_validate(struct Volume *volume)
int DRW_volume_material_count_get(struct Volume *volume)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_skin_roots(struct Mesh *me)
void DRW_curves_batch_cache_free_old(struct Curves *curves, int ctime)
int DRW_pointcloud_material_count_get(struct PointCloud *pointcloud)
struct GPUBatch * DRW_curve_batch_cache_get_edit_verts(struct Curve *cu)
void DRW_pointcloud_batch_cache_dirty_tag(struct PointCloud *pointcloud, int mode)
void DRW_volume_batch_cache_dirty_tag(struct Volume *volume, int mode)
void DRW_pointcloud_batch_cache_free(struct PointCloud *pointcloud)
void DRW_curves_batch_cache_create_requested(struct Object *ob)
struct GPUBatch ** DRW_mesh_batch_cache_get_surface_shaded(struct Object *object, struct Mesh *me, struct GPUMaterial **gpumat_array, uint gpumat_array_len)
void DRW_curves_batch_cache_free(struct Curves *curves)
void DRW_mesh_batch_cache_free_old(struct Mesh *me, int ctime)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_triangles(struct Mesh *me)
struct GPUBatch * DRW_lattice_batch_cache_get_all_edges(struct Lattice *lt, bool use_weight, int actdef)
void DRW_mesh_batch_cache_free(struct Mesh *me)
void DRW_curves_batch_cache_validate(struct Curves *curves)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_facedots(struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_lnors(struct Mesh *me)
struct GPUBatch * DRW_particles_batch_cache_get_dots(struct Object *object, struct ParticleSystem *psys)
struct GPUBatch * DRW_mesh_batch_cache_get_verts_with_select_id(struct Mesh *me)
struct GPUBatch * DRW_metaball_batch_cache_get_triangles_with_normals(struct Object *ob)
void DRW_displist_vertbuf_create_pos_and_nor(struct ListBase *lb, struct GPUVertBuf *vbo, const struct Scene *scene)
void DRW_curve_batch_cache_dirty_tag(struct Curve *cu, int mode)
struct GPUBatch * DRW_particles_batch_cache_get_hair(struct Object *object, struct ParticleSystem *psys, struct ModifierData *md)
@ VFLAG_FACE_UV_ACTIVE
@ VFLAG_FACE_ACTIVE
@ VFLAG_VERT_UV_PINNED
@ VFLAG_FACE_UV_SELECT
@ VFLAG_FACE_SELECTED
@ VFLAG_VERT_UV_SELECT
@ VFLAG_FACE_FREESTYLE
@ VFLAG_EDGE_UV_SELECT
struct GPUBatch * DRW_mesh_batch_cache_get_edituv_edges(struct Object *object, struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_uv_edges(struct Object *object, struct Mesh *me)
void DRW_vertbuf_create_wiredata(struct GPUVertBuf *vbo, int vert_len)
struct GPUBatch * DRW_metaball_batch_cache_get_edge_detection(struct Object *ob, bool *r_is_manifold)
int DRW_curves_material_count_get(struct Curves *curves)
struct GPUBatch * DRW_mesh_batch_cache_get_edit_mesh_analysis(struct Mesh *me)
struct GPUBatch * DRW_mesh_batch_cache_get_surface(struct Mesh *me)