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: f3c9f06c8dc0511ffb3bc23bce601e4b64164538 (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
/*
 * ***** BEGIN GPL LICENSE BLOCK *****
 *
 * 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.
 *
 * ***** END GPL LICENSE BLOCK *****
 */

/** \file DNA_shader_fx_types.h
 *  \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     = 3,
	eShaderFxType_Pixel     = 4,
	eShaderFxType_Swirl     = 5,
	eShaderFxType_Wave      = 6,
	eShaderFxType_Rim       = 7,
	eShaderFxType_Colorize  = 8,
	NUM_SHADER_FX_TYPES
} ShaderFxType;

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

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

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

	int type, mode;
	int stackindex;
	short flag;
	short pad;
	char name[64];  /* MAX_NAME */

	char *error;
} ShaderFxData;

/* Runtime temp data */
typedef struct ShaderFxData_runtime {
	struct DRWShadingGroup *fx_sh;
	struct DRWShadingGroup *fx_sh_b;
	struct DRWShadingGroup *fx_sh_c;
} ShaderFxData_runtime;

typedef struct BlurShaderFxData {
	ShaderFxData shaderfx;
	int radius[2];
	int flag;                    /* flags */
	int samples;                 /* number of samples */
	float coc;                   /* circle of confusion */
	int blur[2];                 /* not visible in rna */
	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;
	int flag;                    /* flags */
	char pad[4];
	ShaderFxData_runtime runtime;
} ColorizeShaderFxData;

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

typedef struct FlipShaderFxData {
	ShaderFxData shaderfx;
	int flag;                    /* flags */
	int flipmode;  /* internal, not visible in rna */
	ShaderFxData_runtime runtime;
} FlipShaderFxData;

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

typedef struct LightShaderFxData {
	ShaderFxData shaderfx;
	struct Object *object;
	int flag;                    /* flags */
	float energy;
	float ambient;
	float loc[4]; /* internal, not visible in rna */
	char pad[4];
	ShaderFxData_runtime runtime;
} LightShaderFxData;

typedef struct PixelShaderFxData {
	ShaderFxData shaderfx;
	int size[3];                 /* last element used for shader only */
	int flag;                    /* flags */
	float rgba[4];
	ShaderFxData_runtime runtime;
} PixelShaderFxData;

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

typedef struct RimShaderFxData {
	ShaderFxData shaderfx;
	int offset[2];
	int flag;                    /* flags */
	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 SwirlShaderFxData {
	ShaderFxData shaderfx;
	struct Object *object;
	int flag;                    /* flags */
	int radius;
	float angle;
	int transparent;  /* not visible in rna */
	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;
	int flag;                    /* flags */
	char pad[4];
	ShaderFxData_runtime runtime;
} WaveShaderFxData;
#endif  /* __DNA_SHADER_FX_TYPES_H__ */