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