Welcome to mirror list, hosted at ThFree Co, Russian Federation.

DNA_shader_fx_types.h « makesdna « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f19181bf07d8b2e6fa284dfde8bb7a6bf4ae9058 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
/*
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 */

/** \file
 * \ingroup DNA
 */

#ifndef __DNA_SHADER_FX_TYPES_H__
#define __DNA_SHADER_FX_TYPES_H__

#include "DNA_defs.h"
#include "DNA_listBase.h"

struct DRWShadingGroup;

/* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE!
 * (ONLY ADD NEW ITEMS AT THE END)
 */

typedef enum ShaderFxType {
  eShaderFxType_None = 0,
  eShaderFxType_Blur = 1,
  eShaderFxType_Flip = 2,
  eShaderFxType_Light_deprecated = 3, /* DEPRECATED (replaced by scene lights) */
  eShaderFxType_Pixel = 4,
  eShaderFxType_Swirl = 5,
  eShaderFxType_Wave = 6,
  eShaderFxType_Rim = 7,
  eShaderFxType_Colorize = 8,
  eShaderFxType_Shadow = 9,
  eShaderFxType_Glow = 10,
  /* Keep last. */
  NUM_SHADER_FX_TYPES,
} ShaderFxType;

typedef enum ShaderFxMode {
  eShaderFxMode_Realtime = (1 << 0),
  eShaderFxMode_Render = (1 << 1),
  eShaderFxMode_Editmode = (1 << 2),
  eShaderFxMode_Expanded_DEPRECATED = (1 << 3),
} ShaderFxMode;

typedef enum {
  /* This fx has been inserted in local override, and hence can be fully edited. */
  eShaderFxFlag_OverrideLibrary_Local = (1 << 0),
} ShaderFxFlag;

typedef struct ShaderFxData {
  struct ShaderFxData *next, *prev;

  int type, mode;
  int stackindex;
  short flag;
  /* Expansion for shader effect panels and sub-panels. */
  short ui_expand_flag;
  /** MAX_NAME. */
  char name[64];

  char *error;
} ShaderFxData;

/* Runtime temp data */
typedef struct ShaderFxData_Runtime {
  float loc[3];
  char _pad[4];
  struct DRWShadingGroup *fx_sh;
  struct DRWShadingGroup *fx_sh_b;
  struct DRWShadingGroup *fx_sh_c;
} ShaderFxData_Runtime;

typedef struct BlurShaderFxData {
  ShaderFxData shaderfx;
  float radius[2];
  /** Flags. */
  int flag;
  /** Number of samples. */
  int samples;
  /** Rotation of blur effect.  */
  float rotation;
  char _pad[4];

  ShaderFxData_Runtime runtime;
} BlurShaderFxData;

typedef enum eBlurShaderFx_Flag {
  FX_BLUR_DOF_MODE = (1 << 0),
} eBlurShaderFx_Flag;

typedef struct ColorizeShaderFxData {
  ShaderFxData shaderfx;
  int mode;
  float low_color[4];
  float high_color[4];
  float factor;
  /** Flags. */
  int flag;
  char _pad[4];

  ShaderFxData_Runtime runtime;
} ColorizeShaderFxData;

typedef enum ColorizeShaderFxModes {
  eShaderFxColorizeMode_GrayScale = 0,
  eShaderFxColorizeMode_Sepia = 1,
  eShaderFxColorizeMode_Duotone = 2,
  eShaderFxColorizeMode_Custom = 3,
  eShaderFxColorizeMode_Transparent = 4,
} ColorizeShaderFxModes;

typedef struct FlipShaderFxData {
  ShaderFxData shaderfx;
  /** Flags. */
  int flag;
  /** Internal, not visible in rna. */
  int flipmode;
  ShaderFxData_Runtime runtime;
} FlipShaderFxData;

typedef enum eFlipShaderFx_Flag {
  FX_FLIP_HORIZONTAL = (1 << 0),
  FX_FLIP_VERTICAL = (1 << 1),
} eFlipShaderFx_Flag;

typedef struct GlowShaderFxData {
  ShaderFxData shaderfx;
  float glow_color[4];
  float select_color[3];
  float threshold;
  /** Flags. */
  int flag;
  int mode;
  float blur[2];
  int samples;
  /** Rotation of effect.  */
  float rotation;
  /** Blend modes. */
  int blend_mode;
  char _pad[4];

  ShaderFxData_Runtime runtime;
} GlowShaderFxData;

typedef enum GlowShaderFxModes {
  eShaderFxGlowMode_Luminance = 0,
  eShaderFxGlowMode_Color = 1,
} GlowShaderFxModes;

typedef enum eGlowShaderFx_Flag {
  FX_GLOW_USE_ALPHA = (1 << 0),
} eGlowShaderFx_Flag;

typedef struct PixelShaderFxData {
  ShaderFxData shaderfx;
  /** Last element used for shader only. */
  int size[3];
  /** Flags. */
  int flag;
  float rgba[4];
  ShaderFxData_Runtime runtime;
} PixelShaderFxData;

typedef enum ePixelShaderFx_Flag {
  FX_PIXEL_FILTER_NEAREST = (1 << 0),
} ePixelShaderFx_Flag;

typedef struct RimShaderFxData {
  ShaderFxData shaderfx;
  int offset[2];
  /** Flags. */
  int flag;
  float rim_rgb[3];
  float mask_rgb[3];
  int mode;
  int blur[2];
  int samples;
  char _pad[4];
  ShaderFxData_Runtime runtime;
} RimShaderFxData;

typedef enum RimShaderFxModes {
  eShaderFxRimMode_Normal = 0,
  eShaderFxRimMode_Overlay = 1,
  eShaderFxRimMode_Add = 2,
  eShaderFxRimMode_Subtract = 3,
  eShaderFxRimMode_Multiply = 4,
  eShaderFxRimMode_Divide = 5,
} RimShaderFxModes;

typedef struct ShadowShaderFxData {
  ShaderFxData shaderfx;
  struct Object *object;
  int offset[2];
  /** Flags. */
  int flag;
  float shadow_rgba[4];
  float amplitude;
  float period;
  float phase;
  int orientation;
  float scale[2];
  float rotation;
  int blur[2];
  int samples;
  char _pad[4];
  ShaderFxData_Runtime runtime;
} ShadowShaderFxData;

typedef enum eShadowShaderFx_Flag {
  FX_SHADOW_USE_OBJECT = (1 << 0),
  FX_SHADOW_USE_WAVE = (1 << 1),
} eShadowShaderFx_Flag;

typedef struct SwirlShaderFxData {
  ShaderFxData shaderfx;
  struct Object *object;
  /** Flags. */
  int flag;
  int radius;
  float angle;
  /** Not visible in rna. */
  int transparent;
  ShaderFxData_Runtime runtime;
} SwirlShaderFxData;

typedef enum eSwirlShaderFx_Flag {
  FX_SWIRL_MAKE_TRANSPARENT = (1 << 0),
} eSwirlShaderFx_Flag;

typedef struct WaveShaderFxData {
  ShaderFxData shaderfx;
  float amplitude;
  float period;
  float phase;
  int orientation;
  /** Flags. */
  int flag;
  char _pad[4];
  ShaderFxData_Runtime runtime;
} WaveShaderFxData;
#endif /* __DNA_SHADER_FX_TYPES_H__ */