Blender V4.3
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
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
75/* Is stored in ModifierData.runtime. */
76#
77#
82
83typedef struct DynamicPaintSurface {
84
89
92
93 /* cache */
97
98 /* surface */
99 char name[64];
100 short format, type;
106
109
110 /* initial color */
111 float init_color[4];
115
119
122
123 /* per surface brush settings */
125
126 /* wave settings */
128 char _pad2[4];
129
131 char uvlayer_name[68];
135 char output_name[68];
136 /* some surfaces have 2 outputs. */
137 char output_name2[68];
138
140
141/* canvas flags */
142enum {
145};
146
147/* Canvas settings */
160
161/* flags */
162enum {
165 // MOD_DPAINT_USE_MATERIAL = 1 << 1, /* DNA_DEPRECATED */
170
179
188
191};
192
193/* collision type */
194enum {
195 MOD_DPAINT_COL_VOLUME = 0, /* paint with mesh volume */
196 MOD_DPAINT_COL_DIST = 1, /* paint using distance to mesh surface */
197 MOD_DPAINT_COL_VOLDIST = 2, /* use both volume and distance */
198 MOD_DPAINT_COL_PSYS = 3, /* use particle system */
199 MOD_DPAINT_COL_POINT = 4, /* use distance to object center point */
200};
201
202/* proximity_falloff */
203enum {
204 MOD_DPAINT_PRFALL_CONSTANT = 0, /* no-falloff */
205 MOD_DPAINT_PRFALL_SMOOTH = 1, /* smooth, linear falloff */
206 MOD_DPAINT_PRFALL_RAMP = 2, /* use color ramp */
207};
208
209/* wave_brush_type */
210enum {
211 MOD_DPAINT_WAVEB_DEPTH = 0, /* use intersection depth */
212 MOD_DPAINT_WAVEB_FORCE = 1, /* act as a force on intersection area */
213 MOD_DPAINT_WAVEB_REFLECT = 2, /* obstacle that reflects waves */
214 MOD_DPAINT_WAVEB_CHANGE = 3, /* use change of intersection depth from previous frame */
215};
216
217/* brush ray_dir */
218enum {
222};
223
224/* Brush settings */
@ 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_RAY_BRUSH_AVG
@ MOD_DPAINT_RAY_CANVAS
@ MOD_DPAINT_RAY_ZPLUS
@ MOD_DPAINT_INITIAL_NONE
@ MOD_DPAINT_INITIAL_VERTEXCOLOR
@ MOD_DPAINT_INITIAL_COLOR
@ MOD_DPAINT_INITIAL_TEXTURE
struct DynamicPaintCanvasSettings DynamicPaintCanvasSettings
struct DynamicPaintRuntime DynamicPaintRuntime
@ MOD_DPAINT_IMGFORMAT_OPENEXR
@ MOD_DPAINT_IMGFORMAT_PNG
@ MOD_DPAINT_PRFALL_CONSTANT
@ MOD_DPAINT_PRFALL_SMOOTH
@ MOD_DPAINT_PRFALL_RAMP
@ 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_SURFACE_T_WEIGHT
@ MOD_DPAINT_SURFACE_T_PAINT
@ MOD_DPAINT_SURFACE_T_DISPLACE
@ MOD_DPAINT_SURFACE_T_WAVE
@ MOD_DPAINT_BAKING
@ MOD_DPAINT_EFFECT_DO_DRIP
@ MOD_DPAINT_EFFECT_DO_SPREAD
@ MOD_DPAINT_EFFECT_DO_SHRINK
struct DynamicPaintBrushSettings DynamicPaintBrushSettings
@ MOD_DPAINT_COL_DIST
@ MOD_DPAINT_COL_VOLDIST
@ MOD_DPAINT_COL_POINT
@ MOD_DPAINT_COL_VOLUME
@ MOD_DPAINT_COL_PSYS
@ MOD_DPAINT_SURFACE_F_PTEX
@ MOD_DPAINT_SURFACE_F_VERTEX
@ MOD_DPAINT_SURFACE_F_IMAGESEQ
struct DynamicPaintSurface DynamicPaintSurface
@ MOD_DPAINT_WAVEB_REFLECT
@ MOD_DPAINT_WAVEB_DEPTH
@ MOD_DPAINT_WAVEB_CHANGE
@ MOD_DPAINT_WAVEB_FORCE
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