tornavis/source/blender/makesdna/DNA_world_types.h

203 lines
5.4 KiB
C

/*
* ***** 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.
*
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
* All rights reserved.
*
* The Original Code is: all of this file.
*
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file DNA_world_types.h
* \ingroup DNA
*/
#ifndef __DNA_WORLD_TYPES_H__
#define __DNA_WORLD_TYPES_H__
#include "DNA_defs.h"
#include "DNA_ID.h"
struct AnimData;
struct bNodeTree;
struct Ipo;
struct MTex;
#ifndef MAX_MTEX
#define MAX_MTEX 18
#endif
/**
* World defines general modeling data such as a background fill,
* gravity, color model, stars, etc. It mixes game-data, rendering
* data and modeling data. */
typedef struct World {
ID id;
struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
short colormodel, totex;
short texact, mistype;
float horr, horg, horb;
float zenr, zeng, zenb;
float ambr, ambg, ambb;
float pad2;
unsigned int fastcol;
/**
* Exposure= mult factor. unused now, but maybe back later. Kept in to be upward compat.
* New is exp/range control. linfac & logfac are constants... don't belong in
* file, but allocating 8 bytes for temp mem isn't useful either.
*/
float exposure, exp, range;
float linfac, logfac;
/**
* Gravitation constant for the game world
*/
float gravity; // XXX moved to scene->gamedata in 2.5
/**
* Radius of the activity bubble, in Manhattan length. Objects
* outside the box are activity-culled. */
float activityBoxRadius; // XXX moved to scene->gamedata in 2.5
short skytype;
/**
* Some world modes
* bit 0: Do mist
* bit 1: Do stars
* bit 2: (reserved) depth of field
* bit 3: (gameengine): Activity culling is enabled.
* bit 4: ambient occlusion
* bit 5: (gameengine) : enable Bullet DBVT tree for view frustrum culling
*/
short mode; // partially moved to scene->gamedata in 2.5
short occlusionRes; /* resolution of occlusion Z buffer in pixel */ // XXX moved to scene->gamedata in 2.5
short physicsEngine; /* here it's aligned */ // XXX moved to scene->gamedata in 2.5
short ticrate, maxlogicstep, physubstep, maxphystep; // XXX moved to scene->gamedata in 2.5
float misi, miststa, mistdist, misthi;
float starr DNA_DEPRECATED, starg DNA_DEPRECATED, starb DNA_DEPRECATED, stark DNA_DEPRECATED; /* Deprecated */
float starsize, starmindist;
float stardist, starcolnoise;
/* unused now: DOF */
short dofsta, dofend, dofmin, dofmax;
/* ambient occlusion */
float aodist, aodistfac, aoenergy, aobias;
short aomode, aosamp, aomix, aocolor;
float ao_adapt_thresh, ao_adapt_speed_fac;
float ao_approx_error, ao_approx_correction;
float ao_indirect_energy, ao_env_energy, ao_pad2;
short ao_indirect_bounces, ao_pad;
short ao_samp_method, ao_gather_method, ao_approx_passes;
/* assorted settings (in the middle of ambient occlusion settings for padding reasons) */
short flag;
/* ambient occlusion (contd...) */
float *aosphere, *aotables;
struct Ipo *ipo DNA_DEPRECATED; /* old animation system, deprecated for 2.5 */
struct MTex *mtex[18]; /* MAX_MTEX */
short pr_texture, use_nodes, pad[2];
/* previews */
struct PreviewImage *preview;
/* nodes */
struct bNodeTree *nodetree;
} World;
/* **************** WORLD ********************* */
/* skytype */
#define WO_SKYBLEND 1
#define WO_SKYREAL 2
#define WO_SKYPAPER 4
/* while render: */
#define WO_SKYTEX 8
#define WO_ZENUP 16
/* mode */
#define WO_MIST 1
#define WO_STARS 2
/*#define WO_DOF 4*/
#define WO_ACTIVITY_CULLING 8
#define WO_ENV_LIGHT 16
#define WO_DBVT_CULLING 32
#define WO_AMB_OCC 64
#define WO_INDIRECT_LIGHT 128
/* aomix */
#define WO_AOADD 0
#define WO_AOSUB 1 /* deprecated */
#define WO_AOADDSUB 2 /* deprecated */
#define WO_AOMUL 3
/* ao_samp_method - methods for sampling the AO hemi */
#define WO_AOSAMP_CONSTANT 0
#define WO_AOSAMP_HALTON 1
#define WO_AOSAMP_HAMMERSLEY 2
/* aomode (use distances & random sampling modes) */
#define WO_AODIST 1
#define WO_AORNDSMP 2
#define WO_AOCACHE 4
/* aocolor */
#define WO_AOPLAIN 0
#define WO_AOSKYCOL 1
#define WO_AOSKYTEX 2
/* ao_gather_method */
#define WO_AOGATHER_RAYTRACE 0
#define WO_AOGATHER_APPROX 1
/* texco (also in DNA_material_types.h) */
#define TEXCO_ANGMAP 64
#define TEXCO_H_SPHEREMAP 256
#define TEXCO_H_TUBEMAP 1024
#define TEXCO_EQUIRECTMAP 2048
/* mapto */
#define WOMAP_BLEND 1
#define WOMAP_HORIZ 2
#define WOMAP_ZENUP 4
#define WOMAP_ZENDOWN 8
#define WOMAP_MIST 16 /* Deprecated */
/* flag */
#define WO_DS_EXPAND (1<<0)
/* NOTE: this must have the same value as MA_DS_SHOW_TEXS,
* otherwise anim-editors will not read correctly
*/
#define WO_DS_SHOW_TEXS (1<<2)
#endif