Merge branch 'master' into blender2.8
[blender.git] / source / blender / makesdna / DNA_lightprobe_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  * Contributor(s): Blender Foundation
19  *
20  * ***** END GPL LICENSE BLOCK *****
21  *
22  */
23
24 /** \file DNA_lightprobe_types.h
25  *  \ingroup DNA
26  */
27
28 #ifndef __DNA_LIGHTPROBE_TYPES_H__
29 #define __DNA_LIGHTPROBE_TYPES_H__
30
31 #include "DNA_defs.h"
32 #include "DNA_listBase.h"
33 #include "DNA_ID.h"
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 struct Object;
40 struct AnimData;
41
42 typedef struct LightProbe {
43         ID id;
44         struct AnimData *adt;           /* animation data (must be immediately after id for utilities to use it) */
45
46         char type;        /* For realtime probe objects */
47         char flag;        /* General purpose flags for probes */
48         char attenuation_type; /* Attenuation type */
49         char parallax_type;    /* Parallax type */
50
51         float distinf;    /* Influence Radius */
52         float distpar;    /* Parallax Radius */
53         float falloff;    /* Influence falloff */
54
55         float clipsta, clipend;
56
57         int grid_resolution_x;  /* Irradiance grid resolution */
58         int grid_resolution_y;
59         int grid_resolution_z;
60         int pad1;
61
62         struct Object *parallax_ob;    /* Object to use as a parallax origin */
63         struct Image *image;           /* Image to use on as lighting data */
64
65         float data_draw_size;
66
67         /* Runtime display data */
68         float distfalloff, distgridinf;
69         float pad;
70 } LightProbe;
71
72 /* Probe->type */
73 enum {
74         LIGHTPROBE_TYPE_CUBE      = 0,
75         LIGHTPROBE_TYPE_PLANAR    = 1,
76         LIGHTPROBE_TYPE_GRID      = 2,
77 };
78
79 /* Probe->flag */
80 enum {
81         LIGHTPROBE_FLAG_CUSTOM_PARALLAX = (1 << 0),
82         LIGHTPROBE_FLAG_SHOW_INFLUENCE  = (1 << 1),
83         LIGHTPROBE_FLAG_SHOW_PARALLAX   = (1 << 2),
84         LIGHTPROBE_FLAG_SHOW_CLIP_DIST  = (1 << 3),
85         LIGHTPROBE_FLAG_SHOW_DATA       = (1 << 4),
86 };
87
88 /* Probe->display */
89 enum {
90         LIGHTPROBE_DISP_WIRE         = 0,
91         LIGHTPROBE_DISP_SHADED       = 1,
92         LIGHTPROBE_DISP_DIFFUSE      = 2,
93         LIGHTPROBE_DISP_REFLECTIVE   = 3,
94 };
95
96 /* Probe->parallax && Probe->attenuation_type*/
97 enum {
98         LIGHTPROBE_SHAPE_ELIPSOID   = 0,
99         LIGHTPROBE_SHAPE_BOX        = 1,
100 };
101
102 #ifdef __cplusplus
103 }
104 #endif
105
106 #endif /* __DNA_LIGHTPROBE_TYPES_H__ */