Fix (unreported) missing Scene's GPencil pointer handling in library_query...
[blender.git] / source / blender / makesdna / DNA_shader_fx_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16
17 /** \file
18  * \ingroup DNA
19  */
20
21 #ifndef __DNA_SHADER_FX_TYPES_H__
22 #define __DNA_SHADER_FX_TYPES_H__
23
24 #include "DNA_defs.h"
25 #include "DNA_listBase.h"
26
27 struct DRWShadingGroup;
28
29 /* WARNING ALERT! TYPEDEF VALUES ARE WRITTEN IN FILES! SO DO NOT CHANGE!
30  * (ONLY ADD NEW ITEMS AT THE END)
31  */
32
33 typedef enum ShaderFxType {
34   eShaderFxType_None = 0,
35   eShaderFxType_Blur = 1,
36   eShaderFxType_Flip = 2,
37   eShaderFxType_Light = 3,
38   eShaderFxType_Pixel = 4,
39   eShaderFxType_Swirl = 5,
40   eShaderFxType_Wave = 6,
41   eShaderFxType_Rim = 7,
42   eShaderFxType_Colorize = 8,
43   eShaderFxType_Shadow = 9,
44   eShaderFxType_Glow = 10,
45   NUM_SHADER_FX_TYPES,
46 } ShaderFxType;
47
48 typedef enum ShaderFxMode {
49   eShaderFxMode_Realtime = (1 << 0),
50   eShaderFxMode_Render = (1 << 1),
51   eShaderFxMode_Editmode = (1 << 2),
52   eShaderFxMode_Expanded = (1 << 3),
53 } ShaderFxMode;
54
55 typedef enum {
56   /* This fx has been inserted in local override, and hence can be fully edited. */
57   eShaderFxFlag_OverrideLibrary_Local = (1 << 0),
58 } ShaderFxFlag;
59
60 typedef struct ShaderFxData {
61   struct ShaderFxData *next, *prev;
62
63   int type, mode;
64   int stackindex;
65   short flag;
66   char _pad[2];
67   /** MAX_NAME. */
68   char name[64];
69
70   char *error;
71 } ShaderFxData;
72
73 /* Runtime temp data */
74 typedef struct ShaderFxData_Runtime {
75   float loc[3];
76   char _pad[4];
77   struct DRWShadingGroup *fx_sh;
78   struct DRWShadingGroup *fx_sh_b;
79   struct DRWShadingGroup *fx_sh_c;
80 } ShaderFxData_Runtime;
81
82 typedef struct BlurShaderFxData {
83   ShaderFxData shaderfx;
84   int radius[2];
85   /** Flags. */
86   int flag;
87   /** Number of samples. */
88   int samples;
89   /** Circle of confusion. */
90   float coc;
91   /** Not visible in rna. */
92   int blur[2];
93   char _pad[4];
94
95   ShaderFxData_Runtime runtime;
96 } BlurShaderFxData;
97
98 typedef enum eBlurShaderFx_Flag {
99   FX_BLUR_DOF_MODE = (1 << 0),
100 } eBlurShaderFx_Flag;
101
102 typedef struct ColorizeShaderFxData {
103   ShaderFxData shaderfx;
104   int mode;
105   float low_color[4];
106   float high_color[4];
107   float factor;
108   /** Flags. */
109   int flag;
110   char _pad[4];
111
112   ShaderFxData_Runtime runtime;
113 } ColorizeShaderFxData;
114
115 typedef enum ColorizeShaderFxModes {
116   eShaderFxColorizeMode_GrayScale = 0,
117   eShaderFxColorizeMode_Sepia = 1,
118   eShaderFxColorizeMode_Duotone = 2,
119   eShaderFxColorizeMode_Custom = 3,
120   eShaderFxColorizeMode_Transparent = 4,
121 } ColorizeShaderFxModes;
122
123 typedef struct FlipShaderFxData {
124   ShaderFxData shaderfx;
125   /** Flags. */
126   int flag;
127   /** Internal, not visible in rna. */
128   int flipmode;
129   ShaderFxData_Runtime runtime;
130 } FlipShaderFxData;
131
132 typedef enum eFlipShaderFx_Flag {
133   FX_FLIP_HORIZONTAL = (1 << 0),
134   FX_FLIP_VERTICAL = (1 << 1),
135 } eFlipShaderFx_Flag;
136
137 typedef struct GlowShaderFxData {
138   ShaderFxData shaderfx;
139   float glow_color[3];
140   float select_color[3];
141   float threshold;
142   /** Flags. */
143   int flag;
144   int mode;
145   int blur[2];
146   int samples;
147   ShaderFxData_Runtime runtime;
148 } GlowShaderFxData;
149
150 typedef enum GlowShaderFxModes {
151   eShaderFxGlowMode_Luminance = 0,
152   eShaderFxGlowMode_Color = 1,
153 } GlowShaderFxModes;
154
155 typedef enum eGlowShaderFx_Flag {
156   FX_GLOW_USE_ALPHA = (1 << 0),
157 } eGlowShaderFx_Flag;
158
159 typedef struct LightShaderFxData {
160   ShaderFxData shaderfx;
161   struct Object *object;
162   /** Flags. */
163   int flag;
164   float energy;
165   float ambient;
166   /** Internal, not visible in rna. */
167   float loc[4];
168   char _pad[4];
169   ShaderFxData_Runtime runtime;
170 } LightShaderFxData;
171
172 typedef struct PixelShaderFxData {
173   ShaderFxData shaderfx;
174   /** Last element used for shader only. */
175   int size[3];
176   /** Flags. */
177   int flag;
178   float rgba[4];
179   ShaderFxData_Runtime runtime;
180 } PixelShaderFxData;
181
182 typedef enum ePixelShaderFx_Flag {
183   FX_PIXEL_USE_LINES = (1 << 0),
184 } ePixelShaderFx_Flag;
185
186 typedef struct RimShaderFxData {
187   ShaderFxData shaderfx;
188   int offset[2];
189   /** Flags. */
190   int flag;
191   float rim_rgb[3];
192   float mask_rgb[3];
193   int mode;
194   int blur[2];
195   int samples;
196   char _pad[4];
197   ShaderFxData_Runtime runtime;
198 } RimShaderFxData;
199
200 typedef enum RimShaderFxModes {
201   eShaderFxRimMode_Normal = 0,
202   eShaderFxRimMode_Overlay = 1,
203   eShaderFxRimMode_Add = 2,
204   eShaderFxRimMode_Subtract = 3,
205   eShaderFxRimMode_Multiply = 4,
206   eShaderFxRimMode_Divide = 5,
207 } RimShaderFxModes;
208
209 typedef struct ShadowShaderFxData {
210   ShaderFxData shaderfx;
211   struct Object *object;
212   int offset[2];
213   /** Flags. */
214   int flag;
215   float shadow_rgba[4];
216   float amplitude;
217   float period;
218   float phase;
219   int orientation;
220   float scale[2];
221   float rotation;
222   int blur[2];
223   int samples;
224   char _pad[4];
225   ShaderFxData_Runtime runtime;
226 } ShadowShaderFxData;
227
228 typedef enum eShadowShaderFx_Flag {
229   FX_SHADOW_USE_OBJECT = (1 << 0),
230   FX_SHADOW_USE_WAVE = (1 << 1),
231 } eShadowShaderFx_Flag;
232
233 typedef struct SwirlShaderFxData {
234   ShaderFxData shaderfx;
235   struct Object *object;
236   /** Flags. */
237   int flag;
238   int radius;
239   float angle;
240   /** Not visible in rna. */
241   int transparent;
242   ShaderFxData_Runtime runtime;
243 } SwirlShaderFxData;
244
245 typedef enum eSwirlShaderFx_Flag {
246   FX_SWIRL_MAKE_TRANSPARENT = (1 << 0),
247 } eSwirlShaderFx_Flag;
248
249 typedef struct WaveShaderFxData {
250   ShaderFxData shaderfx;
251   float amplitude;
252   float period;
253   float phase;
254   int orientation;
255   /** Flags. */
256   int flag;
257   char _pad[4];
258   ShaderFxData_Runtime runtime;
259 } WaveShaderFxData;
260 #endif /* __DNA_SHADER_FX_TYPES_H__ */