Blender  V3.3
DNA_dynamicpaint_types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #pragma once
8 
9 #include "DNA_listBase.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 struct PaintSurfaceData;
16 
17 /* surface format */
18 enum {
22 };
23 
24 /* surface type */
25 enum {
30 };
31 
32 /* surface flags */
33 enum {
34  MOD_DPAINT_ACTIVE = 1 << 0, /* Is surface enabled */
35 
36  MOD_DPAINT_ANTIALIAS = 1 << 1, /* do antialiasing */
37  MOD_DPAINT_DISSOLVE = 1 << 2, /* do dissolve */
38  MOD_DPAINT_MULALPHA = 1 << 3, /* Multiply color by alpha when saving image */
39  MOD_DPAINT_DISSOLVE_LOG = 1 << 4, /* Use 1/x for surface dissolve */
40  MOD_DPAINT_DRY_LOG = 1 << 5, /* Use 1/x for drying paint */
41 
42  MOD_DPAINT_WAVE_OPEN_BORDERS = 1 << 7, /* passes waves through mesh edges */
43  MOD_DPAINT_DISP_INCREMENTAL = 1 << 8, /* builds displace on top of earlier values */
44  MOD_DPAINT_USE_DRYING = 1 << 9, /* use drying */
45 
46  MOD_DPAINT_OUT1 = 1 << 10, /* output primary surface */
47  MOD_DPAINT_OUT2 = 1 << 11, /* output secondary surface */
48 };
49 
50 /* image_fileformat */
51 enum {
54 };
55 
56 /* disp_format */
57 enum {
58  MOD_DPAINT_DISP_DISPLACE = 0, /* displacement output displace map */
59  MOD_DPAINT_DISP_DEPTH = 1, /* displacement output depth data */
60 };
61 
62 /* effect */
63 enum {
64  MOD_DPAINT_EFFECT_DO_SPREAD = 1 << 0, /* do spread effect */
65  MOD_DPAINT_EFFECT_DO_DRIP = 1 << 1, /* do drip effect */
66  MOD_DPAINT_EFFECT_DO_SHRINK = 1 << 2, /* do shrink effect */
67 };
68 
69 /* init_color_type */
70 enum {
75 };
76 
77 /* Is stored in ModifierData.runtime. */
78 #
79 #
80 typedef struct DynamicPaintRuntime {
81  struct Mesh *canvas_mesh;
82  struct Mesh *brush_mesh;
84 
85 typedef struct DynamicPaintSurface {
86 
91 
94 
95  /* cache */
97  struct ListBase ptcaches;
99 
100  /* surface */
101  char name[64];
102  short format, type;
105  short effect_ui;
107  int flags, effect;
108 
111 
112  /* initial color */
113  float init_color[4];
114  struct Tex *init_texture;
116  char init_layername[64];
117 
121 
124 
125  /* per surface brush settings */
127 
128  /* wave settings */
130  char _pad2[4];
131 
133  char uvlayer_name[64];
135  char image_output_path[1024];
137  char output_name[64]; /* some surfaces have 2 outputs. */
139  char output_name2[64];
140 
142 
143 /* canvas flags */
144 enum {
147 };
148 
149 /* Canvas settings */
153 
154  struct ListBase surfaces;
156  char _pad[4];
157 
159  char error[64];
160 
162 
163 /* flags */
164 enum {
167  // MOD_DPAINT_USE_MATERIAL = 1 << 1, /* DNA_DEPRECATED */
172 
181 
190 
193 };
194 
195 /* collision type */
196 enum {
197  MOD_DPAINT_COL_VOLUME = 0, /* paint with mesh volume */
198  MOD_DPAINT_COL_DIST = 1, /* paint using distance to mesh surface */
199  MOD_DPAINT_COL_VOLDIST = 2, /* use both volume and distance */
200  MOD_DPAINT_COL_PSYS = 3, /* use particle system */
201  MOD_DPAINT_COL_POINT = 4, /* use distance to object center point */
202 };
203 
204 /* proximity_falloff */
205 enum {
206  MOD_DPAINT_PRFALL_CONSTANT = 0, /* no-falloff */
207  MOD_DPAINT_PRFALL_SMOOTH = 1, /* smooth, linear falloff */
208  MOD_DPAINT_PRFALL_RAMP = 2, /* use color ramp */
209 };
210 
211 /* wave_brush_type */
212 enum {
213  MOD_DPAINT_WAVEB_DEPTH = 0, /* use intersection depth */
214  MOD_DPAINT_WAVEB_FORCE = 1, /* act as a force on intersection area */
215  MOD_DPAINT_WAVEB_REFLECT = 2, /* obstacle that reflects waves */
216  MOD_DPAINT_WAVEB_CHANGE = 3, /* use change of intersection depth from previous frame */
217 };
218 
219 /* brush ray_dir */
220 enum {
224 };
225 
226 /* Brush settings */
230 
238 
239  int flags;
241 
242  float r, g, b, alpha;
243  float wetness;
244 
247 
248  /* color ramps */
253 
255  short wave_type;
256  short ray_dir;
257  char _pad[2];
258 
262 
263 #ifdef __cplusplus
264 }
265 #endif
@ MOD_DPAINT_INITIAL_NONE
@ MOD_DPAINT_INITIAL_VERTEXCOLOR
@ MOD_DPAINT_INITIAL_COLOR
@ MOD_DPAINT_INITIAL_TEXTURE
@ MOD_DPAINT_SURFACE_T_WEIGHT
@ MOD_DPAINT_SURFACE_T_PAINT
@ MOD_DPAINT_SURFACE_T_DISPLACE
@ MOD_DPAINT_SURFACE_T_WAVE
@ MOD_DPAINT_RAY_BRUSH_AVG
@ MOD_DPAINT_RAY_CANVAS
@ MOD_DPAINT_RAY_ZPLUS
@ MOD_DPAINT_COL_DIST
@ MOD_DPAINT_COL_VOLDIST
@ MOD_DPAINT_COL_POINT
@ MOD_DPAINT_COL_VOLUME
@ MOD_DPAINT_COL_PSYS
@ MOD_DPAINT_ACTIVE
@ MOD_DPAINT_OUT2
@ MOD_DPAINT_USE_DRYING
@ MOD_DPAINT_ANTIALIAS
@ MOD_DPAINT_WAVE_OPEN_BORDERS
@ MOD_DPAINT_DISP_INCREMENTAL
@ MOD_DPAINT_OUT1
@ MOD_DPAINT_DISSOLVE
@ MOD_DPAINT_MULALPHA
@ MOD_DPAINT_DISSOLVE_LOG
@ MOD_DPAINT_DRY_LOG
struct DynamicPaintCanvasSettings DynamicPaintCanvasSettings
struct DynamicPaintRuntime DynamicPaintRuntime
@ MOD_DPAINT_PRFALL_CONSTANT
@ MOD_DPAINT_PRFALL_SMOOTH
@ MOD_DPAINT_PRFALL_RAMP
@ MOD_DPAINT_BAKING
@ MOD_DPAINT_DISP_DEPTH
@ MOD_DPAINT_DISP_DISPLACE
@ MOD_DPAINT_PROX_PROJECT
@ MOD_DPAINT_ABS_ALPHA
@ MOD_DPAINT_RAMP_ALPHA
@ MOD_DPAINT_INVERSE_PROX
@ MOD_DPAINT_USES_VELOCITY
@ MOD_DPAINT_VELOCITY_ALPHA
@ MOD_DPAINT_VELOCITY_DEPTH
@ MOD_DPAINT_ERASE
@ MOD_DPAINT_VELOCITY_COLOR
@ MOD_DPAINT_DO_SMUDGE
@ MOD_DPAINT_PART_RAD
@ MOD_DPAINT_NEGATE_VOLUME
@ MOD_DPAINT_EFFECT_DO_DRIP
@ MOD_DPAINT_EFFECT_DO_SPREAD
@ MOD_DPAINT_EFFECT_DO_SHRINK
@ MOD_DPAINT_WAVEB_REFLECT
@ MOD_DPAINT_WAVEB_DEPTH
@ MOD_DPAINT_WAVEB_CHANGE
@ MOD_DPAINT_WAVEB_FORCE
struct DynamicPaintBrushSettings DynamicPaintBrushSettings
@ MOD_DPAINT_SURFACE_F_PTEX
@ MOD_DPAINT_SURFACE_F_VERTEX
@ MOD_DPAINT_SURFACE_F_IMAGESEQ
@ MOD_DPAINT_IMGFORMAT_OPENEXR
@ MOD_DPAINT_IMGFORMAT_PNG
struct DynamicPaintSurface DynamicPaintSurface
These structs are the foundation for all linked lists in the library system.
struct DynamicPaintModifierData * pmd
struct ParticleSystem * psys
struct DynamicPaintModifierData * pmd
struct DynamicPaintSurface * prev
struct DynamicPaintCanvasSettings * canvas
struct PaintSurfaceData * data
struct Collection * brush_group
struct DynamicPaintSurface * next
struct EffectorWeights * effector_weights
struct PointCache * pointcache