Cycles: svn merge -r41225:41232 ^/trunk/blender
[blender.git] / source / blender / makesdna / DNA_world_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  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27 #ifndef DNA_WORLD_TYPES_H
28 #define DNA_WORLD_TYPES_H
29
30 /** \file DNA_world_types.h
31  *  \ingroup DNA
32  */
33
34 #include "DNA_ID.h"
35
36 struct AnimData;
37 struct bNodeTree;
38 struct Ipo;
39 struct MTex;
40
41 #ifndef MAX_MTEX
42 #define MAX_MTEX        18
43 #endif
44
45
46 /**
47  * World defines general modeling data such as a background fill,
48  * gravity, color model, stars, etc. It mixes game-data, rendering
49  * data and modeling data. */
50 typedef struct World {
51         ID id;
52         struct AnimData *adt;   /* animation data (must be immediately after id for utilities to use it) */ 
53         
54         short colormodel, totex;
55         short texact, mistype;
56
57         float horr, horg, horb;
58         float zenr, zeng, zenb;
59         float ambr, ambg, ambb;
60         float pad2;
61
62         unsigned int fastcol;   
63         
64         /**
65          * Exposure= mult factor. unused now, but maybe back later. Kept in to be upward compat.
66          * New is exp/range control. linfac & logfac are constants... don't belong in
67          * file, but allocating 8 bytes for temp mem isnt useful either.
68          */
69         float exposure, exp, range;     
70         float linfac, logfac;
71
72         /**
73          * Gravitation constant for the game world
74          */
75         float gravity; // XXX moved to scene->gamedata in 2.5
76
77         /**
78          * Radius of the activity bubble, in Manhattan length. Objects
79          * outside the box are activity-culled. */
80         float activityBoxRadius; // XXX moved to scene->gamedata in 2.5
81         
82         short skytype;
83         /**
84          * Some world modes
85          * bit 0: Do mist
86          * bit 1: Do stars
87          * bit 2: (reserved) depth of field
88          * bit 3: (gameengine): Activity culling is enabled.
89          * bit 4: ambient occlusion
90          * bit 5: (gameengine) : enable Bullet DBVT tree for view frustrum culling 
91          */
92         short mode;                                                                                             // partially moved to scene->gamedata in 2.5
93         short occlusionRes;             /* resolution of occlusion Z buffer in pixel */ // XXX moved to scene->gamedata in 2.5
94         short physicsEngine;    /* here it's aligned */                                 // XXX moved to scene->gamedata in 2.5
95         short ticrate, maxlogicstep, physubstep, maxphystep;    // XXX moved to scene->gamedata in 2.5
96         
97         float misi, miststa, mistdist, misthi;
98         
99         float starr, starg, starb, stark;
100         float starsize, starmindist;
101         float stardist, starcolnoise;
102         
103         /* unused now: DOF */
104         short dofsta, dofend, dofmin, dofmax;
105         
106         /* ambient occlusion */
107         float aodist, aodistfac, aoenergy, aobias;
108         short aomode, aosamp, aomix, aocolor;
109         float ao_adapt_thresh, ao_adapt_speed_fac;
110         float ao_approx_error, ao_approx_correction;
111         float ao_indirect_energy, ao_env_energy, ao_pad2;
112         short ao_indirect_bounces, ao_pad;
113         short ao_samp_method, ao_gather_method, ao_approx_passes;
114         
115         /* assorted settings (in the middle of ambient occlusion settings for padding reasons) */
116         short flag;
117         
118         /* ambient occlusion (contd...) */
119         float *aosphere, *aotables;
120         
121         
122         struct Ipo *ipo;                        // XXX depreceated... old animation system
123         struct MTex *mtex[18];          /* MAX_MTEX */
124         short pr_texture, use_nodes, pad[2];
125
126         /* previews */
127         struct PreviewImage *preview;
128
129         /* nodes */
130         struct bNodeTree *nodetree;     
131
132 } World;
133
134 /* **************** WORLD ********************* */
135
136 /* skytype */
137 #define WO_SKYBLEND             1
138 #define WO_SKYREAL              2
139 #define WO_SKYPAPER             4
140 /* while render: */
141 #define WO_SKYTEX               8
142 #define WO_ZENUP                16
143
144 /* mode */
145 #define WO_MIST                1
146 #define WO_STARS               2
147 /*#define WO_DOF                 4*/
148 #define WO_ACTIVITY_CULLING        8
149 #define WO_ENV_LIGHT              16
150 #define WO_DBVT_CULLING           32
151 #define WO_AMB_OCC                64
152 #define WO_INDIRECT_LIGHT         128
153
154 /* aomix */
155 #define WO_AOADD        0
156 #define WO_AOSUB        1 /* deprecated */
157 #define WO_AOADDSUB     2 /* deprecated */
158 #define WO_AOMUL        3
159
160 /* ao_samp_method - methods for sampling the AO hemi */
161 #define WO_AOSAMP_CONSTANT                      0
162 #define WO_AOSAMP_HALTON                        1
163 #define WO_AOSAMP_HAMMERSLEY            2
164
165 /* aomode (use distances & random sampling modes) */
166 #define WO_AODIST               1
167 #define WO_AORNDSMP             2
168 #define WO_AOCACHE              4
169
170 /* aocolor */
171 #define WO_AOPLAIN      0
172 #define WO_AOSKYCOL     1
173 #define WO_AOSKYTEX     2
174
175 /* ao_gather_method */
176 #define WO_AOGATHER_RAYTRACE    0
177 #define WO_AOGATHER_APPROX              1
178
179 /* texco (also in DNA_material_types.h) */
180 #define TEXCO_ANGMAP    64
181 #define TEXCO_H_SPHEREMAP       256
182 #define TEXCO_H_TUBEMAP 1024
183
184 /* mapto */
185 #define WOMAP_BLEND             1
186 #define WOMAP_HORIZ             2
187 #define WOMAP_ZENUP             4
188 #define WOMAP_ZENDOWN   8
189 #define WOMAP_MIST              16
190
191 /* flag */
192 #define WO_DS_EXPAND    (1<<0)
193         /* NOTE: this must have the same value as MA_DS_SHOW_TEXS, 
194          * otherwise anim-editors will not read correctly
195          */
196 #define WO_DS_SHOW_TEXS (1<<2)
197
198 #endif
199