Blender V5.0
DNA_dynamicpaint_types.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "DNA_listBase.h"
12
13struct PaintSurfaceData;
14
15/* surface format */
16enum {
20};
21
22/* surface type */
23enum {
28};
29
30/* surface flags */
31enum {
32 MOD_DPAINT_ACTIVE = 1 << 0, /* Is surface enabled */
33
34 MOD_DPAINT_ANTIALIAS = 1 << 1, /* do anti-aliasing. */
35 MOD_DPAINT_DISSOLVE = 1 << 2, /* do dissolve */
36 MOD_DPAINT_MULALPHA = 1 << 3, /* Multiply color by alpha when saving image */
37 MOD_DPAINT_DISSOLVE_LOG = 1 << 4, /* Use 1/x for surface dissolve */
38 MOD_DPAINT_DRY_LOG = 1 << 5, /* Use 1/x for drying paint */
39
40 MOD_DPAINT_WAVE_OPEN_BORDERS = 1 << 7, /* passes waves through mesh edges */
41 MOD_DPAINT_DISP_INCREMENTAL = 1 << 8, /* builds displace on top of earlier values */
42 MOD_DPAINT_USE_DRYING = 1 << 9, /* use drying */
43
44 MOD_DPAINT_OUT1 = 1 << 10, /* output primary surface */
45 MOD_DPAINT_OUT2 = 1 << 11, /* output secondary surface */
46};
47
48/* image_fileformat */
49enum {
52};
53
54/* disp_format */
55enum {
56 MOD_DPAINT_DISP_DISPLACE = 0, /* displacement output displace map */
57 MOD_DPAINT_DISP_DEPTH = 1, /* displacement output depth data */
58};
59
60/* effect */
61enum {
62 MOD_DPAINT_EFFECT_DO_SPREAD = 1 << 0, /* do spread effect */
63 MOD_DPAINT_EFFECT_DO_DRIP = 1 << 1, /* do drip effect */
64 MOD_DPAINT_EFFECT_DO_SHRINK = 1 << 2, /* do shrink effect */
65};
66
67/* init_color_type */
68enum {
73};
74
75typedef struct DynamicPaintSurface {
76
81
84
85 /* cache */
89
90 /* surface */
91 char name[64];
92 short format, type;
95 short effect_ui;
98
101
102 /* initial color */
103 float init_color[4];
105 char init_layername[/*MAX_CUSTOMDATA_LAYER_NAME*/ 68];
106
110
113
114 /* per surface brush settings */
116
117 /* wave settings */
119 char _pad2[4];
120
121 char uvlayer_name[/*MAX_CUSTOMDATA_LAYER_NAME*/ 68];
122 char image_output_path[/*FILE_MAX*/ 1024];
123 char output_name[/*MAX_CUSTOMDATA_LAYER_NAME*/ 68];
124 char output_name2[/*MAX_CUSTOMDATA_LAYER_NAME*/ 68];
125
127
128/* canvas flags */
129enum {
132};
133
134/* Canvas settings */
147
148/* flags */
149enum {
152 // MOD_DPAINT_USE_MATERIAL = 1 << 1, /* DNA_DEPRECATED */
157
166
175
178};
179
180/* collision type */
181enum {
182 MOD_DPAINT_COL_VOLUME = 0, /* paint with mesh volume */
183 MOD_DPAINT_COL_DIST = 1, /* paint using distance to mesh surface */
184 MOD_DPAINT_COL_VOLDIST = 2, /* use both volume and distance */
185 MOD_DPAINT_COL_PSYS = 3, /* use particle system */
186 MOD_DPAINT_COL_POINT = 4, /* use distance to object center point */
187};
188
189/* proximity_falloff */
190enum {
191 MOD_DPAINT_PRFALL_CONSTANT = 0, /* no-falloff */
192 MOD_DPAINT_PRFALL_SMOOTH = 1, /* smooth, linear falloff */
193 MOD_DPAINT_PRFALL_RAMP = 2, /* use color ramp */
194};
195
196/* wave_brush_type */
197enum {
198 MOD_DPAINT_WAVEB_DEPTH = 0, /* use intersection depth */
199 MOD_DPAINT_WAVEB_FORCE = 1, /* act as a force on intersection area */
200 MOD_DPAINT_WAVEB_REFLECT = 2, /* obstacle that reflects waves */
201 MOD_DPAINT_WAVEB_CHANGE = 3, /* use change of intersection depth from previous frame */
202};
203
204/* brush ray_dir */
205enum {
209};
210
211/* Brush settings */
@ MOD_DPAINT_INITIAL_NONE
@ MOD_DPAINT_INITIAL_VERTEXCOLOR
@ MOD_DPAINT_INITIAL_COLOR
@ MOD_DPAINT_INITIAL_TEXTURE
@ 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_VELOCITY_COLOR
@ MOD_DPAINT_DO_SMUDGE
@ MOD_DPAINT_PART_RAD
@ MOD_DPAINT_NEGATE_VOLUME
@ 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
@ MOD_DPAINT_DISP_DEPTH
@ MOD_DPAINT_DISP_DISPLACE
@ MOD_DPAINT_WAVEB_REFLECT
@ MOD_DPAINT_WAVEB_DEPTH
@ MOD_DPAINT_WAVEB_CHANGE
@ MOD_DPAINT_WAVEB_FORCE
@ MOD_DPAINT_RAY_BRUSH_AVG
@ MOD_DPAINT_RAY_CANVAS
@ MOD_DPAINT_RAY_ZPLUS
@ MOD_DPAINT_PRFALL_CONSTANT
@ MOD_DPAINT_PRFALL_SMOOTH
@ MOD_DPAINT_PRFALL_RAMP
@ MOD_DPAINT_EFFECT_DO_DRIP
@ MOD_DPAINT_EFFECT_DO_SPREAD
@ MOD_DPAINT_EFFECT_DO_SHRINK
@ MOD_DPAINT_SURFACE_T_WEIGHT
@ MOD_DPAINT_SURFACE_T_PAINT
@ MOD_DPAINT_SURFACE_T_DISPLACE
@ MOD_DPAINT_SURFACE_T_WAVE
@ MOD_DPAINT_BAKING
@ MOD_DPAINT_IMGFORMAT_OPENEXR
@ MOD_DPAINT_IMGFORMAT_PNG
@ MOD_DPAINT_SURFACE_F_PTEX
@ MOD_DPAINT_SURFACE_F_VERTEX
@ MOD_DPAINT_SURFACE_F_IMAGESEQ
These structs are the foundation for all linked lists in the library system.
struct DynamicPaintModifierData * pmd
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