Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonis Ryakiotakis <kalast@gmail.com>2022-01-19 03:01:56 +0300
committerAntonis Ryakiotakis <kalast@gmail.com>2022-01-19 03:01:56 +0300
commitb54ab323aaa4875a29b39e3b981c273446ff976f (patch)
tree2abf309d09df24465040d4ebecd490ace66efe9a /source/blender/makesdna/DNA_scene_types.h
parent4afb1899d943bbe7e932b43b659ad0a3801c9406 (diff)
parent5d7ac749c5f9246e1d33197ca97f697a24b8a039 (diff)
merge with master. It should build with option off, but cmake support/libs are not yet plugged in
Diffstat (limited to 'source/blender/makesdna/DNA_scene_types.h')
-rw-r--r--source/blender/makesdna/DNA_scene_types.h3864
1 files changed, 2168 insertions, 1696 deletions
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index c7d6c1bcd50..c45f69cde8f 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1,6 +1,4 @@
/*
- * ***** 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
@@ -17,304 +15,383 @@
*
* 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_scene_types.h
- * \ingroup DNA
+/** \file
+ * \ingroup DNA
*/
-#ifndef __DNA_SCENE_TYPES_H__
-#define __DNA_SCENE_TYPES_H__
+#pragma once
#include "DNA_defs.h"
-/* XXX, temp feature - campbell */
+/* XXX(campbell): temp feature. */
#define DURIAN_CAMERA_SWITCH
+/* check for cyclic set-scene,
+ * libs can cause this case which is normally prevented, see (T#####) */
+#define USE_SETSCENE_CHECK
+
+#include "DNA_ID.h"
+#include "DNA_color_types.h" /* color management */
+#include "DNA_customdata_types.h" /* Scene's runtime custom-data masks. */
+#include "DNA_layer_types.h"
+#include "DNA_listBase.h"
+#include "DNA_vec_types.h"
+#include "DNA_view3d_types.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-#include "DNA_color_types.h" /* color management */
-#include "DNA_vec_types.h"
-#include "DNA_listBase.h"
-#include "DNA_ID.h"
-#include "DNA_freestyle_types.h"
-#include "DNA_gpu_types.h"
-#include "DNA_userdef_types.h"
-
+struct AnimData;
+struct Brush;
+struct Collection;
+struct ColorSpace;
struct CurveMapping;
+struct CurveProfile;
+struct CustomData_MeshMasks;
+struct Editing;
+struct Image;
+struct MovieClip;
struct Object;
-struct Brush;
-struct World;
struct Scene;
-struct Image;
-struct Group;
-struct Text;
-struct bNodeTree;
-struct AnimData;
-struct Editing;
-struct SceneStats;
+struct SceneCollection;
+struct World;
struct bGPdata;
-struct MovieClip;
-struct ColorSpace;
+struct bNodeTree;
/* ************************************************************* */
/* Scene Data */
-/* Base - Wrapper for referencing Objects in a Scene */
-typedef struct Base {
- struct Base *next, *prev;
- unsigned int lay, selcol;
- int flag;
- short sx, sy;
- struct Object *object;
-} Base;
-
/* ************************************************************* */
/* Output Format Data */
typedef struct AviCodecData {
- void *lpFormat; /* save format */
- void *lpParms; /* compressor options */
- unsigned int cbFormat; /* size of lpFormat buffer */
- unsigned int cbParms; /* size of lpParms buffer */
-
- unsigned int fccType; /* stream type, for consistency */
- unsigned int fccHandler; /* compressor */
- unsigned int dwKeyFrameEvery; /* keyframe rate */
- unsigned int dwQuality; /* compress quality 0-10,000 */
- unsigned int dwBytesPerSecond; /* bytes per second */
- unsigned int dwFlags; /* flags... see below */
- unsigned int dwInterleaveEvery; /* for non-video streams only */
- unsigned int pad;
-
- char avicodecname[128];
+ /** Save format. */
+ void *lpFormat;
+ /** Compressor options. */
+ void *lpParms;
+ /** Size of lpFormat buffer. */
+ unsigned int cbFormat;
+ /** Size of lpParms buffer. */
+ unsigned int cbParms;
+
+ /** Stream type, for consistency. */
+ unsigned int fccType;
+ /** Compressor. */
+ unsigned int fccHandler;
+ /** Keyframe rate. */
+ unsigned int dwKeyFrameEvery;
+ /** Compress quality 0-10,000. */
+ unsigned int dwQuality;
+ /** Bytes per second. */
+ unsigned int dwBytesPerSecond;
+ /** Flags... see below. */
+ unsigned int dwFlags;
+ /** For non-video streams only. */
+ unsigned int dwInterleaveEvery;
+ char _pad[4];
+
+ char avicodecname[128];
} AviCodecData;
-typedef struct QuicktimeCodecData {
- /*Old quicktime implementation compatibility fields, read only in 2.5 - deprecated*/
- void *cdParms; /* codec/compressor options */
- void *pad; /* padding */
-
- unsigned int cdSize; /* size of cdParms buffer */
- unsigned int pad2; /* padding */
-
- char qtcodecname[128];
-} QuicktimeCodecData;
-
-typedef struct QuicktimeCodecSettings {
- /* Codec settings detailed for 2.5 implementation*/
- int codecType; /* Types defined in quicktime_export.h */
- int codecSpatialQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
-
- /* Settings not available in current QTKit API */
- int codec;
- int codecFlags;
- int colorDepth;
- int codecTemporalQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
- int minSpatialQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
- int minTemporalQuality; /* in 0-100 scale, to be translated in 0-1024 for qt use */
- int keyFrameRate;
- int bitRate; /* bitrate in bps */
-
- /* Audio Codec settings */
- int audiocodecType;
- int audioSampleRate;
- short audioBitDepth;
- short audioChannels;
- int audioCodecFlags;
- int audioBitRate;
- int pad1;
-} QuicktimeCodecSettings;
+typedef enum eFFMpegPreset {
+ FFM_PRESET_NONE = 0,
+
+#ifdef DNA_DEPRECATED_ALLOW
+ /* Previously used by h.264 to control encoding speed vs. file size. */
+ FFM_PRESET_ULTRAFAST = 1, /* DEPRECATED */
+ FFM_PRESET_SUPERFAST = 2, /* DEPRECATED */
+ FFM_PRESET_VERYFAST = 3, /* DEPRECATED */
+ FFM_PRESET_FASTER = 4, /* DEPRECATED */
+ FFM_PRESET_FAST = 5, /* DEPRECATED */
+ FFM_PRESET_MEDIUM = 6, /* DEPRECATED */
+ FFM_PRESET_SLOW = 7, /* DEPRECATED */
+ FFM_PRESET_SLOWER = 8, /* DEPRECATED */
+ FFM_PRESET_VERYSLOW = 9, /* DEPRECATED */
+#endif
+
+ /* Used by WEBM/VP9 and h.264 to control encoding speed vs. file size.
+ * WEBM/VP9 use these values directly, whereas h.264 map those to
+ * respectively the MEDIUM, SLOWER, and SUPERFAST presets.
+ */
+ /** the default and recommended for most applications */
+ FFM_PRESET_GOOD = 10,
+ /** recommended if you have lots of time and want the best compression efficiency */
+ FFM_PRESET_BEST = 11,
+ /** recommended for live / fast encoding */
+ FFM_PRESET_REALTIME = 12,
+} eFFMpegPreset;
+
+/* Mapping from easily-understandable descriptions to CRF values.
+ * Assumes we output 8-bit video. Needs to be remapped if 10-bit
+ * is output.
+ * We use a slightly wider than "subjectively sane range" according
+ * to https://trac.ffmpeg.org/wiki/Encode/H.264#a1.ChooseaCRFvalue
+ */
+typedef enum eFFMpegCrf {
+ FFM_CRF_NONE = -1,
+ FFM_CRF_LOSSLESS = 0,
+ FFM_CRF_PERC_LOSSLESS = 17,
+ FFM_CRF_HIGH = 20,
+ FFM_CRF_MEDIUM = 23,
+ FFM_CRF_LOW = 26,
+ FFM_CRF_VERYLOW = 29,
+ FFM_CRF_LOWEST = 32,
+} eFFMpegCrf;
+
+typedef enum eFFMpegAudioChannels {
+ FFM_CHANNELS_MONO = 1,
+ FFM_CHANNELS_STEREO = 2,
+ FFM_CHANNELS_SURROUND4 = 4,
+ FFM_CHANNELS_SURROUND51 = 6,
+ FFM_CHANNELS_SURROUND71 = 8,
+} eFFMpegAudioChannels;
typedef struct FFMpegCodecData {
- int type;
- int codec;
- int audio_codec;
- int video_bitrate;
- int audio_bitrate;
- int audio_mixrate;
- int audio_channels;
- int audio_pad;
- float audio_volume;
- int gop_size;
- int flags;
-
- int rc_min_rate;
- int rc_max_rate;
- int rc_buffer_size;
- int mux_packet_size;
- int mux_rate;
- IDProperty *properties;
+ int type;
+ int codec;
+ int audio_codec;
+ int video_bitrate;
+ int audio_bitrate;
+ int audio_mixrate;
+ int audio_channels;
+ char _pad0[4];
+ float audio_volume;
+ int gop_size;
+ /** Only used if FFMPEG_USE_MAX_B_FRAMES flag is set. */
+ int max_b_frames;
+ int flags;
+ int constant_rate_factor;
+ /** See eFFMpegPreset. */
+ int ffmpeg_preset;
+
+ int rc_min_rate;
+ int rc_max_rate;
+ int rc_buffer_size;
+ int mux_packet_size;
+ int mux_rate;
+ char _pad1[4];
+
+ IDProperty *properties;
} FFMpegCodecData;
/* ************************************************************* */
/* Audio */
typedef struct AudioData {
- int mixrate; // 2.5: now in FFMpegCodecData: audio_mixrate
- float main; // 2.5: now in FFMpegCodecData: audio_volume
- float speed_of_sound;
- float doppler_factor;
- int distance_model;
- short flag;
- short pad;
- float volume;
- float pad2;
+ int mixrate; /* 2.5: now in FFMpegCodecData: audio_mixrate */
+ float main; /* 2.5: now in FFMpegCodecData: audio_volume */
+ float speed_of_sound;
+ float doppler_factor;
+ int distance_model;
+ short flag;
+ char _pad[2];
+ float volume;
+ char _pad2[4];
} AudioData;
/* *************************************************************** */
/* Render Layers */
-/* Render Layer */
+/** Render Layer. */
typedef struct SceneRenderLayer {
- struct SceneRenderLayer *next, *prev;
-
- char name[64]; /* MAX_NAME */
-
- struct Material *mat_override;
- struct Group *light_override;
-
- unsigned int lay; /* scene->lay itself has priority over this */
- unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */
- unsigned int lay_exclude; /* not used by internal, exclude */
- int layflag;
-
- int passflag; /* pass_xor has to be after passflag */
- int pass_xor;
-
- int samples;
- float pass_alpha_threshold;
-
- struct FreestyleConfig freestyleConfig;
+ struct SceneRenderLayer *next, *prev;
+
+ /** MAX_NAME. */
+ char name[64] DNA_DEPRECATED;
+
+ /** Converted to ViewLayer setting. */
+ struct Material *mat_override DNA_DEPRECATED;
+
+ /** Converted to LayerCollection cycles camera visibility override. */
+ unsigned int lay DNA_DEPRECATED;
+ /** Converted to LayerCollection cycles holdout override. */
+ unsigned int lay_zmask DNA_DEPRECATED;
+ unsigned int lay_exclude DNA_DEPRECATED;
+ /** Converted to ViewLayer layflag and flag. */
+ int layflag DNA_DEPRECATED;
+
+ /* pass_xor has to be after passflag */
+ /** Pass_xor has to be after passflag. */
+ int passflag DNA_DEPRECATED;
+ /** Converted to ViewLayer passflag and flag. */
+ int pass_xor DNA_DEPRECATED;
+
+ /** Converted to ViewLayer setting. */
+ int samples DNA_DEPRECATED;
+ /** Converted to ViewLayer pass_alpha_threshold. */
+ float pass_alpha_threshold DNA_DEPRECATED;
+
+ /** Converted to ViewLayer id_properties. */
+ IDProperty *prop DNA_DEPRECATED;
+
+ /** Converted to ViewLayer freestyleConfig. */
+ struct FreestyleConfig freestyleConfig DNA_DEPRECATED;
} SceneRenderLayer;
-/* srl->layflag */
-#define SCE_LAY_SOLID 1
-#define SCE_LAY_ZTRA 2
-#define SCE_LAY_HALO 4
-#define SCE_LAY_EDGE 8
-#define SCE_LAY_SKY 16
-#define SCE_LAY_STRAND 32
-#define SCE_LAY_FRS 64
- /* flags between 128 and 0x8000 are set to 1 already, for future options */
-
-#define SCE_LAY_ALL_Z 0x8000
-#define SCE_LAY_XOR 0x10000
-#define SCE_LAY_DISABLE 0x20000
-#define SCE_LAY_ZMASK 0x40000
-#define SCE_LAY_NEG_ZMASK 0x80000
-
-/* srl->passflag */
-typedef enum ScenePassType {
- SCE_PASS_COMBINED = (1 << 0),
- SCE_PASS_Z = (1 << 1),
- SCE_PASS_RGBA = (1 << 2),
- SCE_PASS_DIFFUSE = (1 << 3),
- SCE_PASS_SPEC = (1 << 4),
- SCE_PASS_SHADOW = (1 << 5),
- SCE_PASS_AO = (1 << 6),
- SCE_PASS_REFLECT = (1 << 7),
- SCE_PASS_NORMAL = (1 << 8),
- SCE_PASS_VECTOR = (1 << 9),
- SCE_PASS_REFRACT = (1 << 10),
- SCE_PASS_INDEXOB = (1 << 11),
- SCE_PASS_UV = (1 << 12),
- SCE_PASS_INDIRECT = (1 << 13),
- SCE_PASS_MIST = (1 << 14),
- SCE_PASS_RAYHITS = (1 << 15),
- SCE_PASS_EMIT = (1 << 16),
- SCE_PASS_ENVIRONMENT = (1 << 17),
- SCE_PASS_INDEXMA = (1 << 18),
- SCE_PASS_DIFFUSE_DIRECT = (1 << 19),
- SCE_PASS_DIFFUSE_INDIRECT = (1 << 20),
- SCE_PASS_DIFFUSE_COLOR = (1 << 21),
- SCE_PASS_GLOSSY_DIRECT = (1 << 22),
- SCE_PASS_GLOSSY_INDIRECT = (1 << 23),
- SCE_PASS_GLOSSY_COLOR = (1 << 24),
- SCE_PASS_TRANSM_DIRECT = (1 << 25),
- SCE_PASS_TRANSM_INDIRECT = (1 << 26),
- SCE_PASS_TRANSM_COLOR = (1 << 27),
- SCE_PASS_SUBSURFACE_DIRECT = (1 << 28),
- SCE_PASS_SUBSURFACE_INDIRECT = (1 << 29),
- SCE_PASS_SUBSURFACE_COLOR = (1 << 30),
- SCE_PASS_DEBUG = (1 << 31), /* This is a virtual pass. */
-} ScenePassType;
-
-/* note, srl->passflag is treestore element 'nr' in outliner, short still... */
-
-/* View - MultiView */
+/** #SceneRenderLayer.layflag */
+#define SCE_LAY_SOLID (1 << 0)
+#define SCE_LAY_UNUSED_1 (1 << 1)
+#define SCE_LAY_UNUSED_2 (1 << 2)
+#define SCE_LAY_UNUSED_3 (1 << 3)
+#define SCE_LAY_SKY (1 << 4)
+#define SCE_LAY_STRAND (1 << 5)
+#define SCE_LAY_FRS (1 << 6)
+#define SCE_LAY_AO (1 << 7)
+#define SCE_LAY_VOLUMES (1 << 8)
+#define SCE_LAY_MOTION_BLUR (1 << 9)
+
+/* Flags between (1 << 9) and (1 << 15) are set to 1 already, for future options. */
+#define SCE_LAY_FLAG_DEFAULT ((1 << 15) - 1)
+
+#define SCE_LAY_UNUSED_4 (1 << 15)
+#define SCE_LAY_UNUSED_5 (1 << 16)
+#define SCE_LAY_DISABLE (1 << 17)
+#define SCE_LAY_UNUSED_6 (1 << 18)
+#define SCE_LAY_UNUSED_7 (1 << 19)
+
+/** #SceneRenderLayer.passflag */
+typedef enum eScenePassType {
+ SCE_PASS_COMBINED = (1 << 0),
+ SCE_PASS_Z = (1 << 1),
+ SCE_PASS_UNUSED_1 = (1 << 2), /* RGBA */
+ SCE_PASS_UNUSED_2 = (1 << 3), /* DIFFUSE */
+ SCE_PASS_UNUSED_3 = (1 << 4), /* SPEC */
+ SCE_PASS_SHADOW = (1 << 5),
+ SCE_PASS_AO = (1 << 6),
+ SCE_PASS_POSITION = (1 << 7),
+ SCE_PASS_NORMAL = (1 << 8),
+ SCE_PASS_VECTOR = (1 << 9),
+ SCE_PASS_UNUSED_5 = (1 << 10), /* REFRACT */
+ SCE_PASS_INDEXOB = (1 << 11),
+ SCE_PASS_UV = (1 << 12),
+ SCE_PASS_UNUSED_6 = (1 << 13), /* INDIRECT */
+ SCE_PASS_MIST = (1 << 14),
+ SCE_PASS_UNUSED_7 = (1 << 15), /* RAYHITS */
+ SCE_PASS_EMIT = (1 << 16),
+ SCE_PASS_ENVIRONMENT = (1 << 17),
+ SCE_PASS_INDEXMA = (1 << 18),
+ SCE_PASS_DIFFUSE_DIRECT = (1 << 19),
+ SCE_PASS_DIFFUSE_INDIRECT = (1 << 20),
+ SCE_PASS_DIFFUSE_COLOR = (1 << 21),
+ SCE_PASS_GLOSSY_DIRECT = (1 << 22),
+ SCE_PASS_GLOSSY_INDIRECT = (1 << 23),
+ SCE_PASS_GLOSSY_COLOR = (1 << 24),
+ SCE_PASS_TRANSM_DIRECT = (1 << 25),
+ SCE_PASS_TRANSM_INDIRECT = (1 << 26),
+ SCE_PASS_TRANSM_COLOR = (1 << 27),
+ SCE_PASS_SUBSURFACE_DIRECT = (1 << 28),
+ SCE_PASS_SUBSURFACE_INDIRECT = (1 << 29),
+ SCE_PASS_SUBSURFACE_COLOR = (1 << 30),
+ SCE_PASS_ROUGHNESS = (1u << 31u),
+} eScenePassType;
+
+#define RE_PASSNAME_DEPRECATED "Deprecated"
+
+#define RE_PASSNAME_COMBINED "Combined"
+#define RE_PASSNAME_Z "Depth"
+#define RE_PASSNAME_VECTOR "Vector"
+#define RE_PASSNAME_POSITION "Position"
+#define RE_PASSNAME_NORMAL "Normal"
+#define RE_PASSNAME_UV "UV"
+#define RE_PASSNAME_EMIT "Emit"
+#define RE_PASSNAME_SHADOW "Shadow"
+
+#define RE_PASSNAME_AO "AO"
+#define RE_PASSNAME_ENVIRONMENT "Env"
+#define RE_PASSNAME_INDEXOB "IndexOB"
+#define RE_PASSNAME_INDEXMA "IndexMA"
+#define RE_PASSNAME_MIST "Mist"
+
+#define RE_PASSNAME_DIFFUSE_DIRECT "DiffDir"
+#define RE_PASSNAME_DIFFUSE_INDIRECT "DiffInd"
+#define RE_PASSNAME_DIFFUSE_COLOR "DiffCol"
+#define RE_PASSNAME_GLOSSY_DIRECT "GlossDir"
+#define RE_PASSNAME_GLOSSY_INDIRECT "GlossInd"
+#define RE_PASSNAME_GLOSSY_COLOR "GlossCol"
+#define RE_PASSNAME_TRANSM_DIRECT "TransDir"
+#define RE_PASSNAME_TRANSM_INDIRECT "TransInd"
+#define RE_PASSNAME_TRANSM_COLOR "TransCol"
+
+#define RE_PASSNAME_SUBSURFACE_DIRECT "SubsurfaceDir"
+#define RE_PASSNAME_SUBSURFACE_INDIRECT "SubsurfaceInd"
+#define RE_PASSNAME_SUBSURFACE_COLOR "SubsurfaceCol"
+
+#define RE_PASSNAME_FREESTYLE "Freestyle"
+#define RE_PASSNAME_BLOOM "BloomCol"
+#define RE_PASSNAME_VOLUME_LIGHT "VolumeDir"
+
+/** View - MultiView. */
typedef struct SceneRenderView {
- struct SceneRenderView *next, *prev;
+ struct SceneRenderView *next, *prev;
- char name[64]; /* MAX_NAME */
- char suffix[64]; /* MAX_NAME */
+ /** MAX_NAME. */
+ char name[64];
+ /** MAX_NAME. */
+ char suffix[64];
- int viewflag;
- int pad[2];
- char pad2[4];
+ int viewflag;
+ char _pad2[4];
} SceneRenderView;
-/* srv->viewflag */
-#define SCE_VIEW_DISABLE (1<<0)
+/** #SceneRenderView.viewflag */
+#define SCE_VIEW_DISABLE (1 << 0)
-/* scene.render.views_format */
+/** #RenderData.views_format */
enum {
- SCE_VIEWS_FORMAT_STEREO_3D = 0,
- SCE_VIEWS_FORMAT_MULTIVIEW = 1,
+ SCE_VIEWS_FORMAT_STEREO_3D = 0,
+ SCE_VIEWS_FORMAT_MULTIVIEW = 1,
};
-/* ImageFormatData.views_output */
+/** #ImageFormatData.views_format (also used for #Sequence.views_format) */
enum {
- R_IMF_VIEWS_INDIVIDUAL = 0,
- R_IMF_VIEWS_STEREO_3D = 1,
- R_IMF_VIEWS_MULTIVIEW = 2,
+ R_IMF_VIEWS_INDIVIDUAL = 0,
+ R_IMF_VIEWS_STEREO_3D = 1,
+ R_IMF_VIEWS_MULTIVIEW = 2,
};
typedef struct Stereo3dFormat {
- short flag;
- char display_mode; /* encoding mode */
- char anaglyph_type; /* anaglyph scheme for the user display */
- char interlace_type; /* interlace type for the user display */
- char pad[3];
+ short flag;
+ /** Encoding mode. */
+ char display_mode;
+ /** Anaglyph scheme for the user display. */
+ char anaglyph_type;
+ /** Interlace type for the user display. */
+ char interlace_type;
+ char _pad[3];
} Stereo3dFormat;
-/* Stereo3dFormat.display_mode */
+/** #Stereo3dFormat.display_mode */
typedef enum eStereoDisplayMode {
- S3D_DISPLAY_ANAGLYPH = 0,
- S3D_DISPLAY_INTERLACE = 1,
- S3D_DISPLAY_PAGEFLIP = 2,
- S3D_DISPLAY_SIDEBYSIDE = 3,
- S3D_DISPLAY_TOPBOTTOM = 4,
+ S3D_DISPLAY_ANAGLYPH = 0,
+ S3D_DISPLAY_INTERLACE = 1,
+ S3D_DISPLAY_PAGEFLIP = 2,
+ S3D_DISPLAY_SIDEBYSIDE = 3,
+ S3D_DISPLAY_TOPBOTTOM = 4,
} eStereoDisplayMode;
-/* Stereo3dFormat.flag */
+/** #Stereo3dFormat.flag */
typedef enum eStereo3dFlag {
- S3D_INTERLACE_SWAP = (1 << 0),
- S3D_SIDEBYSIDE_CROSSEYED = (1 << 1),
- S3D_SQUEEZED_FRAME = (1 << 2),
+ S3D_INTERLACE_SWAP = (1 << 0),
+ S3D_SIDEBYSIDE_CROSSEYED = (1 << 1),
+ S3D_SQUEEZED_FRAME = (1 << 2),
} eStereo3dFlag;
-/* Stereo3dFormat.anaglyph_type */
+/** #Stereo3dFormat.anaglyph_type */
typedef enum eStereo3dAnaglyphType {
- S3D_ANAGLYPH_REDCYAN = 0,
- S3D_ANAGLYPH_GREENMAGENTA = 1,
- S3D_ANAGLYPH_YELLOWBLUE = 2,
+ S3D_ANAGLYPH_REDCYAN = 0,
+ S3D_ANAGLYPH_GREENMAGENTA = 1,
+ S3D_ANAGLYPH_YELLOWBLUE = 2,
} eStereo3dAnaglyphType;
-/* Stereo3dFormat.interlace_type */
+/** #Stereo3dFormat.interlace_type */
typedef enum eStereo3dInterlaceType {
- S3D_INTERLACE_ROW = 0,
- S3D_INTERLACE_COLUMN = 1,
- S3D_INTERLACE_CHECKERBOARD = 2,
+ S3D_INTERLACE_ROW = 0,
+ S3D_INTERLACE_COLUMN = 1,
+ S3D_INTERLACE_CHECKERBOARD = 2,
} eStereo3dInterlaceType;
/* *************************************************************** */
@@ -322,578 +399,439 @@ typedef enum eStereo3dInterlaceType {
/* Generic image format settings,
* this is used for NodeImageFile and IMAGE_OT_save_as operator too.
*
- * note: its a bit strange that even though this is an image format struct
- * the imtype can still be used to select video formats.
- * RNA ensures these enum's are only selectable for render output.
+ * NOTE: its a bit strange that even though this is an image format struct
+ * the imtype can still be used to select video formats.
+ * RNA ensures these enum's are only selectable for render output.
*/
typedef struct ImageFormatData {
- char imtype; /* R_IMF_IMTYPE_PNG, R_... */
- /* note, video types should only ever be set from this
- * structure when used from RenderData */
- char depth; /* bits per channel, R_IMF_CHAN_DEPTH_8 -> 32,
- * not a flag, only set 1 at a time */
-
- char planes; /* - R_IMF_PLANES_BW, R_IMF_PLANES_RGB, R_IMF_PLANES_RGBA */
- char flag; /* generic options for all image types, alpha zbuffer */
-
- char quality; /* (0 - 100), eg: jpeg quality */
- char compress; /* (0 - 100), eg: png compression */
-
-
- /* --- format specific --- */
-
- /* OpenEXR */
- char exr_codec;
-
- /* Cineon */
- char cineon_flag;
- short cineon_white, cineon_black;
- float cineon_gamma;
-
- /* Jpeg2000 */
- char jp2_flag;
- char jp2_codec;
-
- char pad[5];
-
- /* Multiview */
- char views_format;
- Stereo3dFormat stereo3d_format;
-
- /* color management */
- ColorManagedViewSettings view_settings;
- ColorManagedDisplaySettings display_settings;
+ /**
+ * R_IMF_IMTYPE_PNG, R_...
+ * \note Video types should only ever be set from this structure when used from #RenderData.
+ */
+ char imtype;
+ /**
+ * bits per channel, R_IMF_CHAN_DEPTH_8 -> 32,
+ * not a flag, only set 1 at a time. */
+ char depth;
+
+ /** R_IMF_PLANES_BW, R_IMF_PLANES_RGB, R_IMF_PLANES_RGBA. */
+ char planes;
+ /** Generic options for all image types, alpha zbuffer. */
+ char flag;
+
+ /** (0 - 100), eg: jpeg quality. */
+ char quality;
+ /** (0 - 100), eg: png compression. */
+ char compress;
+
+ /* --- format specific --- */
+
+ /* OpenEXR */
+ char exr_codec;
+
+ /* Cineon */
+ char cineon_flag;
+ short cineon_white, cineon_black;
+ float cineon_gamma;
+
+ /* Jpeg2000 */
+ char jp2_flag;
+ char jp2_codec;
+
+ /* TIFF */
+ char tiff_codec;
+
+ char _pad[4];
+
+ /* Multiview */
+ char views_format;
+ Stereo3dFormat stereo3d_format;
+
+ /* color management */
+ ColorManagedViewSettings view_settings;
+ ColorManagedDisplaySettings display_settings;
} ImageFormatData;
-
-/* ImageFormatData.imtype */
-#define R_IMF_IMTYPE_TARGA 0
-#define R_IMF_IMTYPE_IRIS 1
-/* #define R_HAMX 2 */ /* hamx is nomore */
-/* #define R_FTYPE 3 */ /* ftype is nomore */
-#define R_IMF_IMTYPE_JPEG90 4
-/* #define R_MOVIE 5 */ /* movie is nomore */
-#define R_IMF_IMTYPE_IRIZ 7
-#define R_IMF_IMTYPE_RAWTGA 14
-#define R_IMF_IMTYPE_AVIRAW 15
-#define R_IMF_IMTYPE_AVIJPEG 16
-#define R_IMF_IMTYPE_PNG 17
-/* #define R_IMF_IMTYPE_AVICODEC 18 */ /* avicodec is nomore */
-#define R_IMF_IMTYPE_QUICKTIME 19
-#define R_IMF_IMTYPE_BMP 20
-#define R_IMF_IMTYPE_RADHDR 21
-#define R_IMF_IMTYPE_TIFF 22
-#define R_IMF_IMTYPE_OPENEXR 23
-#define R_IMF_IMTYPE_FFMPEG 24
-#define R_IMF_IMTYPE_FRAMESERVER 25
-#define R_IMF_IMTYPE_CINEON 26
-#define R_IMF_IMTYPE_DPX 27
-#define R_IMF_IMTYPE_MULTILAYER 28
-#define R_IMF_IMTYPE_DDS 29
-#define R_IMF_IMTYPE_JP2 30
-#define R_IMF_IMTYPE_H264 31
-#define R_IMF_IMTYPE_XVID 32
-#define R_IMF_IMTYPE_THEORA 33
-#define R_IMF_IMTYPE_PSD 34
-#define R_IMF_IMTYPE_KTX 35
-
-#define R_IMF_IMTYPE_INVALID 255
-
-/* ImageFormatData.flag */
-#define R_IMF_FLAG_ZBUF (1<<0) /* was R_OPENEXR_ZBUF */
-#define R_IMF_FLAG_PREVIEW_JPG (1<<1) /* was R_PREVIEW_JPG */
-
-/* return values from BKE_imtype_valid_depths, note this is depts per channel */
-#define R_IMF_CHAN_DEPTH_1 (1<<0) /* 1bits (unused) */
-#define R_IMF_CHAN_DEPTH_8 (1<<1) /* 8bits (default) */
-#define R_IMF_CHAN_DEPTH_10 (1<<2) /* 10bits (uncommon, Cineon/DPX support) */
-#define R_IMF_CHAN_DEPTH_12 (1<<3) /* 12bits (uncommon, jp2/DPX support) */
-#define R_IMF_CHAN_DEPTH_16 (1<<4) /* 16bits (tiff, halff float exr) */
-#define R_IMF_CHAN_DEPTH_24 (1<<5) /* 24bits (unused) */
-#define R_IMF_CHAN_DEPTH_32 (1<<6) /* 32bits (full float exr) */
-
-/* ImageFormatData.planes */
-#define R_IMF_PLANES_RGB 24
-#define R_IMF_PLANES_RGBA 32
-#define R_IMF_PLANES_BW 8
-
-/* ImageFormatData.exr_codec */
-#define R_IMF_EXR_CODEC_NONE 0
+/** #ImageFormatData.imtype */
+#define R_IMF_IMTYPE_TARGA 0
+#define R_IMF_IMTYPE_IRIS 1
+/* #define R_HAMX 2 */ /* DEPRECATED */
+/* #define R_FTYPE 3 */ /* DEPRECATED */
+#define R_IMF_IMTYPE_JPEG90 4
+/* #define R_MOVIE 5 */ /* DEPRECATED */
+#define R_IMF_IMTYPE_IRIZ 7
+#define R_IMF_IMTYPE_RAWTGA 14
+#define R_IMF_IMTYPE_AVIRAW 15
+#define R_IMF_IMTYPE_AVIJPEG 16
+#define R_IMF_IMTYPE_PNG 17
+/* #define R_IMF_IMTYPE_AVICODEC 18 */ /* DEPRECATED */
+/* #define R_IMF_IMTYPE_QUICKTIME 19 */ /* DEPRECATED */
+#define R_IMF_IMTYPE_BMP 20
+#define R_IMF_IMTYPE_RADHDR 21
+#define R_IMF_IMTYPE_TIFF 22
+#define R_IMF_IMTYPE_OPENEXR 23
+#define R_IMF_IMTYPE_FFMPEG 24
+/* #define R_IMF_IMTYPE_FRAMESERVER 25 */ /* DEPRECATED */
+#define R_IMF_IMTYPE_CINEON 26
+#define R_IMF_IMTYPE_DPX 27
+#define R_IMF_IMTYPE_MULTILAYER 28
+#define R_IMF_IMTYPE_DDS 29
+#define R_IMF_IMTYPE_JP2 30
+#define R_IMF_IMTYPE_H264 31
+#define R_IMF_IMTYPE_XVID 32
+#define R_IMF_IMTYPE_THEORA 33
+#define R_IMF_IMTYPE_PSD 34
+#define R_IMF_IMTYPE_KTX 35
+
+#define R_IMF_IMTYPE_INVALID 255
+
+/** #ImageFormatData.flag */
+#define R_IMF_FLAG_ZBUF (1 << 0) /* was R_OPENEXR_ZBUF */
+#define R_IMF_FLAG_PREVIEW_JPG (1 << 1) /* was R_PREVIEW_JPG */
+
+/* Return values from #BKE_imtype_valid_depths, note this is depths per channel. */
+/** #ImageFormatData.depth */
+typedef enum eImageFormatDepth {
+ /* 1bits (unused) */
+ R_IMF_CHAN_DEPTH_1 = (1 << 0),
+ /* 8bits (default) */
+ R_IMF_CHAN_DEPTH_8 = (1 << 1),
+ /* 10bits (uncommon, Cineon/DPX support) */
+ R_IMF_CHAN_DEPTH_10 = (1 << 2),
+ /* 12bits (uncommon, jp2/DPX support) */
+ R_IMF_CHAN_DEPTH_12 = (1 << 3),
+ /* 16bits (tiff, half float exr) */
+ R_IMF_CHAN_DEPTH_16 = (1 << 4),
+ /* 24bits (unused) */
+ R_IMF_CHAN_DEPTH_24 = (1 << 5),
+ /* 32bits (full float exr) */
+ R_IMF_CHAN_DEPTH_32 = (1 << 6),
+} eImageFormatDepth;
+
+/** #ImageFormatData.planes */
+#define R_IMF_PLANES_RGB 24
+#define R_IMF_PLANES_RGBA 32
+#define R_IMF_PLANES_BW 8
+
+/** #ImageFormatData.exr_codec */
+#define R_IMF_EXR_CODEC_NONE 0
#define R_IMF_EXR_CODEC_PXR24 1
-#define R_IMF_EXR_CODEC_ZIP 2
-#define R_IMF_EXR_CODEC_PIZ 3
-#define R_IMF_EXR_CODEC_RLE 4
-#define R_IMF_EXR_CODEC_ZIPS 5
-#define R_IMF_EXR_CODEC_B44 6
-#define R_IMF_EXR_CODEC_B44A 7
-#define R_IMF_EXR_CODEC_DWAA 8
-#define R_IMF_EXR_CODEC_DWAB 9
-#define R_IMF_EXR_CODEC_MAX 10
-
-/* ImageFormatData.jp2_flag */
-#define R_IMF_JP2_FLAG_YCC (1<<0) /* when disabled use RGB */ /* was R_JPEG2K_YCC */
-#define R_IMF_JP2_FLAG_CINE_PRESET (1<<1) /* was R_JPEG2K_CINE_PRESET */
-#define R_IMF_JP2_FLAG_CINE_48 (1<<2) /* was R_JPEG2K_CINE_48FPS */
-
-/* ImageFormatData.jp2_codec */
-#define R_IMF_JP2_CODEC_JP2 0
-#define R_IMF_JP2_CODEC_J2K 1
-
-/* ImageFormatData.cineon_flag */
-#define R_IMF_CINEON_FLAG_LOG (1<<0) /* was R_CINEON_LOG */
+#define R_IMF_EXR_CODEC_ZIP 2
+#define R_IMF_EXR_CODEC_PIZ 3
+#define R_IMF_EXR_CODEC_RLE 4
+#define R_IMF_EXR_CODEC_ZIPS 5
+#define R_IMF_EXR_CODEC_B44 6
+#define R_IMF_EXR_CODEC_B44A 7
+#define R_IMF_EXR_CODEC_DWAA 8
+#define R_IMF_EXR_CODEC_DWAB 9
+#define R_IMF_EXR_CODEC_MAX 10
+
+/** #ImageFormatData.jp2_flag */
+#define R_IMF_JP2_FLAG_YCC (1 << 0) /* when disabled use RGB */ /* was R_JPEG2K_YCC */
+#define R_IMF_JP2_FLAG_CINE_PRESET (1 << 1) /* was R_JPEG2K_CINE_PRESET */
+#define R_IMF_JP2_FLAG_CINE_48 (1 << 2) /* was R_JPEG2K_CINE_48FPS */
+
+/** #ImageFormatData.jp2_codec */
+#define R_IMF_JP2_CODEC_JP2 0
+#define R_IMF_JP2_CODEC_J2K 1
+
+/** #ImageFormatData.cineon_flag */
+#define R_IMF_CINEON_FLAG_LOG (1 << 0) /* was R_CINEON_LOG */
+
+/** #ImageFormatData.tiff_codec */
+enum {
+ R_IMF_TIFF_CODEC_DEFLATE = 0,
+ R_IMF_TIFF_CODEC_LZW = 1,
+ R_IMF_TIFF_CODEC_PACKBITS = 2,
+ R_IMF_TIFF_CODEC_NONE = 3,
+};
typedef struct BakeData {
- struct ImageFormatData im_format;
+ struct ImageFormatData im_format;
- char filepath[1024]; /* FILE_MAX */
+ /** FILE_MAX. */
+ char filepath[1024];
- short width, height;
- short margin, flag;
+ short width, height;
+ short margin, flag;
- float cage_extrusion;
- float pad2;
+ float cage_extrusion;
+ float max_ray_distance;
+ int pass_filter;
- char normal_swizzle[3];
- char normal_space;
+ char normal_swizzle[3];
+ char normal_space;
- char save_mode;
- char pad[3];
+ char target;
+ char save_mode;
+ char margin_type;
+ char _pad[5];
- char cage[64]; /* MAX_NAME */
+ struct Object *cage_object;
} BakeData;
-/* (char) normal_swizzle */
-typedef enum BakeNormalSwizzle {
- R_BAKE_POSX = 0,
- R_BAKE_POSY = 1,
- R_BAKE_POSZ = 2,
- R_BAKE_NEGX = 3,
- R_BAKE_NEGY = 4,
- R_BAKE_NEGZ = 5,
-} BakeNormalSwizzle;
-
-/* (char) save_mode */
-typedef enum BakeSaveMode {
- R_BAKE_SAVE_INTERNAL = 0,
- R_BAKE_SAVE_EXTERNAL = 1,
-} BakeSaveMode;
+/** #BakeData.margin_type (char) */
+typedef enum eBakeMarginType {
+ R_BAKE_ADJACENT_FACES = 0,
+ R_BAKE_EXTEND = 1,
+} eBakeMarginType;
+
+/** #BakeData.normal_swizzle (char) */
+typedef enum eBakeNormalSwizzle {
+ R_BAKE_POSX = 0,
+ R_BAKE_POSY = 1,
+ R_BAKE_POSZ = 2,
+ R_BAKE_NEGX = 3,
+ R_BAKE_NEGY = 4,
+ R_BAKE_NEGZ = 5,
+} eBakeNormalSwizzle;
+
+/** #BakeData.target (char) */
+typedef enum eBakeTarget {
+ R_BAKE_TARGET_IMAGE_TEXTURES = 0,
+ R_BAKE_TARGET_VERTEX_COLORS = 1,
+} eBakeTarget;
+
+/** #BakeData.save_mode (char) */
+typedef enum eBakeSaveMode {
+ R_BAKE_SAVE_INTERNAL = 0,
+ R_BAKE_SAVE_EXTERNAL = 1,
+} eBakeSaveMode;
+
+/** #BakeData.pass_filter */
+typedef enum eBakePassFilter {
+ R_BAKE_PASS_FILTER_NONE = 0,
+ R_BAKE_PASS_FILTER_UNUSED = (1 << 0),
+ R_BAKE_PASS_FILTER_EMIT = (1 << 1),
+ R_BAKE_PASS_FILTER_DIFFUSE = (1 << 2),
+ R_BAKE_PASS_FILTER_GLOSSY = (1 << 3),
+ R_BAKE_PASS_FILTER_TRANSM = (1 << 4),
+ R_BAKE_PASS_FILTER_SUBSURFACE = (1 << 5),
+ R_BAKE_PASS_FILTER_DIRECT = (1 << 6),
+ R_BAKE_PASS_FILTER_INDIRECT = (1 << 7),
+ R_BAKE_PASS_FILTER_COLOR = (1 << 8),
+} eBakePassFilter;
+
+#define R_BAKE_PASS_FILTER_ALL (~0)
/* *************************************************************** */
/* Render Data */
typedef struct RenderData {
- struct ImageFormatData im_format;
-
- struct AviCodecData *avicodecdata;
- struct QuicktimeCodecData *qtcodecdata;
- struct QuicktimeCodecSettings qtcodecsettings;
- struct FFMpegCodecData ffcodecdata;
-
- int cfra, sfra, efra; /* frames as in 'images' */
- float subframe; /* subframe offset from cfra, in 0.0-1.0 */
- int psfra, pefra; /* start+end frames of preview range */
-
- int images, framapto;
- short flag, threads;
-
- float framelen, blurfac;
-
- /** For UR edge rendering: give the edges this color */
- float edgeR, edgeG, edgeB;
-
-
- /* standalone player */ // XXX deprecated since 2.5
- short fullscreen DNA_DEPRECATED, xplay DNA_DEPRECATED, yplay DNA_DEPRECATED;
- short freqplay DNA_DEPRECATED;
- /* standalone player */ // XXX deprecated since 2.5
- short depth DNA_DEPRECATED, attrib DNA_DEPRECATED;
-
-
- int frame_step; /* frames to jump during render/playback */
-
- short stereomode DNA_DEPRECATED; /* standalone player stereo settings */ // XXX deprecated since 2.5
-
- short dimensionspreset; /* for the dimensions presets menu */
-
- short filtertype; /* filter is box, tent, gauss, mitch, etc */
-
- short size; /* size in % */
-
- short maximsize DNA_DEPRECATED; /* max in Kb */
-
- short pad6;
-
- /* from buttons: */
- /**
- * The desired number of pixels in the x direction
- */
- int xsch;
- /**
- * The desired number of pixels in the y direction
- */
- int ysch;
-
- /**
- * The number of part to use in the x direction
- */
- short xparts DNA_DEPRECATED;
- /**
- * The number of part to use in the y direction
- */
- short yparts DNA_DEPRECATED;
-
- /**
- * render tile dimensions
- */
- int tilex, tiley;
-
- short planes DNA_DEPRECATED, imtype DNA_DEPRECATED, subimtype DNA_DEPRECATED, quality DNA_DEPRECATED; /*deprecated!*/
-
- /**
- * Render to image editor, fullscreen or to new window.
- */
- short displaymode;
- char use_lock_interface;
- char pad7;
-
- /**
- * Flags for render settings. Use bit-masking to access the settings.
- */
- int scemode;
-
- /**
- * Flags for render settings. Use bit-masking to access the settings.
- */
- int mode;
-
- /**
- * Flags for raytrace settings. Use bit-masking to access the settings.
- */
- int raytrace_options;
-
- /**
- * Raytrace acceleration structure
- */
- short raytrace_structure;
-
- short pad1;
-
- /* octree resolution */
- short ocres;
- short pad4;
-
- /**
- * What to do with the sky/background. Picks sky/premul/key
- * blending for the background
- */
- short alphamode;
-
- /**
- * The number of samples to use per pixel.
- */
- short osa;
-
- short frs_sec, edgeint;
-
-
- /* safety, border and display rect */
- rctf safety, border;
- rcti disprect;
-
- /* information on different layers to be rendered */
- ListBase layers;
- short actlay;
-
- /* number of mblur samples */
- short mblur_samples;
-
- /**
- * Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
- */
- float xasp, yasp;
-
- float frs_sec_base;
-
- /**
- * Value used to define filter size for all filter options */
- float gauss;
-
-
- /* color management settings - color profiles, gamma correction, etc */
- int color_mgt_flag;
-
- /** post-production settings. deprecated, but here for upwards compat (initialized to 1) */
- float postgamma, posthue, postsat;
-
- /* Dither noise intensity */
- float dither_intensity;
-
- /* Bake Render options */
- short bake_osa, bake_filter, bake_mode, bake_flag;
- short bake_normal_space, bake_quad_split;
- float bake_maxdist, bake_biasdist;
- short bake_samples, bake_pad;
- float bake_user_scale, bake_pad1;
-
- /* path to render output */
- char pic[1024]; /* 1024 = FILE_MAX */
-
- /* stamps flags. */
- int stamp;
- short stamp_font_id, pad3; /* select one of blenders bitmap fonts */
-
- /* stamp info user data. */
- char stamp_udata[768];
-
- /* foreground/background color. */
- float fg_stamp[4];
- float bg_stamp[4];
-
- /* sequencer options */
- char seq_prev_type;
- char seq_rend_type;
- char seq_flag; /* flag use for sequence render/draw */
- char pad5[5];
-
- /* render simplify */
- int simplify_flag;
- short simplify_subsurf;
- short simplify_subsurf_render;
- short simplify_shadowsamples, pad9;
- float simplify_particles;
- float simplify_particles_render;
- float simplify_aosss;
-
- /* cineon */
- short cineonwhite DNA_DEPRECATED, cineonblack DNA_DEPRECATED; /*deprecated*/
- float cineongamma DNA_DEPRECATED; /*deprecated*/
-
- /* jpeg2000 */
- short jp2_preset DNA_DEPRECATED, jp2_depth DNA_DEPRECATED; /*deprecated*/
- int rpad3;
-
- /* Dome variables */ // XXX deprecated since 2.5
- short domeres DNA_DEPRECATED, domemode DNA_DEPRECATED; // XXX deprecated since 2.5
- short domeangle DNA_DEPRECATED, dometilt DNA_DEPRECATED; // XXX deprecated since 2.5
- float domeresbuf DNA_DEPRECATED; // XXX deprecated since 2.5
- float pad2;
- struct Text *dometext DNA_DEPRECATED; // XXX deprecated since 2.5
-
- /* Freestyle line thickness options */
- int line_thickness_mode;
- float unit_line_thickness; /* in pixels */
-
- /* render engine */
- char engine[32];
-
- /* Cycles baking */
- struct BakeData bake;
-
- int preview_start_resolution;
-
- /* Type of the debug pass to use.
- * Only used when built with debug passes support.
- */
- short debug_pass_type;
-
- short pad;
-
- /* MultiView */
- ListBase views;
- short actview;
- short views_format;
- short pad8[2];
+ struct ImageFormatData im_format;
+
+ struct AviCodecData *avicodecdata;
+ struct FFMpegCodecData ffcodecdata;
+
+ /** Frames as in 'images'. */
+ int cfra, sfra, efra;
+ /** Subframe offset from cfra, in 0.0-1.0. */
+ float subframe;
+ /** Start+end frames of preview range. */
+ int psfra, pefra;
+
+ int images, framapto;
+ short flag, threads;
+
+ float framelen, blurfac;
+
+ /** Frames to jump during render/playback. */
+ int frame_step;
+
+ /** Standalone player stereo settings */ /* XXX deprecated since .2.5 */
+ short stereomode DNA_DEPRECATED;
+
+ /** For the dimensions presets menu. */
+ short dimensionspreset;
+
+ /** Size in %. */
+ short size;
+
+ char _pad6[2];
+
+ /* from buttons: */
+ /**
+ * The desired number of pixels in the x direction
+ */
+ int xsch;
+ /**
+ * The desired number of pixels in the y direction
+ */
+ int ysch;
+
+ /**
+ * render tile dimensions
+ */
+ int tilex DNA_DEPRECATED;
+ int tiley DNA_DEPRECATED;
+
+ short planes DNA_DEPRECATED;
+ short imtype DNA_DEPRECATED;
+ short subimtype DNA_DEPRECATED;
+ short quality DNA_DEPRECATED;
+
+ char use_lock_interface;
+ char _pad7[3];
+
+ /**
+ * Flags for render settings. Use bit-masking to access the settings.
+ */
+ int scemode;
+
+ /**
+ * Flags for render settings. Use bit-masking to access the settings.
+ */
+ int mode;
+
+ short frs_sec;
+
+ /**
+ * What to do with the sky/background.
+ * Picks sky/premul blending for the background.
+ */
+ char alphamode;
+
+ char _pad0[1];
+
+ /** Render border to render sub-resions. */
+ rctf border;
+
+ /* information on different layers to be rendered */
+ /** Converted to Scene->view_layers. */
+ ListBase layers DNA_DEPRECATED;
+ /** Converted to Scene->active_layer. */
+ short actlay DNA_DEPRECATED;
+ char _pad1[2];
+
+ /**
+ * Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
+ */
+ float xasp, yasp;
+
+ float frs_sec_base;
+
+ /**
+ * Value used to define filter size for all filter options.
+ */
+ float gauss;
+
+ /* color management settings - color profiles, gamma correction, etc */
+ int color_mgt_flag;
+
+ /* Dither noise intensity */
+ float dither_intensity;
+
+ /* Bake Render options */
+ short bake_mode, bake_flag;
+ short bake_margin, bake_samples;
+ short bake_margin_type;
+ char _pad9[6];
+ float bake_biasdist, bake_user_scale;
+
+ /* path to render output */
+ /** 1024 = FILE_MAX. */
+ /* NOTE: Excluded from `BKE_bpath_foreach_path_` / `scene_foreach_path` code. */
+ char pic[1024];
+
+ /* stamps flags. */
+ int stamp;
+ /** Select one of blenders bitmap fonts. */
+ short stamp_font_id;
+ char _pad3[2];
+
+ /* stamp info user data. */
+ char stamp_udata[768];
+
+ /* foreground/background color. */
+ float fg_stamp[4];
+ float bg_stamp[4];
+
+ /* sequencer options */
+ char seq_prev_type;
+ /** UNUSED. */
+ char seq_rend_type;
+ /** Flag use for sequence render/draw. */
+ char seq_flag;
+ char _pad5[3];
+
+ /* render simplify */
+ short simplify_subsurf;
+ short simplify_subsurf_render;
+ short simplify_gpencil;
+ float simplify_particles;
+ float simplify_particles_render;
+ float simplify_volumes;
+
+ /* Freestyle line thickness options */
+ int line_thickness_mode;
+ /** In pixels. */
+ float unit_line_thickness;
+
+ /* render engine */
+ char engine[32];
+ char _pad2[2];
+
+ /* Performance Options */
+ short perf_flag;
+
+ /* Cycles baking */
+ struct BakeData bake;
+
+ int _pad8;
+ short preview_pixel_size;
+
+ short _pad4;
+
+ /* MultiView */
+ /** SceneRenderView. */
+ ListBase views;
+ short actview;
+ short views_format;
+
+ /* Hair Display */
+ short hair_type, hair_subdiv;
+
+ /* Motion blur shutter */
+ struct CurveMapping mblur_shutter_curve;
} RenderData;
+/** #RenderData.quality_flag */
+typedef enum eQualityOption {
+ SCE_PERF_HQ_NORMALS = (1 << 0),
+} eQualityOption;
+
+/** #RenderData.hair_type */
+typedef enum eHairType {
+ SCE_HAIR_SHAPE_STRAND = 0,
+ SCE_HAIR_SHAPE_STRIP = 1,
+} eHairType;
+
/* *************************************************************** */
-/* Render Conversion/Simplfication Settings */
+/* Render Conversion/Simplification Settings */
-/* control render convert and shading engine */
+/** Control render convert and shading engine. */
typedef struct RenderProfile {
- struct RenderProfile *next, *prev;
- char name[32];
-
- short particle_perc;
- short subsurf_max;
- short shadbufsample_max;
- short pad1;
-
- float ao_error, pad2;
-
-} RenderProfile;
+ struct RenderProfile *next, *prev;
+ char name[32];
-/* *************************************************************** */
-/* Game Engine - Dome */
-
-typedef struct GameDome {
- short res, mode;
- short angle, tilt;
- float resbuf, pad2;
- struct Text *warptext;
-} GameDome;
-
-#define DOME_FISHEYE 1
-#define DOME_TRUNCATED_FRONT 2
-#define DOME_TRUNCATED_REAR 3
-#define DOME_ENVMAP 4
-#define DOME_PANORAM_SPH 5
-#define DOME_NUM_MODES 6
+ short particle_perc;
+ short subsurf_max;
+ short shadbufsample_max;
+ char _pad1[2];
-/* *************************************************************** */
-/* Game Engine */
-
-typedef struct GameFraming {
- float col[3];
- char type, pad1, pad2, pad3;
-} GameFraming;
-
-#define SCE_GAMEFRAMING_BARS 0
-#define SCE_GAMEFRAMING_EXTEND 1
-#define SCE_GAMEFRAMING_SCALE 2
-
-typedef struct RecastData {
- float cellsize;
- float cellheight;
- float agentmaxslope;
- float agentmaxclimb;
- float agentheight;
- float agentradius;
- float edgemaxlen;
- float edgemaxerror;
- float regionminsize;
- float regionmergesize;
- int vertsperpoly;
- float detailsampledist;
- float detailsamplemaxerror;
- short pad1, pad2;
-} RecastData;
-
-typedef struct GameData {
-
- /* standalone player */
- struct GameFraming framing;
- short playerflag, xplay, yplay, freqplay;
- short depth, attrib, rt1, rt2;
- short aasamples, pad4[3];
-
- /* stereo/dome mode */
- struct GameDome dome;
- short stereoflag, stereomode;
- float eyeseparation;
- RecastData recastData;
-
-
- /* physics (it was in world)*/
- float gravity; /*Gravitation constant for the game world*/
-
- /*
- * Radius of the activity bubble, in Manhattan length. Objects
- * outside the box are activity-culled. */
- float activityBoxRadius;
-
- /*
- * bit 3: (gameengine): Activity culling is enabled.
- * bit 5: (gameengine) : enable Bullet DBVT tree for view frustrum culling
- */
- int flag;
- short mode, matmode;
- short occlusionRes; /* resolution of occlusion Z buffer in pixel */
- short physicsEngine;
- short exitkey;
- short vsync; /* Controls vsync: off, on, or adaptive (if supported) */
- short ticrate, maxlogicstep, physubstep, maxphystep;
- short obstacleSimulation;
- short raster_storage;
- float levelHeight;
- float deactivationtime, lineardeactthreshold, angulardeactthreshold;
-
- /* Scene LoD */
- short lodflag, pad2;
- int scehysteresis, pad5;
-
-} GameData;
-
-#define STEREO_NOSTEREO 1
-#define STEREO_ENABLED 2
-#define STEREO_DOME 3
-
-//#define STEREO_NOSTEREO 1
-#define STEREO_QUADBUFFERED 2
-#define STEREO_ABOVEBELOW 3
-#define STEREO_INTERLACED 4
-#define STEREO_ANAGLYPH 5
-#define STEREO_SIDEBYSIDE 6
-#define STEREO_VINTERLACE 7
-//#define STEREO_DOME 8
-#define STEREO_3DTVTOPBOTTOM 9
-
-/* physicsEngine */
-#define WOPHY_NONE 0
-#define WOPHY_BULLET 5
-
-/* obstacleSimulation */
-#define OBSTSIMULATION_NONE 0
-#define OBSTSIMULATION_TOI_rays 1
-#define OBSTSIMULATION_TOI_cells 2
-
-/* Raster storage */
-#define RAS_STORE_AUTO 0
-#define RAS_STORE_IMMEDIATE 1
-#define RAS_STORE_VA 2
-#define RAS_STORE_VBO 3
-
-/* vsync */
-#define VSYNC_ON 0
-#define VSYNC_OFF 1
-#define VSYNC_ADAPTIVE 2
-
-/* GameData.flag */
-#define GAME_RESTRICT_ANIM_UPDATES (1 << 0)
-#define GAME_ENABLE_ALL_FRAMES (1 << 1)
-#define GAME_SHOW_DEBUG_PROPS (1 << 2)
-#define GAME_SHOW_FRAMERATE (1 << 3)
-#define GAME_SHOW_PHYSICS (1 << 4)
-#define GAME_DISPLAY_LISTS (1 << 5)
-#define GAME_GLSL_NO_LIGHTS (1 << 6)
-#define GAME_GLSL_NO_SHADERS (1 << 7)
-#define GAME_GLSL_NO_SHADOWS (1 << 8)
-#define GAME_GLSL_NO_RAMPS (1 << 9)
-#define GAME_GLSL_NO_NODES (1 << 10)
-#define GAME_GLSL_NO_EXTRA_TEX (1 << 11)
-#define GAME_IGNORE_DEPRECATION_WARNINGS (1 << 12)
-#define GAME_ENABLE_ANIMATION_RECORD (1 << 13)
-#define GAME_SHOW_MOUSE (1 << 14)
-#define GAME_GLSL_NO_COLOR_MANAGEMENT (1 << 15)
-#define GAME_SHOW_OBSTACLE_SIMULATION (1 << 16)
-#define GAME_NO_MATERIAL_CACHING (1 << 17)
-/* Note: GameData.flag is now an int (max 32 flags). A short could only take 16 flags */
-
-/* GameData.playerflag */
-#define GAME_PLAYER_FULLSCREEN (1 << 0)
-#define GAME_PLAYER_DESKTOP_RESOLUTION (1 << 1)
-
-/* GameData.matmode */
-enum {
-#ifdef DNA_DEPRECATED
- GAME_MAT_TEXFACE = 0, /* deprecated */
-#endif
- GAME_MAT_MULTITEX = 1,
- GAME_MAT_GLSL = 2,
-};
+ float ao_error;
+ char _pad2[4];
-/* GameData.lodflag */
-#define SCE_LOD_USE_HYST (1 << 0)
+} RenderProfile;
/* UV Paint */
-#define UV_SCULPT_LOCK_BORDERS 1
-#define UV_SCULPT_ALL_ISLANDS 2
-
-#define UV_SCULPT_TOOL_PINCH 1
-#define UV_SCULPT_TOOL_RELAX 2
-#define UV_SCULPT_TOOL_GRAB 3
+/** #ToolSettings.uv_sculpt_settings */
+#define UV_SCULPT_LOCK_BORDERS 1
+#define UV_SCULPT_ALL_ISLANDS 2
-#define UV_SCULPT_TOOL_RELAX_LAPLACIAN 1
-#define UV_SCULPT_TOOL_RELAX_HC 2
+/** #ToolSettings.uv_relax_method */
+#define UV_SCULPT_TOOL_RELAX_LAPLACIAN 1
+#define UV_SCULPT_TOOL_RELAX_HC 2
/* Stereo Flags */
#define STEREO_RIGHT_NAME "right"
@@ -901,21 +839,24 @@ enum {
#define STEREO_RIGHT_SUFFIX "_R"
#define STEREO_LEFT_SUFFIX "_L"
-typedef enum StereoViews {
- STEREO_LEFT_ID = 0,
- STEREO_RIGHT_ID = 1,
- STEREO_3D_ID = 2,
- STEREO_MONO_ID = 3,
-} StereoViews;
+/** #View3D.stereo3d_camera / #View3D.multiview_eye / #ImageUser.multiview_eye */
+typedef enum eStereoViews {
+ STEREO_LEFT_ID = 0,
+ STEREO_RIGHT_ID = 1,
+ STEREO_3D_ID = 2,
+ STEREO_MONO_ID = 3,
+} eStereoViews;
+/* *************************************************************** */
/* Markers */
-typedef struct TimeMarker {
- struct TimeMarker *next, *prev;
- int frame;
- char name[64];
- unsigned int flag;
- struct Object *camera;
+typedef struct TimeMarker {
+ struct TimeMarker *next, *prev;
+ int frame;
+ char name[64];
+ unsigned int flag;
+ struct Object *camera;
+ struct IDProperty *prop;
} TimeMarker;
/* *************************************************************** */
@@ -923,155 +864,320 @@ typedef struct TimeMarker {
#define PAINT_MAX_INPUT_SAMPLES 64
-/* Paint Tool Base */
+typedef struct Paint_Runtime {
+ /* Avoid having to compare with scene pointer everywhere. */
+ unsigned int tool_offset;
+ unsigned short ob_mode;
+ char _pad[2];
+} Paint_Runtime;
+
+/** We might want to store other things here. */
+typedef struct PaintToolSlot {
+ struct Brush *brush;
+} PaintToolSlot;
+
+/** Paint Tool Base. */
typedef struct Paint {
- struct Brush *brush;
- struct Palette *palette;
- struct CurveMapping *cavity_curve; /* cavity curve */
-
- /* WM Paint cursor */
- void *paint_cursor;
- unsigned char paint_cursor_col[4];
-
- /* enum PaintFlags */
- int flags;
-
- /* Paint stroke can use up to PAINT_MAX_INPUT_SAMPLES inputs to
- * smooth the stroke */
- int num_input_samples;
-
- /* flags used for symmetry */
- int symmetry_flags;
-
- float tile_offset[3];
- int pad2;
+ struct Brush *brush;
+
+ /* Each tool has its own active brush,
+ * The currently active tool is defined by the current 'brush'. */
+ struct PaintToolSlot *tool_slots;
+ int tool_slots_len;
+ char _pad1[4];
+
+ struct Palette *palette;
+ /** Cavity curve. */
+ struct CurveMapping *cavity_curve;
+
+ /* WM Paint cursor */
+ void *paint_cursor;
+ unsigned char paint_cursor_col[4];
+
+ /* enum ePaintFlags */
+ int flags;
+
+ /* Paint stroke can use up to PAINT_MAX_INPUT_SAMPLES inputs to
+ * smooth the stroke */
+ int num_input_samples;
+
+ /* flags used for symmetry */
+ int symmetry_flags;
+
+ float tile_offset[3];
+ char _pad2[4];
+
+ struct Paint_Runtime runtime;
} Paint;
/* ------------------------------------------- */
/* Image Paint */
-/* Texture/Image Editor */
+/** Texture/Image Editor. */
typedef struct ImagePaintSettings {
- Paint paint;
-
- short flag, missing_data;
-
- /* for projection painting only */
- short seam_bleed, normal_angle;
- short screen_grab_size[2]; /* capture size for re-projection */
-
- int mode; /* mode used for texture painting */
-
- void *paintcursor; /* wm handle */
- struct Image *stencil; /* workaround until we support true layer masks */
- struct Image *clone; /* clone layer for image mode for projective texture painting */
- struct Image *canvas; /* canvas when the explicit system is used for painting */
- float stencil_col[3];
- float dither; /* dither amount used when painting on byte images */
+ Paint paint;
+
+ short flag, missing_data;
+
+ /* for projection painting only */
+ short seam_bleed, normal_angle;
+ /** Capture size for re-projection. */
+ short screen_grab_size[2];
+
+ /** Mode used for texture painting. */
+ int mode;
+
+ /** Workaround until we support true layer masks. */
+ struct Image *stencil;
+ /** Clone layer for image mode for projective texture painting. */
+ struct Image *clone;
+ /** Canvas when the explicit system is used for painting. */
+ struct Image *canvas;
+ float stencil_col[3];
+ /** Dither amount used when painting on byte images. */
+ float dither;
+ /** Display texture interpolation method. */
+ int interp;
+ char _pad[4];
} ImagePaintSettings;
/* ------------------------------------------- */
/* Particle Edit */
-/* Settings for a Particle Editing Brush */
+/** Settings for a Particle Editing Brush. */
typedef struct ParticleBrushData {
- short size; /* common setting */
- short step, invert, count; /* for specific brushes only */
- int flag;
- float strength;
+ /** Common setting. */
+ short size;
+ /** For specific brushes only. */
+ short step, invert, count;
+ int flag;
+ float strength;
} ParticleBrushData;
-/* Particle Edit Mode Settings */
+/** Particle Edit Mode Settings. */
typedef struct ParticleEditSettings {
- short flag;
- short totrekey;
- short totaddkey;
- short brushtype;
+ short flag;
+ short totrekey;
+ short totaddkey;
+ short brushtype;
- ParticleBrushData brush[7]; /* 7 = PE_TOT_BRUSH */
- void *paintcursor; /* runtime */
+ ParticleBrushData brush[7];
+ /** Runtime. */
+ void *paintcursor;
- float emitterdist, rt;
+ float emitterdist;
+ char _pad0[4];
- int selectmode;
- int edittype;
+ int selectmode;
+ int edittype;
- int draw_step, fade_frames;
+ int draw_step, fade_frames;
- struct Scene *scene;
- struct Object *object;
- struct Object *shape_object;
+ struct Scene *scene;
+ struct Object *object;
+ struct Object *shape_object;
} ParticleEditSettings;
/* ------------------------------------------- */
/* Sculpt */
-/* Sculpt */
+/** Sculpt. */
typedef struct Sculpt {
- Paint paint;
+ Paint paint;
+
+ /* For rotating around a pivot point */
+ // float pivot[3]; XXX not used?
+ int flags;
- /* For rotating around a pivot point */
- //float pivot[3]; XXX not used?
- int flags;
+ int automasking_flags;
- /* Control tablet input */
- //char tablet_size, tablet_strength; XXX not used?
- int radial_symm[3];
+ /* Control tablet input */
+ // char tablet_size, tablet_strength; XXX not used?
+ int radial_symm[3];
- /* Maximum edge length for dynamic topology sculpting (in pixels) */
- float detail_size;
+ /* Maximum edge length for dynamic topology sculpting (in pixels) */
+ float detail_size;
- /* Direction used for SCULPT_OT_symmetrize operator */
- int symmetrize_direction;
+ /* Direction used for SCULPT_OT_symmetrize operator */
+ int symmetrize_direction;
- /* gravity factor for sculpting */
- float gravity_factor;
+ /* gravity factor for sculpting */
+ float gravity_factor;
- /* scale for constant detail size */
- float constant_detail;
- float detail_percent;
- float pad;
+ /* scale for constant detail size */
+ /** Constant detail resolution (Blender unit / constant_detail). */
+ float constant_detail;
+ float detail_percent;
- struct Object *gravity_object;
+ struct Object *gravity_object;
} Sculpt;
typedef struct UvSculpt {
- Paint paint;
+ Paint paint;
} UvSculpt;
+
+/** Grease pencil drawing brushes. */
+typedef struct GpPaint {
+ Paint paint;
+ int flag;
+ /* Mode of paint (Materials or Vertex Color). */
+ int mode;
+} GpPaint;
+
+/** #GpPaint.flag */
+enum {
+ GPPAINT_FLAG_USE_MATERIAL = 0,
+ GPPAINT_FLAG_USE_VERTEXCOLOR = 1,
+};
+
+/** Grease pencil vertex paint. */
+typedef struct GpVertexPaint {
+ Paint paint;
+ int flag;
+ char _pad[4];
+} GpVertexPaint;
+
+/** Grease pencil sculpt paint. */
+typedef struct GpSculptPaint {
+ Paint paint;
+ int flag;
+ char _pad[4];
+} GpSculptPaint;
+
+/** Grease pencil weight paint. */
+typedef struct GpWeightPaint {
+ Paint paint;
+ int flag;
+ char _pad[4];
+} GpWeightPaint;
+
/* ------------------------------------------- */
/* Vertex Paint */
-/* Vertex Paint */
+/** Vertex Paint. */
typedef struct VPaint {
- Paint paint;
-
- short flag, pad;
- int tot; /* allocation size of prev buffers */
- unsigned int *vpaint_prev; /* previous mesh colors */
- struct MDeformVert *wpaint_prev; /* previous vertex weights */
-
- void *paintcursor; /* wm handle */
+ Paint paint;
+ char flag;
+ char _pad[3];
+ /** For mirrored painting. */
+ int radial_symm[3];
} VPaint;
-/* VPaint.flag */
+/** #VPaint.flag */
enum {
- // VP_COLINDEX = (1 << 0), /* only paint onto active material*/ /* deprecated since before 2.49 */
- // VP_AREA = (1 << 1), /* deprecated since 2.70 */
- VP_NORMALS = (1 << 3),
- VP_SPRAY = (1 << 4),
- // VP_MIRROR_X = (1 << 5), /* deprecated in 2.5x use (me->editflag & ME_EDIT_MIRROR_X) */
- VP_ONLYVGROUP = (1 << 7) /* weight paint only */
+ /* weight paint only */
+ VP_FLAG_VGROUP_RESTRICT = (1 << 7),
};
-/* *************************************************************** */
-/* Transform Orientations */
-
-typedef struct TransformOrientation {
- struct TransformOrientation *next, *prev;
- char name[64]; /* MAX_NAME */
- float mat[3][3];
- int pad;
-} TransformOrientation;
+/* ------------------------------------------- */
+/* GPencil Stroke Sculpting */
+
+/** #GP_Sculpt_Settings.lock_axis */
+typedef enum eGP_Lockaxis_Types {
+ GP_LOCKAXIS_VIEW = 0,
+ GP_LOCKAXIS_X = 1,
+ GP_LOCKAXIS_Y = 2,
+ GP_LOCKAXIS_Z = 3,
+ GP_LOCKAXIS_CURSOR = 4,
+} eGP_Lockaxis_Types;
+
+/** Settings for a GPencil Speed Guide. */
+typedef struct GP_Sculpt_Guide {
+ char use_guide;
+ char use_snapping;
+ char reference_point;
+ char type;
+ char _pad2[4];
+ float angle;
+ float angle_snap;
+ float spacing;
+ float location[3];
+ struct Object *reference_object;
+} GP_Sculpt_Guide;
+
+/** GPencil Stroke Sculpting Settings. */
+typedef struct GP_Sculpt_Settings {
+ /** Runtime. */
+ void *paintcursor;
+ /** #eGP_Sculpt_SettingsFlag. */
+ int flag;
+ /** #eGP_Lockaxis_Types lock drawing to one axis. */
+ int lock_axis;
+ /** Threshold for intersections */
+ float isect_threshold;
+ char _pad[4];
+ /** Multiframe edit falloff effect by frame. */
+ struct CurveMapping *cur_falloff;
+ /** Curve used for primitive tools. */
+ struct CurveMapping *cur_primitive;
+ /** Guides used for paint tools */
+ struct GP_Sculpt_Guide guide;
+} GP_Sculpt_Settings;
+
+/** #GP_Sculpt_Settings.flag */
+typedef enum eGP_Sculpt_SettingsFlag {
+ /** Enable falloff for multi-frame editing. */
+ GP_SCULPT_SETT_FLAG_FRAME_FALLOFF = (1 << 0),
+ /** Apply primitive curve. */
+ GP_SCULPT_SETT_FLAG_PRIMITIVE_CURVE = (1 << 1),
+ /** Scale thickness. */
+ GP_SCULPT_SETT_FLAG_SCALE_THICKNESS = (1 << 3),
+} eGP_Sculpt_SettingsFlag;
+
+/** #GP_Sculpt_Settings.gpencil_selectmode_sculpt */
+typedef enum eGP_Sculpt_SelectMaskFlag {
+ /** Only affect selected points. */
+ GP_SCULPT_MASK_SELECTMODE_POINT = (1 << 0),
+ /** Only affect selected strokes. */
+ GP_SCULPT_MASK_SELECTMODE_STROKE = (1 << 1),
+ /** only affect selected segments. */
+ GP_SCULPT_MASK_SELECTMODE_SEGMENT = (1 << 2),
+} eGP_Sculpt_SelectMaskFlag;
+
+/** #GP_Sculpt_Settings.gpencil_selectmode_vertex */
+typedef enum eGP_vertex_SelectMaskFlag {
+ /** Only affect selected points. */
+ GP_VERTEX_MASK_SELECTMODE_POINT = (1 << 0),
+ /** Only affect selected strokes. */
+ GP_VERTEX_MASK_SELECTMODE_STROKE = (1 << 1),
+ /** Only affect selected segments. */
+ GP_VERTEX_MASK_SELECTMODE_SEGMENT = (1 << 2),
+} eGP_Vertex_SelectMaskFlag;
+
+/** Settings for GP Interpolation Operators. */
+typedef struct GP_Interpolate_Settings {
+ /** Custom interpolation curve (for use with GP_IPO_CURVEMAP). */
+ struct CurveMapping *custom_ipo;
+} GP_Interpolate_Settings;
+
+/** #GP_Interpolate_Settings.flag */
+typedef enum eGP_Interpolate_SettingsFlag {
+ /* apply interpolation to all layers */
+ GP_TOOLFLAG_INTERPOLATE_ALL_LAYERS = (1 << 0),
+ /* apply interpolation to only selected */
+ GP_TOOLFLAG_INTERPOLATE_ONLY_SELECTED = (1 << 1),
+} eGP_Interpolate_SettingsFlag;
+
+/** #GP_Interpolate_Settings.type */
+typedef enum eGP_Interpolate_Type {
+ /* Traditional Linear Interpolation */
+ GP_IPO_LINEAR = 0,
+
+ /* CurveMap Defined Interpolation */
+ GP_IPO_CURVEMAP = 1,
+
+ /* Easing Equations */
+ GP_IPO_BACK = 3,
+ GP_IPO_BOUNCE = 4,
+ GP_IPO_CIRC = 5,
+ GP_IPO_CUBIC = 6,
+ GP_IPO_ELASTIC = 7,
+ GP_IPO_EXPO = 8,
+ GP_IPO_QUAD = 9,
+ GP_IPO_QUART = 10,
+ GP_IPO_QUINT = 11,
+ GP_IPO_SINE = 12,
+} eGP_Interpolate_Type;
/* *************************************************************** */
/* Unified Paint Settings
@@ -1081,938 +1187,1304 @@ typedef struct TransformOrientation {
* Brush for any paint mode; the flag field controls whether these
* values are used */
typedef struct UnifiedPaintSettings {
- /* unified radius of brush in pixels */
- int size;
+ /* unified radius of brush in pixels */
+ int size;
- /* unified radius of brush in Blender units */
- float unprojected_radius;
+ /* unified radius of brush in Blender units */
+ float unprojected_radius;
- /* unified strength of brush */
- float alpha;
+ /* unified strength of brush */
+ float alpha;
- /* unified brush weight, [0, 1] */
- float weight;
+ /* unified brush weight, [0, 1] */
+ float weight;
- /* unified brush color */
- float rgb[3];
- /* unified brush secondary color */
- float secondary_rgb[3];
+ /* unified brush color */
+ float rgb[3];
+ /* unified brush secondary color */
+ float secondary_rgb[3];
- /* user preferences for sculpt and paint */
- int flag;
+ /* user preferences for sculpt and paint */
+ int flag;
- /* rake rotation */
+ /* rake rotation */
- /* record movement of mouse so that rake can start at an intuitive angle */
- float last_rake[2];
- float last_rake_angle;
-
- int last_stroke_valid;
- float average_stroke_accum[3];
- int average_stroke_counter;
-
+ /* record movement of mouse so that rake can start at an intuitive angle */
+ float last_rake[2];
+ float last_rake_angle;
- float brush_rotation;
- float brush_rotation_sec;
+ int last_stroke_valid;
+ float average_stroke_accum[3];
+ int average_stroke_counter;
- /*********************************************************************************
- * all data below are used to communicate with cursor drawing and tex sampling *
- *********************************************************************************/
- int anchored_size;
+ float brush_rotation;
+ float brush_rotation_sec;
- float overlap_factor; /* normalization factor due to accumulated value of curve along spacing.
- * Calculated when brush spacing changes to dampen strength of stroke
- * if space attenuation is used*/
- char draw_inverted;
- /* check is there an ongoing stroke right now */
- char stroke_active;
+ /*******************************************************************************
+ * all data below are used to communicate with cursor drawing and tex sampling *
+ *******************************************************************************/
+ int anchored_size;
- char draw_anchored;
- char do_linear_conversion;
+ /**
+ * Normalization factor due to accumulated value of curve along spacing.
+ * Calculated when brush spacing changes to dampen strength of stroke
+ * if space attenuation is used.
+ */
+ float overlap_factor;
+ char draw_inverted;
+ /* check is there an ongoing stroke right now */
+ char stroke_active;
- float anchored_initial_mouse[2];
+ char draw_anchored;
+ char do_linear_conversion;
- /* radius of brush, premultiplied with pressure.
- * In case of anchored brushes contains the anchored radius */
- float pixel_radius;
+ /* store last location of stroke or whether the mesh was hit.
+ * Valid only while stroke is active */
+ float last_location[3];
+ int last_hit;
- /* drawing pressure */
- float size_pressure_value;
+ float anchored_initial_mouse[2];
- /* position of mouse, used to sample the texture */
- float tex_mouse[2];
+ /* radius of brush, premultiplied with pressure.
+ * In case of anchored brushes contains the anchored radius */
+ float pixel_radius;
+ float initial_pixel_radius;
- /* position of mouse, used to sample the mask texture */
- float mask_tex_mouse[2];
+ char _pad[4];
- /* ColorSpace cache to avoid locking up during sampling */
- struct ColorSpace *colorspace;
+ /* drawing pressure */
+ float size_pressure_value;
+
+ /* position of mouse, used to sample the texture */
+ float tex_mouse[2];
+
+ /* position of mouse, used to sample the mask texture */
+ float mask_tex_mouse[2];
+
+ /* ColorSpace cache to avoid locking up during sampling */
+ struct ColorSpace *colorspace;
} UnifiedPaintSettings;
+/** #UnifiedPaintSettings.flag */
typedef enum {
- UNIFIED_PAINT_SIZE = (1 << 0),
- UNIFIED_PAINT_ALPHA = (1 << 1),
- UNIFIED_PAINT_WEIGHT = (1 << 5),
- UNIFIED_PAINT_COLOR = (1 << 6),
+ UNIFIED_PAINT_SIZE = (1 << 0),
+ UNIFIED_PAINT_ALPHA = (1 << 1),
+ UNIFIED_PAINT_WEIGHT = (1 << 5),
+ UNIFIED_PAINT_COLOR = (1 << 6),
+
+ /* only used if unified size is enabled, mirrors the brush flag BRUSH_LOCK_SIZE */
+ UNIFIED_PAINT_BRUSH_LOCK_SIZE = (1 << 2),
+ UNIFIED_PAINT_FLAG_UNUSED_0 = (1 << 3),
+
+ UNIFIED_PAINT_FLAG_UNUSED_1 = (1 << 4),
+} eUnifiedPaintSettingsFlags;
+
+typedef struct CurvePaintSettings {
+ char curve_type;
+ char flag;
+ char depth_mode;
+ char surface_plane;
+ char fit_method;
+ char _pad;
+ short error_threshold;
+ float radius_min, radius_max;
+ float radius_taper_start, radius_taper_end;
+ float surface_offset;
+ float corner_angle;
+} CurvePaintSettings;
+
+/** #CurvePaintSettings.flag */
+enum {
+ CURVE_PAINT_FLAG_CORNERS_DETECT = (1 << 0),
+ CURVE_PAINT_FLAG_PRESSURE_RADIUS = (1 << 1),
+ CURVE_PAINT_FLAG_DEPTH_STROKE_ENDPOINTS = (1 << 2),
+ CURVE_PAINT_FLAG_DEPTH_STROKE_OFFSET_ABS = (1 << 3),
+};
+
+/** #CurvePaintSettings.fit_method */
+enum {
+ CURVE_PAINT_FIT_METHOD_REFIT = 0,
+ CURVE_PAINT_FIT_METHOD_SPLIT = 1,
+};
+
+/** #CurvePaintSettings.depth_mode */
+enum {
+ CURVE_PAINT_PROJECT_CURSOR = 0,
+ CURVE_PAINT_PROJECT_SURFACE = 1,
+};
- /* only used if unified size is enabled, mirrors the brush flags
- * BRUSH_LOCK_SIZE and BRUSH_SIZE_PRESSURE */
- UNIFIED_PAINT_BRUSH_LOCK_SIZE = (1 << 2),
- UNIFIED_PAINT_BRUSH_SIZE_PRESSURE = (1 << 3),
+/** #CurvePaintSettings.surface_plane */
+enum {
+ CURVE_PAINT_SURFACE_PLANE_NORMAL_VIEW = 0,
+ CURVE_PAINT_SURFACE_PLANE_NORMAL_SURFACE = 1,
+ CURVE_PAINT_SURFACE_PLANE_VIEW = 2,
+};
- /* only used if unified alpha is enabled, mirrors the brush flag
- * BRUSH_ALPHA_PRESSURE */
- UNIFIED_PAINT_BRUSH_ALPHA_PRESSURE = (1 << 4)
-} UnifiedPaintSettingsFlags;
+/* *************************************************************** */
+/* Stats */
+/** Stats for Meshes. */
typedef struct MeshStatVis {
- char type;
- char _pad1[2];
+ char type;
+ char _pad1[2];
- /* overhang */
- char overhang_axis;
- float overhang_min, overhang_max;
+ /* overhang */
+ char overhang_axis;
+ float overhang_min, overhang_max;
- /* thickness */
- float thickness_min, thickness_max;
- char thickness_samples;
- char _pad2[3];
+ /* thickness */
+ float thickness_min, thickness_max;
+ char thickness_samples;
+ char _pad2[3];
- /* distort */
- float distort_min, distort_max;
+ /* distort */
+ float distort_min, distort_max;
- /* sharp */
- float sharp_min, sharp_max;
+ /* sharp */
+ float sharp_min, sharp_max;
} MeshStatVis;
+typedef struct SequencerToolSettings {
+ /* eSeqImageFitMethod */
+ int fit_method;
+ short snap_mode;
+ short snap_flag;
+ /* eSeqOverlapMode */
+ int overlap_mode;
+ /**
+ * When there are many snap points,
+ * 0-1 range corresponds to resolution from bound-box to all possible snap points.
+ */
+ int snap_distance;
+ int pivot_point;
+} SequencerToolSettings;
+
+typedef enum eSeqOverlapMode {
+ SEQ_OVERLAP_EXPAND,
+ SEQ_OVERLAP_OVERWRITE,
+ SEQ_OVERLAP_SHUFFLE,
+} eSeqOverlapMode;
+
+typedef enum eSeqImageFitMethod {
+ SEQ_SCALE_TO_FIT,
+ SEQ_SCALE_TO_FILL,
+ SEQ_STRETCH_TO_FILL,
+ SEQ_USE_ORIGINAL_SIZE,
+} eSeqImageFitMethod;
/* *************************************************************** */
/* Tool Settings */
+/** #CurvePaintSettings.surface_plane */
+enum {
+ AUTO_MERGE = 1 << 0,
+ AUTO_MERGE_AND_SPLIT = 1 << 1,
+};
+
typedef struct ToolSettings {
- VPaint *vpaint; /* vertex paint */
- VPaint *wpaint; /* weight paint */
- Sculpt *sculpt;
- UvSculpt *uvsculpt; /* uv smooth */
-
- /* Vertex group weight - used only for editmode, not weight
- * paint */
- float vgroup_weight;
-
- float doublimit; /* remove doubles limit */
- float normalsize; /* size of normals */
- short automerge;
-
- /* Selection Mode for Mesh */
- short selectmode;
-
- /* UV Calculation */
- char unwrapper;
- char uvcalc_flag;
- char uv_flag;
- char uv_selectmode;
-
- float uvcalc_margin;
-
- /* Auto-IK */
- short autoik_chainlen; /* runtime only */
-
- /* Grease Pencil */
- char gpencil_flags; /* flags/options for how the tool works */
- char gpencil_src; /* for main 3D view Grease Pencil, where data comes from */
-
- char pad[4];
-
- /* Image Paint (8 byttse aligned please!) */
- struct ImagePaintSettings imapaint;
-
- /* Particle Editing */
- struct ParticleEditSettings particle;
-
- /* Transform Proportional Area of Effect */
- float proportional_size;
-
- /* Select Group Threshold */
- float select_thresh;
-
- /* Auto-Keying Mode */
- short autokey_mode, autokey_flag; /* defines in DNA_userdef_types.h */
-
- /* Multires */
- char multires_subdiv_type;
- char pad3[1];
-
- /* Skeleton generation */
- short skgen_resolution;
- float skgen_threshold_internal;
- float skgen_threshold_external;
- float skgen_length_ratio;
- float skgen_length_limit;
- float skgen_angle_limit;
- float skgen_correlation_limit;
- float skgen_symmetry_limit;
- float skgen_retarget_angle_weight;
- float skgen_retarget_length_weight;
- float skgen_retarget_distance_weight;
- short skgen_options;
- char skgen_postpro;
- char skgen_postpro_passes;
- char skgen_subdivisions[3];
- char skgen_multi_level;
-
- /* Skeleton Sketching */
- struct Object *skgen_template;
- char bone_sketching;
- char bone_sketching_convert;
- char skgen_subdivision_number;
- char skgen_retarget_options;
- char skgen_retarget_roll;
- char skgen_side_string[8];
- char skgen_num_string[8];
-
- /* Alt+RMB option */
- char edge_mode;
- char edge_mode_live_unwrap;
-
- /* Transform */
- char snap_mode, snap_node_mode;
- char snap_uv_mode;
- short snap_flag, snap_target;
- short proportional, prop_mode;
- char proportional_objects; /* proportional edit, object mode */
- char proportional_mask; /* proportional edit, mask editing */
- char proportional_action; /* proportional edit, action editor */
- char proportional_fcurve; /* proportional edit, graph editor */
- char lock_markers; /* lock marker editing */
- char pad4[5];
-
- char auto_normalize; /*auto normalizing mode in wpaint*/
- char multipaint; /* paint multiple bones in wpaint */
- char weightuser;
- char vgroupsubset; /* subset selection filter in wpaint */
-
- /* UV painting */
- int use_uv_sculpt;
- int uv_sculpt_settings;
- int uv_sculpt_tool;
- int uv_relax_method;
- /* XXX: these sculpt_paint_* fields are deprecated, use the
- * unified_paint_settings field instead! */
- short sculpt_paint_settings DNA_DEPRECATED; short pad5;
- int sculpt_paint_unified_size DNA_DEPRECATED;
- float sculpt_paint_unified_unprojected_radius DNA_DEPRECATED;
- float sculpt_paint_unified_alpha DNA_DEPRECATED;
-
- /* Unified Paint Settings */
- struct UnifiedPaintSettings unified_paint_settings;
-
- struct MeshStatVis statvis;
+ /** Vertex paint. */
+ VPaint *vpaint;
+ /** Weight paint. */
+ VPaint *wpaint;
+ Sculpt *sculpt;
+ /** Uv smooth. */
+ UvSculpt *uvsculpt;
+ /** Gpencil paint. */
+ GpPaint *gp_paint;
+ /** Gpencil vertex paint. */
+ GpVertexPaint *gp_vertexpaint;
+ /** Gpencil sculpt paint. */
+ GpSculptPaint *gp_sculptpaint;
+ /** Gpencil weight paint. */
+ GpWeightPaint *gp_weightpaint;
+
+ /* Vertex group weight - used only for editmode, not weight
+ * paint */
+ float vgroup_weight;
+
+ /** Remove doubles limit. */
+ float doublimit;
+ char automerge;
+ char object_flag;
+
+ /* Selection Mode for Mesh */
+ short selectmode;
+
+ /* UV Calculation */
+ char unwrapper;
+ char uvcalc_flag;
+ char uv_flag;
+ char uv_selectmode;
+
+ float uvcalc_margin;
+
+ /* Auto-IK */
+ /** Runtime only. */
+ short autoik_chainlen;
+
+ /* Grease Pencil */
+ /** Flags/options for how the tool works. */
+ char gpencil_flags;
+
+ /** Stroke placement settings: 3D View. */
+ char gpencil_v3d_align;
+ /** General 2D Editor. */
+ char gpencil_v2d_align;
+ char _pad0[2];
+
+ /* Annotations */
+ /** Stroke placement settings - 3D View. */
+ char annotate_v3d_align;
+
+ /** Default stroke thickness for annotation strokes. */
+ short annotate_thickness;
+ /** Stroke selection mode for Edit. */
+ char gpencil_selectmode_edit;
+ /** Stroke selection mode for Sculpt. */
+ char gpencil_selectmode_sculpt;
+
+ /* Grease Pencil Sculpt */
+ struct GP_Sculpt_Settings gp_sculpt;
+
+ /* Grease Pencil Interpolation Tool(s) */
+ struct GP_Interpolate_Settings gp_interpolate;
+
+ /* Image Paint (8 bytes aligned please!) */
+ struct ImagePaintSettings imapaint;
+
+ /* Particle Editing */
+ struct ParticleEditSettings particle;
+
+ /* Transform Proportional Area of Effect */
+ float proportional_size;
+
+ /* Select Group Threshold */
+ float select_thresh;
+
+ /* Auto-Keying Mode */
+ /** Defines in DNA_userdef_types.h. */
+ short autokey_flag;
+ char autokey_mode;
+ /** Keyframe type (see DNA_curve_types.h). */
+ char keyframe_type;
+
+ /* Multires */
+ char multires_subdiv_type;
+
+ /* Edge tagging, store operator settings (no UI access). */
+ char edge_mode;
+
+ char edge_mode_live_unwrap;
+
+ /* Transform */
+ char transform_pivot_point;
+ char transform_flag;
+ char snap_mode;
+ char snap_node_mode;
+ char snap_uv_mode;
+ char snap_flag;
+ /** UV equivalent of `snap_flag`, limited to: #SCE_SNAP_ABS_GRID. */
+ char snap_uv_flag;
+ char snap_target;
+ char snap_transform_mode_flag;
+
+ char proportional_edit, prop_mode;
+ /** Proportional edit, object mode. */
+ char proportional_objects;
+ /** Proportional edit, mask editing. */
+ char proportional_mask;
+ /** Proportional edit, action editor. */
+ char proportional_action;
+ /** Proportional edit, graph editor. */
+ char proportional_fcurve;
+ /** Lock marker editing. */
+ char lock_markers;
+
+ /** Auto normalizing mode in wpaint. */
+ char auto_normalize;
+ /** Present weights as if all locked vertex groups were
+ * deleted, and the remaining deform groups normalized. */
+ char wpaint_lock_relative;
+ /** Paint multiple bones in wpaint. */
+ char multipaint;
+ char weightuser;
+ /** Subset selection filter in wpaint. */
+ char vgroupsubset;
+
+ /** Stroke selection mode for Vertex Paint. */
+ char gpencil_selectmode_vertex;
+
+ /* UV painting */
+ char _pad2[1];
+ char uv_sculpt_settings;
+ char uv_relax_method;
+ /* XXX: these sculpt_paint_* fields are deprecated, use the
+ * unified_paint_settings field instead! */
+ short sculpt_paint_settings DNA_DEPRECATED;
+
+ char workspace_tool_type;
+
+ char _pad5[1];
+ int sculpt_paint_unified_size DNA_DEPRECATED;
+ float sculpt_paint_unified_unprojected_radius DNA_DEPRECATED;
+ float sculpt_paint_unified_alpha DNA_DEPRECATED;
+
+ /* Unified Paint Settings */
+ struct UnifiedPaintSettings unified_paint_settings;
+
+ struct CurvePaintSettings curve_paint_settings;
+
+ struct MeshStatVis statvis;
+
+ /* Normal Editing */
+ float normal_vector[3];
+ char _pad6[4];
+
+ /* Custom Curve Profile for bevel tool:
+ * Temporary until there is a proper preset system that stores the profiles or maybe stores
+ * entire bevel configurations. */
+ struct CurveProfile *custom_bevel_profile_preset;
+
+ struct SequencerToolSettings *sequencer_tool_settings;
+
} ToolSettings;
/* *************************************************************** */
/* Assorted Scene Data */
/* ------------------------------------------- */
-/* Stats (show in Info header) */
-
-typedef struct bStats {
- /* scene totals for visible layers */
- int totobj, totlamp, totobjsel, totcurve, totmesh, totarmature;
- int totvert, totface;
-} bStats;
-
-/* ------------------------------------------- */
/* Unit Settings */
typedef struct UnitSettings {
- /* Display/Editing unit options for each scene */
- float scale_length; /* maybe have other unit conversions? */
- char system; /* imperial, metric etc */
- char system_rotation; /* not implemented as a proper unit system yet */
- short flag;
+ /* Display/Editing unit options for each scene */
+ /** Maybe have other unit conversions? */
+ float scale_length;
+ /** Imperial, metric etc. */
+ char system;
+ /** Not implemented as a proper unit system yet. */
+ char system_rotation;
+ short flag;
+
+ char length_unit;
+ char mass_unit;
+ char time_unit;
+ char temperature_unit;
+
+ char _pad[4];
} UnitSettings;
/* ------------------------------------------- */
/* Global/Common Physics Settings */
typedef struct PhysicsSettings {
- float gravity[3];
- int flag, quick_cache_step, rt;
+ float gravity[3];
+ int flag, quick_cache_step;
+ char _pad0[4];
} PhysicsSettings;
-/* ------------------------------------------- */
-/* Safe Area options used in Camera View & VSE
+/**
+ * Safe Area options used in Camera View & Sequencer.
*/
typedef struct DisplaySafeAreas {
- /* each value represents the (x,y) margins as a multiplier.
- * 'center' in this context is just the name for a different kind of safe-area */
+ /* each value represents the (x,y) margins as a multiplier.
+ * 'center' in this context is just the name for a different kind of safe-area */
- float title[2]; /* Title Safe */
- float action[2]; /* Image/Graphics Safe */
+ /** Title Safe. */
+ float title[2];
+ /** Image/Graphics Safe. */
+ float action[2];
- /* use for alternate aspect ratio */
- float title_center[2];
- float action_center[2];
+ /* use for alternate aspect ratio */
+ float title_center[2];
+ float action_center[2];
} DisplaySafeAreas;
+/**
+ * Scene Display - used for store scene specific display settings for the 3d view.
+ */
+typedef struct SceneDisplay {
+ /** Light direction for shadows/highlight. */
+ float light_direction[3];
+ float shadow_shift, shadow_focus;
+
+ /** Settings for Cavity Shader. */
+ float matcap_ssao_distance;
+ float matcap_ssao_attenuation;
+ int matcap_ssao_samples;
+
+ /** Method of AA for viewport rendering and image rendering */
+ char viewport_aa;
+ char render_aa;
+ char _pad[6];
+
+ /** OpenGL render engine settings. */
+ View3DShading shading;
+} SceneDisplay;
+
+typedef struct SceneEEVEE {
+ int flag;
+ int gi_diffuse_bounces;
+ int gi_cubemap_resolution;
+ int gi_visibility_resolution;
+ float gi_irradiance_smoothing;
+ float gi_glossy_clamp;
+ float gi_filter_quality;
+
+ float gi_cubemap_draw_size;
+ float gi_irradiance_draw_size;
+
+ int taa_samples;
+ int taa_render_samples;
+ int sss_samples;
+ float sss_jitter_threshold;
+
+ float ssr_quality;
+ float ssr_max_roughness;
+ float ssr_thickness;
+ float ssr_border_fade;
+ float ssr_firefly_fac;
+
+ float volumetric_start;
+ float volumetric_end;
+ int volumetric_tile_size;
+ int volumetric_samples;
+ float volumetric_sample_distribution;
+ float volumetric_light_clamp;
+ int volumetric_shadow_samples;
+
+ float gtao_distance;
+ float gtao_factor;
+ float gtao_quality;
+
+ float bokeh_overblur;
+ float bokeh_max_size;
+ float bokeh_threshold;
+ float bokeh_neighbor_max;
+ float bokeh_denoise_fac;
+
+ float bloom_color[3];
+ float bloom_threshold;
+ float bloom_knee;
+ float bloom_intensity;
+ float bloom_radius;
+ float bloom_clamp;
+
+ int motion_blur_samples DNA_DEPRECATED;
+ int motion_blur_max;
+ int motion_blur_steps;
+ int motion_blur_position;
+ float motion_blur_shutter;
+ float motion_blur_depth_scale;
+
+ int shadow_method DNA_DEPRECATED;
+ int shadow_cube_size;
+ int shadow_cascade_size;
+
+ struct LightCache *light_cache DNA_DEPRECATED;
+ struct LightCache *light_cache_data;
+ char light_cache_info[64];
+
+ float overscan;
+ float light_threshold;
+} SceneEEVEE;
+
+typedef struct SceneGpencil {
+ float smaa_threshold;
+ char _pad[4];
+} SceneGpencil;
+
/* *************************************************************** */
/* Scene ID-Block */
+typedef struct TransformOrientationSlot {
+ int type;
+ int index_custom;
+ char flag;
+ char _pad0[7];
+} TransformOrientationSlot;
+
+/** Indices when used in #Scene.orientation_slots */
+enum {
+ SCE_ORIENT_DEFAULT = 0,
+ SCE_ORIENT_TRANSLATE = 1,
+ SCE_ORIENT_ROTATE = 2,
+ SCE_ORIENT_SCALE = 3,
+};
+
typedef struct Scene {
- ID id;
- struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */
-
- struct Object *camera;
- struct World *world;
-
- struct Scene *set;
-
- ListBase base;
- struct Base *basact; /* active base */
- struct Object *obedit; /* name replaces old G.obedit */
-
- float cursor[3]; /* 3d cursor location */
- float twcent[3]; /* center for transform widget */
- float twmin[3], twmax[3]; /* boundbox of selection for transform widget */
-
- unsigned int lay; /* bitflags for layer visibility */
- int layact; /* active layer */
- unsigned int lay_updated; /* runtime flag, has layer ever been updated since load? */
-
- short flag; /* various settings */
-
- char use_nodes;
- char pad[1];
-
- struct bNodeTree *nodetree;
-
- struct Editing *ed; /* sequence editor data is allocated here */
-
- struct ToolSettings *toolsettings; /* default allocated now */
- struct SceneStats *stats; /* default allocated now */
- struct DisplaySafeAreas safe_areas;
-
- /* migrate or replace? depends on some internal things... */
- /* no, is on the right place (ton) */
- struct RenderData r;
- struct AudioData audio;
-
- ListBase markers;
- ListBase transform_spaces;
-
- void *sound_scene;
- void *playback_handle;
- void *sound_scrub_handle;
- void *speaker_handles;
-
- void *fps_info; /* (runtime) info/cache used for presenting playback framerate info to the user */
-
- /* none of the dependency graph vars is mean to be saved */
- struct Depsgraph *depsgraph;
- void *pad1;
- struct DagForest *theDag;
- short dagflags;
- short recalc; /* recalc = counterpart of ob->recalc */
-
- /* User-Defined KeyingSets */
- int active_keyingset; /* index of the active KeyingSet. first KeyingSet has index 1, 'none' active is 0, 'add new' is -1 */
- ListBase keyingsets; /* KeyingSets for this scene */
-
- /* Game Settings */
- struct GameFraming framing DNA_DEPRECATED; // XXX deprecated since 2.5
- struct GameData gm;
-
- /* Units */
- struct UnitSettings unit;
-
- /* Grease Pencil */
- struct bGPdata *gpd;
-
- /* Physics simulation settings */
- struct PhysicsSettings physics_settings;
-
- /* Movie Tracking */
- struct MovieClip *clip; /* active movie clip */
-
- uint64_t customdata_mask; /* XXX. runtime flag for drawing, actually belongs in the window, only used by BKE_object_handle_update() */
- uint64_t customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */
-
- /* Color Management */
- ColorManagedViewSettings view_settings;
- ColorManagedDisplaySettings display_settings;
- ColorManagedColorspaceSettings sequencer_colorspace_settings;
-
- /* RigidBody simulation world+settings */
- struct RigidBodyWorld *rigidbody_world;
-
- struct PreviewImage *preview;
+ ID id;
+ /** Animation data (must be immediately after id for utilities to use it). */
+ struct AnimData *adt;
+
+ struct Object *camera;
+ struct World *world;
+
+ struct Scene *set;
+
+ ListBase base DNA_DEPRECATED;
+ /** Active base. */
+ struct Base *basact DNA_DEPRECATED;
+ void *_pad1;
+
+ /** 3d cursor location. */
+ View3DCursor cursor;
+
+ /** Bitflags for layer visibility (deprecated). */
+ unsigned int lay DNA_DEPRECATED;
+ /** Active layer (deprecated) */
+ int layact DNA_DEPRECATED;
+ char _pad2[4];
+
+ /** Various settings. */
+ short flag;
+
+ char use_nodes;
+ char _pad3[1];
+
+ struct bNodeTree *nodetree;
+
+ /** Sequence editor data is allocated here. */
+ struct Editing *ed;
+
+ /** Default allocated now. */
+ struct ToolSettings *toolsettings;
+ void *_pad4;
+ struct DisplaySafeAreas safe_areas;
+
+ /* migrate or replace? depends on some internal things... */
+ /* no, is on the right place (ton) */
+ struct RenderData r;
+ struct AudioData audio;
+
+ ListBase markers;
+ ListBase transform_spaces;
+
+ /** First is the [scene, translate, rotate, scale]. */
+ TransformOrientationSlot orientation_slots[4];
+
+ void *sound_scene;
+ void *playback_handle;
+ void *sound_scrub_handle;
+ void *speaker_handles;
+
+ /** (runtime) info/cache used for presenting playback framerate info to the user. */
+ void *fps_info;
+
+ /* None of the dependency graph vars is mean to be saved. */
+ struct GHash *depsgraph_hash;
+ char _pad7[4];
+
+ /* User-Defined KeyingSets */
+ /**
+ * Index of the active KeyingSet.
+ * first KeyingSet has index 1, 'none' active is 0, 'add new' is -1
+ */
+ int active_keyingset;
+ /** KeyingSets for this scene */
+ ListBase keyingsets;
+
+ /* Units */
+ struct UnitSettings unit;
+
+ /** Grease Pencil - Annotations */
+ struct bGPdata *gpd;
+
+ /* Movie Tracking */
+ /** Active movie clip. */
+ struct MovieClip *clip;
+
+ /* Physics simulation settings */
+ struct PhysicsSettings physics_settings;
+
+ void *_pad8;
+ /* XXX. runtime flag for drawing, actually belongs in the window,
+ * only used by BKE_object_handle_update() */
+ struct CustomData_MeshMasks customdata_mask;
+ /* XXX. same as above but for temp operator use (gl renders) */
+ struct CustomData_MeshMasks customdata_mask_modal;
+
+ /* Color Management */
+ ColorManagedViewSettings view_settings;
+ ColorManagedDisplaySettings display_settings;
+ ColorManagedColorspaceSettings sequencer_colorspace_settings;
+
+ /* RigidBody simulation world+settings */
+ struct RigidBodyWorld *rigidbody_world;
+
+ struct PreviewImage *preview;
+
+ ListBase view_layers;
+ /* Not an actual datablock, but memory owned by scene. */
+ struct Collection *master_collection;
+ struct SceneCollection *collection DNA_DEPRECATED;
+
+ /** Settings to be override by workspaces. */
+ IDProperty *layer_properties;
+ void *_pad9;
+
+ struct SceneDisplay display;
+ struct SceneEEVEE eevee;
+ struct SceneGpencil grease_pencil_settings;
} Scene;
/* **************** RENDERDATA ********************* */
-/* flag */
- /* use preview range */
-#define SCER_PRV_RANGE (1<<0)
-#define SCER_LOCK_FRAME_SELECTION (1<<1)
- /* timeline/keyframe jumping - only selected items (on by default) */
-#define SCE_KEYS_NO_SELONLY (1<<2)
-
-/* mode (int now) */
-#define R_OSA 0x0001
-#define R_SHADOW 0x0002
-#define R_GAMMA 0x0004
-#define R_ORTHO 0x0008
-#define R_ENVMAP 0x0010
-#define R_EDGE 0x0020
-#define R_FIELDS 0x0040
-#define R_FIELDSTILL 0x0080
-/*#define R_RADIO 0x0100 */ /* deprecated */
-#define R_BORDER 0x0200
-#define R_PANORAMA 0x0400 /* deprecated as scene option, still used in renderer */
-#define R_CROP 0x0800
-/*#define R_COSMO 0x1000 deprecated */
-#define R_ODDFIELD 0x2000
-#define R_MBLUR 0x4000
- /* unified was here */
-#define R_RAYTRACE 0x10000
- /* R_GAUSS is obsolete, but used to retrieve setting from old files */
-#define R_GAUSS 0x20000
- /* fbuf obsolete... */
-/*#define R_FBUF 0x40000*/
- /* threads obsolete... is there for old files, now use for autodetect threads */
-#define R_THREADS 0x80000
- /* Use the same flag for autothreads */
-#define R_FIXED_THREADS 0x80000
-
-#define R_SPEED 0x100000
-#define R_SSS 0x200000
-#define R_NO_OVERWRITE 0x400000 /* skip existing files */
-#define R_TOUCH 0x800000 /* touch files before rendering */
-#define R_SIMPLIFY 0x1000000
-#define R_EDGE_FRS 0x2000000 /* R_EDGE reserved for Freestyle */
-#define R_PERSISTENT_DATA 0x4000000 /* keep data around for re-render */
-
-/* seq_flag */
-#define R_SEQ_GL_PREV 1
-// #define R_SEQ_GL_REND 2 // UNUSED, opengl render has its own operator now.
-#define R_SEQ_SOLID_TEX 4
-
-/* displaymode */
-
-#define R_OUTPUT_SCREEN 0
-#define R_OUTPUT_AREA 1
-#define R_OUTPUT_WINDOW 2
-#define R_OUTPUT_NONE 3
-/*#define R_OUTPUT_FORKED 4*/
-
-/* filtertype */
-#define R_FILTER_BOX 0
-#define R_FILTER_TENT 1
-#define R_FILTER_QUAD 2
-#define R_FILTER_CUBIC 3
-#define R_FILTER_CATROM 4
-#define R_FILTER_GAUSS 5
-#define R_FILTER_MITCH 6
-#define R_FILTER_FAST_GAUSS 7 /* note, this is only used for nodes at the moment */
-
-/* raytrace structure */
-#define R_RAYSTRUCTURE_AUTO 0
-#define R_RAYSTRUCTURE_OCTREE 1
-#define R_RAYSTRUCTURE_BLIBVH 2 /* removed */
-#define R_RAYSTRUCTURE_VBVH 3
-#define R_RAYSTRUCTURE_SIMD_SVBVH 4 /* needs SIMD */
-#define R_RAYSTRUCTURE_SIMD_QBVH 5 /* needs SIMD */
-
-/* raytrace_options */
-#define R_RAYTRACE_USE_LOCAL_COORDS 0x0001
-#define R_RAYTRACE_USE_INSTANCES 0x0002
-
-/* scemode (int now) */
-#define R_DOSEQ 0x0001
-#define R_BG_RENDER 0x0002
- /* passepartout is camera option now, keep this for backward compatibility */
-#define R_PASSEPARTOUT 0x0004
-#define R_BUTS_PREVIEW 0x0008
-#define R_EXTENSION 0x0010
-#define R_MATNODE_PREVIEW 0x0020
-#define R_DOCOMP 0x0040
-#define R_COMP_CROP 0x0080
-#define R_FREE_IMAGE 0x0100
-#define R_SINGLE_LAYER 0x0200
-#define R_EXR_TILE_FILE 0x0400
-#define R_COMP_FREE 0x0800
-#define R_NO_IMAGE_LOAD 0x1000
-#define R_NO_TEX 0x2000
-#define R_NO_FRAME_UPDATE 0x4000
-#define R_FULL_SAMPLE 0x8000
-/* #define R_DEPRECATED 0x10000 */
-/* #define R_RECURS_PROTECTION 0x20000 */
-#define R_TEXNODE_PREVIEW 0x40000
-#define R_VIEWPORT_PREVIEW 0x80000
-#define R_EXR_CACHE_FILE 0x100000
-#define R_MULTIVIEW 0x200000
-
-/* r->stamp */
-#define R_STAMP_TIME 0x0001
-#define R_STAMP_FRAME 0x0002
-#define R_STAMP_DATE 0x0004
-#define R_STAMP_CAMERA 0x0008
-#define R_STAMP_SCENE 0x0010
-#define R_STAMP_NOTE 0x0020
-#define R_STAMP_DRAW 0x0040 /* draw in the image */
-#define R_STAMP_MARKER 0x0080
-#define R_STAMP_FILENAME 0x0100
-#define R_STAMP_SEQSTRIP 0x0200
-#define R_STAMP_RENDERTIME 0x0400
-#define R_STAMP_CAMERALENS 0x0800
-#define R_STAMP_STRIPMETA 0x1000
-#define R_STAMP_ALL (R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_CAMERA|R_STAMP_SCENE| \
- R_STAMP_NOTE|R_STAMP_MARKER|R_STAMP_FILENAME|R_STAMP_SEQSTRIP| \
- R_STAMP_RENDERTIME|R_STAMP_CAMERALENS)
-
-/* alphamode */
-#define R_ADDSKY 0
-#define R_ALPHAPREMUL 1
-/*#define R_ALPHAKEY 2*/ /* deprecated, shouldn't be used */
-
-/* color_mgt_flag */
+/** #RenderData.flag */
+/* use preview range */
+#define SCER_PRV_RANGE (1 << 0)
+#define SCER_LOCK_FRAME_SELECTION (1 << 1)
+/* show/use subframes (for checking motion blur) */
+#define SCER_SHOW_SUBFRAME (1 << 3)
+
+/** #RenderData.mode */
+#define R_MODE_UNUSED_0 (1 << 0) /* dirty */
+#define R_MODE_UNUSED_1 (1 << 1) /* cleared */
+#define R_MODE_UNUSED_2 (1 << 2) /* cleared */
+#define R_MODE_UNUSED_3 (1 << 3) /* cleared */
+#define R_MODE_UNUSED_4 (1 << 4) /* cleared */
+#define R_MODE_UNUSED_5 (1 << 5) /* cleared */
+#define R_MODE_UNUSED_6 (1 << 6) /* cleared */
+#define R_MODE_UNUSED_7 (1 << 7) /* cleared */
+#define R_MODE_UNUSED_8 (1 << 8) /* cleared */
+#define R_BORDER (1 << 9)
+#define R_MODE_UNUSED_10 (1 << 10) /* cleared */
+#define R_CROP (1 << 11)
+/* Disable camera switching: runtime (DURIAN_CAMERA_SWITCH) */
+#define R_NO_CAMERA_SWITCH (1 << 12)
+#define R_MODE_UNUSED_13 (1 << 13) /* cleared */
+#define R_MBLUR (1 << 14)
+/* unified was here */
+#define R_MODE_UNUSED_16 (1 << 16) /* cleared */
+#define R_MODE_UNUSED_17 (1 << 17) /* cleared */
+#define R_MODE_UNUSED_18 (1 << 18) /* cleared */
+#define R_MODE_UNUSED_19 (1 << 19) /* cleared */
+#define R_FIXED_THREADS (1 << 19)
+
+#define R_MODE_UNUSED_20 (1 << 20) /* cleared */
+#define R_MODE_UNUSED_21 (1 << 21) /* cleared */
+#define R_NO_OVERWRITE (1 << 22) /* skip existing files */
+#define R_TOUCH (1 << 23) /* touch files before rendering */
+#define R_SIMPLIFY (1 << 24)
+#define R_EDGE_FRS (1 << 25) /* R_EDGE reserved for Freestyle */
+#define R_PERSISTENT_DATA (1 << 26) /* keep data around for re-render */
+#define R_MODE_UNUSED_27 (1 << 27) /* cleared */
+
+/** #RenderData.seq_flag */
enum {
- R_COLOR_MANAGEMENT = (1 << 0), /* deprecated, should only be used in versioning code only */
- /*R_COLOR_MANAGEMENT_PREDIVIDE = (1 << 1)*/ /* deprecated, shouldn't be used */
+ R_SEQ_UNUSED_0 = (1 << 0), /* cleared */
+ R_SEQ_UNUSED_1 = (1 << 1), /* cleared */
+ R_SEQ_UNUSED_2 = (1 << 2), /* cleared */
+ R_SEQ_UNUSED_3 = (1 << 3), /* cleared */
+ R_SEQ_UNUSED_4 = (1 << 4), /* cleared */
+ R_SEQ_OVERRIDE_SCENE_SETTINGS = (1 << 5),
};
-#ifdef DNA_DEPRECATED
-/* subimtype, flag options for imtype */
+/** #RenderData.filtertype (used for nodes) */
+#define R_FILTER_BOX 0
+#define R_FILTER_TENT 1
+#define R_FILTER_QUAD 2
+#define R_FILTER_CUBIC 3
+#define R_FILTER_CATROM 4
+#define R_FILTER_GAUSS 5
+#define R_FILTER_MITCH 6
+#define R_FILTER_FAST_GAUSS 7
+
+/** #RenderData.scemode */
+#define R_DOSEQ (1 << 0)
+#define R_BG_RENDER (1 << 1)
+/* passepartout is camera option now, keep this for backward compatibility */
+#define R_PASSEPARTOUT (1 << 2)
+#define R_BUTS_PREVIEW (1 << 3)
+#define R_EXTENSION (1 << 4)
+#define R_MATNODE_PREVIEW (1 << 5)
+#define R_DOCOMP (1 << 6)
+#define R_COMP_CROP (1 << 7)
+#define R_SCEMODE_UNUSED_8 (1 << 8) /* cleared */
+#define R_SINGLE_LAYER (1 << 9)
+#define R_SCEMODE_UNUSED_10 (1 << 10) /* cleared */
+#define R_SCEMODE_UNUSED_11 (1 << 11) /* cleared */
+#define R_NO_IMAGE_LOAD (1 << 12)
+#define R_SCEMODE_UNUSED_13 (1 << 13) /* cleared */
+#define R_NO_FRAME_UPDATE (1 << 14)
+#define R_SCEMODE_UNUSED_15 (1 << 15) /* cleared */
+#define R_SCEMODE_UNUSED_16 (1 << 16) /* cleared */
+#define R_SCEMODE_UNUSED_17 (1 << 17) /* cleared */
+#define R_TEXNODE_PREVIEW (1 << 18)
+#define R_SCEMODE_UNUSED_19 (1 << 19) /* cleared */
+#define R_EXR_CACHE_FILE (1 << 20)
+#define R_MULTIVIEW (1 << 21)
+
+/** #RenderData.stamp */
+#define R_STAMP_TIME (1 << 0)
+#define R_STAMP_FRAME (1 << 1)
+#define R_STAMP_DATE (1 << 2)
+#define R_STAMP_CAMERA (1 << 3)
+#define R_STAMP_SCENE (1 << 4)
+#define R_STAMP_NOTE (1 << 5)
+#define R_STAMP_DRAW (1 << 6) /* draw in the image */
+#define R_STAMP_MARKER (1 << 7)
+#define R_STAMP_FILENAME (1 << 8)
+#define R_STAMP_SEQSTRIP (1 << 9)
+#define R_STAMP_RENDERTIME (1 << 10)
+#define R_STAMP_CAMERALENS (1 << 11)
+#define R_STAMP_STRIPMETA (1 << 12)
+#define R_STAMP_MEMORY (1 << 13)
+#define R_STAMP_HIDE_LABELS (1 << 14)
+#define R_STAMP_FRAME_RANGE (1 << 15)
+#define R_STAMP_HOSTNAME (1 << 16)
+#define R_STAMP_ALL \
+ (R_STAMP_TIME | R_STAMP_FRAME | R_STAMP_DATE | R_STAMP_CAMERA | R_STAMP_SCENE | R_STAMP_NOTE | \
+ R_STAMP_MARKER | R_STAMP_FILENAME | R_STAMP_SEQSTRIP | R_STAMP_RENDERTIME | \
+ R_STAMP_CAMERALENS | R_STAMP_MEMORY | R_STAMP_HIDE_LABELS | R_STAMP_FRAME_RANGE | \
+ R_STAMP_HOSTNAME)
+
+/** #RenderData.alphamode */
enum {
- R_OPENEXR_HALF = 1, /*deprecated*/
- R_OPENEXR_ZBUF = 2, /*deprecated*/
- R_PREVIEW_JPG = 4, /*deprecated*/
- R_CINEON_LOG = 8, /*deprecated*/
- R_TIFF_16BIT = 16, /*deprecated*/
-
- R_JPEG2K_12BIT = 32, /* Jpeg2000 */ /*deprecated*/
- R_JPEG2K_16BIT = 64, /*deprecated*/
- R_JPEG2K_YCC = 128, /* when disabled use RGB */ /*deprecated*/
- R_JPEG2K_CINE_PRESET = 256, /*deprecated*/
- R_JPEG2K_CINE_48FPS = 512, /*deprecated*/
+ R_ADDSKY = 0,
+ R_ALPHAPREMUL = 1,
+};
+
+/** #RenderData.color_mgt_flag */
+enum {
+ /** deprecated, should only be used in versioning code only */
+ R_COLOR_MANAGEMENT = (1 << 0),
+ R_COLOR_MANAGEMENT_UNUSED_1 = (1 << 1),
};
-#endif
/* bake_mode: same as RE_BAKE_xxx defines */
-/* bake_flag: */
-#define R_BAKE_CLEAR 1
-#define R_BAKE_OSA 2
-#define R_BAKE_TO_ACTIVE 4
-#define R_BAKE_NORMALIZE 8
-#define R_BAKE_MULTIRES 16
-#define R_BAKE_LORES_MESH 32
-#define R_BAKE_VCOL 64
-#define R_BAKE_USERSCALE 128
-#define R_BAKE_CAGE 256
-#define R_BAKE_SPLIT_MAT 512
-#define R_BAKE_AUTO_NAME 1024
-
-/* bake_normal_space */
-#define R_BAKE_SPACE_CAMERA 0
-#define R_BAKE_SPACE_WORLD 1
-#define R_BAKE_SPACE_OBJECT 2
+/** #RenderData.bake_flag */
+#define R_BAKE_CLEAR (1 << 0)
+/* #define R_BAKE_OSA (1 << 1) */ /* deprecated */
+#define R_BAKE_TO_ACTIVE (1 << 2)
+/* #define R_BAKE_NORMALIZE (1 << 3) */ /* deprecated */
+#define R_BAKE_MULTIRES (1 << 4)
+#define R_BAKE_LORES_MESH (1 << 5)
+/* #define R_BAKE_VCOL (1 << 6) */ /* deprecated */
+#define R_BAKE_USERSCALE (1 << 7)
+#define R_BAKE_CAGE (1 << 8)
+#define R_BAKE_SPLIT_MAT (1 << 9)
+#define R_BAKE_AUTO_NAME (1 << 10)
+
+/** #RenderData.bake_normal_space */
+#define R_BAKE_SPACE_CAMERA 0
+#define R_BAKE_SPACE_WORLD 1
+#define R_BAKE_SPACE_OBJECT 2
#define R_BAKE_SPACE_TANGENT 3
-/* simplify_flag */
-#define R_SIMPLE_NO_TRIANGULATE 1
-
-/* line_thickness_mode */
+/** #RenderData.line_thickness_mode */
#define R_LINE_THICKNESS_ABSOLUTE 1
#define R_LINE_THICKNESS_RELATIVE 2
/* sequencer seq_prev_type seq_rend_type */
-/* scene->r.engine (scene.c) */
-extern const char *RE_engine_id_BLENDER_RENDER;
-extern const char *RE_engine_id_BLENDER_GAME;
+/** #RenderData.engine (scene.c) */
+extern const char *RE_engine_id_BLENDER_EEVEE;
+extern const char *RE_engine_id_BLENDER_WORKBENCH;
extern const char *RE_engine_id_CYCLES;
/* **************** SCENE ********************* */
+/* note that much higher maxframes give imprecise sub-frames, see: T46859 */
+/* Current precision is 16 for the sub-frames closer to MAXFRAME. */
+
/* for general use */
-#define MAXFRAME 300000
-#define MAXFRAMEF 300000.0f
+#define MAXFRAME 1048574
+#define MAXFRAMEF 1048574.0f
-#define MINFRAME 0
-#define MINFRAMEF 0.0f
+#define MINFRAME 0
+#define MINFRAMEF 0.0f
/* (minimum frame number for current-frame) */
-#define MINAFRAME -300000
-#define MINAFRAMEF -300000.0f
-
-/* depricate this! */
-#define TESTBASE(v3d, base) ( \
- ((base)->flag & SELECT) && \
- ((base)->lay & v3d->lay) && \
- (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0))
-#define TESTBASELIB(v3d, base) ( \
- ((base)->flag & SELECT) && \
- ((base)->lay & v3d->lay) && \
- ((base)->object->id.lib == NULL) && \
- (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0))
-#define TESTBASELIB_BGMODE(v3d, scene, base) ( \
- ((base)->flag & SELECT) && \
- ((base)->lay & (v3d ? v3d->lay : scene->lay)) && \
- ((base)->object->id.lib == NULL) && \
- (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0))
-#define BASE_EDITABLE_BGMODE(v3d, scene, base) ( \
- ((base)->lay & (v3d ? v3d->lay : scene->lay)) && \
- ((base)->object->id.lib == NULL) && \
- (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0))
-#define BASE_SELECTABLE(v3d, base) ( \
- (base->lay & v3d->lay) && \
- (base->object->restrictflag & (OB_RESTRICT_SELECT | OB_RESTRICT_VIEW)) == 0)
-#define BASE_VISIBLE(v3d, base) ( \
- (base->lay & v3d->lay) && \
- (base->object->restrictflag & OB_RESTRICT_VIEW) == 0)
-#define BASE_VISIBLE_BGMODE(v3d, scene, base) ( \
- (base->lay & (v3d ? v3d->lay : scene->lay)) && \
- (base->object->restrictflag & OB_RESTRICT_VIEW) == 0)
-
-#define FIRSTBASE scene->base.first
-#define LASTBASE scene->base.last
-#define BASACT (scene->basact)
-#define OBACT (BASACT ? BASACT->object: NULL)
+#define MINAFRAME -1048574
+#define MINAFRAMEF -1048574.0f
+
+#define BASE_VISIBLE(v3d, base) BKE_base_is_visible(v3d, base)
+#define BASE_SELECTABLE(v3d, base) \
+ (BASE_VISIBLE(v3d, base) && \
+ ((v3d == NULL) || (((1 << (base)->object->type) & (v3d)->object_type_exclude_select) == 0)) && \
+ (((base)->flag & BASE_SELECTABLE) != 0))
+#define BASE_SELECTED(v3d, base) (BASE_VISIBLE(v3d, base) && (((base)->flag & BASE_SELECTED) != 0))
+#define BASE_EDITABLE(v3d, base) (BASE_VISIBLE(v3d, base) && ((base)->object->id.lib == NULL))
+#define BASE_SELECTED_EDITABLE(v3d, base) \
+ (BASE_EDITABLE(v3d, base) && (((base)->flag & BASE_SELECTED) != 0))
+
+/* deprecate this! */
+#define FIRSTBASE(_view_layer) ((_view_layer)->object_bases.first)
+#define LASTBASE(_view_layer) ((_view_layer)->object_bases.last)
+#define BASACT(_view_layer) ((_view_layer)->basact)
+#define OBACT(_view_layer) (BASACT(_view_layer) ? BASACT(_view_layer)->object : NULL)
+
+#define OBEDIT_FROM_WORKSPACE(workspace, _view_layer) \
+ (((workspace)->object_mode & OD_MODE_EDIT) ? OBACT(_view_layer) : NULL)
+#define OBEDIT_FROM_OBACT(ob) ((ob) ? (((ob)->mode & OB_MODE_EDIT) ? ob : NULL) : NULL)
+#define OBPOSE_FROM_OBACT(ob) ((ob) ? (((ob)->mode & OB_MODE_POSE) ? ob : NULL) : NULL)
+#define OBWEIGHTPAINT_FROM_OBACT(ob) \
+ ((ob) ? (((ob)->mode & OB_MODE_WEIGHT_PAINT) ? ob : NULL) : NULL)
+#define OBEDIT_FROM_VIEW_LAYER(view_layer) OBEDIT_FROM_OBACT(OBACT(view_layer))
#define V3D_CAMERA_LOCAL(v3d) ((!(v3d)->scenelock && (v3d)->camera) ? (v3d)->camera : NULL)
-#define V3D_CAMERA_SCENE(scene, v3d) ((!(v3d)->scenelock && (v3d)->camera) ? (v3d)->camera : (scene)->camera)
-
-#define CFRA (scene->r.cfra)
-#define SUBFRA (scene->r.subframe)
-#define SFRA (scene->r.sfra)
-#define EFRA (scene->r.efra)
-#define PRVRANGEON (scene->r.flag & SCER_PRV_RANGE)
-#define PSFRA ((PRVRANGEON) ? (scene->r.psfra) : (scene->r.sfra))
-#define PEFRA ((PRVRANGEON) ? (scene->r.pefra) : (scene->r.efra))
-#define FRA2TIME(a) ((((double) scene->r.frs_sec_base) * (double)(a)) / (double)scene->r.frs_sec)
-#define TIME2FRA(a) ((((double) scene->r.frs_sec) * (double)(a)) / (double)scene->r.frs_sec_base)
-#define FPS (((double) scene->r.frs_sec) / (double)scene->r.frs_sec_base)
-
-/* base->flag is in DNA_object_types.h */
-
-/* toolsettings->snap_flag */
-#define SCE_SNAP 1
-#define SCE_SNAP_ROTATE 2
-#define SCE_SNAP_PEEL_OBJECT 4
-#define SCE_SNAP_PROJECT 8
-#define SCE_SNAP_NO_SELF 16
-#define SCE_SNAP_ABS_GRID 32
-
-/* toolsettings->snap_target */
-#define SCE_SNAP_TARGET_CLOSEST 0
-#define SCE_SNAP_TARGET_CENTER 1
-#define SCE_SNAP_TARGET_MEDIAN 2
-#define SCE_SNAP_TARGET_ACTIVE 3
-/* toolsettings->snap_mode */
-#define SCE_SNAP_MODE_INCREMENT 0
-#define SCE_SNAP_MODE_VERTEX 1
-#define SCE_SNAP_MODE_EDGE 2
-#define SCE_SNAP_MODE_FACE 3
-#define SCE_SNAP_MODE_VOLUME 4
-#define SCE_SNAP_MODE_NODE_X 5
-#define SCE_SNAP_MODE_NODE_Y 6
-#define SCE_SNAP_MODE_NODE_XY 7
-#define SCE_SNAP_MODE_GRID 8
-
-/* toolsettings->selectmode */
-#define SCE_SELECT_VERTEX 1 /* for mesh */
-#define SCE_SELECT_EDGE 2
-#define SCE_SELECT_FACE 4
-
-/* toolsettings->statvis->type */
-#define SCE_STATVIS_OVERHANG 0
-#define SCE_STATVIS_THICKNESS 1
-#define SCE_STATVIS_INTERSECT 2
-#define SCE_STATVIS_DISTORT 3
-#define SCE_STATVIS_SHARP 4
-
-/* toolsettings->particle.selectmode for particles */
-#define SCE_SELECT_PATH 1
-#define SCE_SELECT_POINT 2
-#define SCE_SELECT_END 4
-
-/* sce->recalc (now in use by previewrender) */
-#define SCE_PRV_CHANGED 1
-
-/* toolsettings->prop_mode (proportional falloff) */
-#define PROP_SMOOTH 0
-#define PROP_SPHERE 1
-#define PROP_ROOT 2
-#define PROP_SHARP 3
-#define PROP_LIN 4
-#define PROP_CONST 5
-#define PROP_RANDOM 6
-#define PROP_INVSQUARE 7
-#define PROP_MODE_MAX 8
-
-/* toolsettings->proportional */
-#define PROP_EDIT_OFF 0
-#define PROP_EDIT_ON 1
-#define PROP_EDIT_CONNECTED 2
-#define PROP_EDIT_PROJECTED 3
-
-/* toolsettings->weightuser */
+#define V3D_CAMERA_SCENE(scene, v3d) \
+ ((!(v3d)->scenelock && (v3d)->camera) ? (v3d)->camera : (scene)->camera)
+
+#define CFRA (scene->r.cfra)
+#define SUBFRA (scene->r.subframe)
+#define SFRA (scene->r.sfra)
+#define EFRA (scene->r.efra)
+#define PRVRANGEON (scene->r.flag & SCER_PRV_RANGE)
+#define PSFRA ((PRVRANGEON) ? (scene->r.psfra) : (scene->r.sfra))
+#define PEFRA ((PRVRANGEON) ? (scene->r.pefra) : (scene->r.efra))
+#define FRA2TIME(a) ((((double)scene->r.frs_sec_base) * (double)(a)) / (double)scene->r.frs_sec)
+#define TIME2FRA(a) ((((double)scene->r.frs_sec) * (double)(a)) / (double)scene->r.frs_sec_base)
+#define FPS (((double)scene->r.frs_sec) / (double)scene->r.frs_sec_base)
+
+/* Base.flag is in DNA_object_types.h */
+
+/** #ToolSettings.transform_flag */
enum {
- OB_DRAW_GROUPUSER_NONE = 0,
- OB_DRAW_GROUPUSER_ACTIVE = 1,
- OB_DRAW_GROUPUSER_ALL = 2
+ SCE_XFORM_AXIS_ALIGN = (1 << 0),
+ SCE_XFORM_DATA_ORIGIN = (1 << 1),
+ SCE_XFORM_SKIP_CHILDREN = (1 << 2),
};
-/* toolsettings->vgroupsubset */
-/* object_vgroup.c */
-typedef enum eVGroupSelect {
- WT_VGROUP_ALL = 0,
- WT_VGROUP_ACTIVE = 1,
- WT_VGROUP_BONE_SELECT = 2,
- WT_VGROUP_BONE_DEFORM = 3,
- WT_VGROUP_BONE_DEFORM_OFF = 4
-} eVGroupSelect;
+/** #ToolSettings.object_flag */
+enum {
+ SCE_OBJECT_MODE_LOCK = (1 << 0),
+};
-#define WT_VGROUP_MASK_ALL \
- ((1 << WT_VGROUP_ACTIVE) | \
- (1 << WT_VGROUP_BONE_SELECT) | \
- (1 << WT_VGROUP_BONE_DEFORM) | \
- (1 << WT_VGROUP_BONE_DEFORM_OFF) | \
- (1 << WT_VGROUP_ALL))
+/** #ToolSettings.workspace_tool_flag */
+enum {
+ SCE_WORKSPACE_TOOL_FALLBACK = 0,
+ SCE_WORKSPACE_TOOL_DEFAULT = 1,
+};
+/** #ToolSettings.snap_flag */
+#define SCE_SNAP (1 << 0)
+#define SCE_SNAP_ROTATE (1 << 1)
+#define SCE_SNAP_PEEL_OBJECT (1 << 2)
+#define SCE_SNAP_PROJECT (1 << 3)
+#define SCE_SNAP_NO_SELF (1 << 4)
+#define SCE_SNAP_ABS_GRID (1 << 5)
+#define SCE_SNAP_BACKFACE_CULLING (1 << 6)
+#define SCE_SNAP_SEQ (1 << 7)
+
+/** #ToolSettings.snap_target */
+#define SCE_SNAP_TARGET_CLOSEST 0
+#define SCE_SNAP_TARGET_CENTER 1
+#define SCE_SNAP_TARGET_MEDIAN 2
+#define SCE_SNAP_TARGET_ACTIVE 3
+
+/** #ToolSettings.snap_mode */
+#define SCE_SNAP_MODE_VERTEX (1 << 0)
+#define SCE_SNAP_MODE_EDGE (1 << 1)
+#define SCE_SNAP_MODE_FACE (1 << 2)
+#define SCE_SNAP_MODE_VOLUME (1 << 3)
+#define SCE_SNAP_MODE_EDGE_MIDPOINT (1 << 4)
+#define SCE_SNAP_MODE_EDGE_PERPENDICULAR (1 << 5)
+#define SCE_SNAP_MODE_GEOM \
+ (SCE_SNAP_MODE_VERTEX | SCE_SNAP_MODE_EDGE | SCE_SNAP_MODE_FACE | \
+ SCE_SNAP_MODE_EDGE_PERPENDICULAR | SCE_SNAP_MODE_EDGE_MIDPOINT)
+
+/** #SequencerToolSettings.snap_mode */
+#define SEQ_SNAP_TO_STRIPS (1 << 0)
+#define SEQ_SNAP_TO_CURRENT_FRAME (1 << 1)
+#define SEQ_SNAP_TO_STRIP_HOLD (1 << 2)
+
+/** #SequencerToolSettings.snap_flag */
+#define SEQ_SNAP_IGNORE_MUTED (1 << 0)
+#define SEQ_SNAP_IGNORE_SOUND (1 << 1)
+#define SEQ_SNAP_CURRENT_FRAME_TO_STRIPS (1 << 2)
+
+/** #ToolSettings.snap_node_mode */
+#define SCE_SNAP_MODE_NODE_X (1 << 0)
+#define SCE_SNAP_MODE_NODE_Y (1 << 1)
+
+/**
+ * #ToolSettings.snap_mode and #ToolSettings.snap_node_mode
+ */
+#define SCE_SNAP_MODE_INCREMENT (1 << 6)
+#define SCE_SNAP_MODE_GRID (1 << 7)
-/* sce->flag */
-#define SCE_DS_SELECTED (1<<0)
-#define SCE_DS_COLLAPSED (1<<1)
-#define SCE_NLA_EDIT_ON (1<<2)
-#define SCE_FRAME_DROP (1<<3)
+/** #ToolSettings.snap_transform_mode_flag */
+enum {
+ SCE_SNAP_TRANSFORM_MODE_TRANSLATE = (1 << 0),
+ SCE_SNAP_TRANSFORM_MODE_ROTATE = (1 << 1),
+ SCE_SNAP_TRANSFORM_MODE_SCALE = (1 << 2),
+};
+/** #ToolSettings.selectmode */
+#define SCE_SELECT_VERTEX (1 << 0) /* for mesh */
+#define SCE_SELECT_EDGE (1 << 1)
+#define SCE_SELECT_FACE (1 << 2)
+
+/** #MeshStatVis.type */
+#define SCE_STATVIS_OVERHANG 0
+#define SCE_STATVIS_THICKNESS 1
+#define SCE_STATVIS_INTERSECT 2
+#define SCE_STATVIS_DISTORT 3
+#define SCE_STATVIS_SHARP 4
+
+/** #ParticleEditSettings.selectmode for particles */
+#define SCE_SELECT_PATH (1 << 0)
+#define SCE_SELECT_POINT (1 << 1)
+#define SCE_SELECT_END (1 << 2)
+
+/** #ToolSettings.prop_mode (proportional falloff) */
+#define PROP_SMOOTH 0
+#define PROP_SPHERE 1
+#define PROP_ROOT 2
+#define PROP_SHARP 3
+#define PROP_LIN 4
+#define PROP_CONST 5
+#define PROP_RANDOM 6
+#define PROP_INVSQUARE 7
+#define PROP_MODE_MAX 8
+
+/** #ToolSettings.proportional_edit & similarly named members. */
+enum {
+ PROP_EDIT_USE = (1 << 0),
+ PROP_EDIT_CONNECTED = (1 << 1),
+ PROP_EDIT_PROJECTED = (1 << 2),
+};
- /* return flag BKE_scene_base_iter_next functions */
-/* #define F_ERROR -1 */ /* UNUSED */
-#define F_START 0
-#define F_SCENE 1
-#define F_DUPLI 3
+/** #ToolSettings.weightuser */
+enum {
+ OB_DRAW_GROUPUSER_NONE = 0,
+ OB_DRAW_GROUPUSER_ACTIVE = 1,
+ OB_DRAW_GROUPUSER_ALL = 2,
+};
-/* audio->flag */
-#define AUDIO_MUTE (1<<0)
-#define AUDIO_SYNC (1<<1)
-#define AUDIO_SCRUB (1<<2)
-#define AUDIO_VOLUME_ANIMATED (1<<3)
+/* object_vgroup.c */
+/** #ToolSettings.vgroupsubset */
+typedef enum eVGroupSelect {
+ WT_VGROUP_ALL = 0,
+ WT_VGROUP_ACTIVE = 1,
+ WT_VGROUP_BONE_SELECT = 2,
+ WT_VGROUP_BONE_DEFORM = 3,
+ WT_VGROUP_BONE_DEFORM_OFF = 4,
+} eVGroupSelect;
+#define WT_VGROUP_MASK_ALL \
+ ((1 << WT_VGROUP_ACTIVE) | (1 << WT_VGROUP_BONE_SELECT) | (1 << WT_VGROUP_BONE_DEFORM) | \
+ (1 << WT_VGROUP_BONE_DEFORM_OFF) | (1 << WT_VGROUP_ALL))
+
+/** #Scene.flag */
+#define SCE_DS_SELECTED (1 << 0)
+#define SCE_DS_COLLAPSED (1 << 1)
+#define SCE_NLA_EDIT_ON (1 << 2)
+#define SCE_FRAME_DROP (1 << 3)
+#define SCE_KEYS_NO_SELONLY (1 << 4)
+#define SCE_READFILE_LIBLINK_NEED_SETSCENE_CHECK (1 << 5)
+
+/* return flag BKE_scene_base_iter_next functions */
+/* #define F_ERROR -1 */ /* UNUSED */
+#define F_START 0
+#define F_SCENE 1
+#define F_DUPLI 3
+
+/** #AudioData.flag */
+#define AUDIO_MUTE (1 << 0)
+#define AUDIO_SYNC (1 << 1)
+#define AUDIO_SCRUB (1 << 2)
+#define AUDIO_VOLUME_ANIMATED (1 << 3)
+
+/** #FFMpegCodecData.flags */
enum {
-#ifdef DNA_DEPRECATED
- FFMPEG_MULTIPLEX_AUDIO = 1, /* deprecated, you can choose none as audiocodec now */
+#ifdef DNA_DEPRECATED_ALLOW
+ FFMPEG_MULTIPLEX_AUDIO = (1 << 0), /* deprecated, you can choose none as audiocodec now */
#endif
- FFMPEG_AUTOSPLIT_OUTPUT = 2,
- FFMPEG_LOSSLESS_OUTPUT = 4,
+ FFMPEG_AUTOSPLIT_OUTPUT = (1 << 1),
+ FFMPEG_LOSSLESS_OUTPUT = (1 << 2),
+ FFMPEG_USE_MAX_B_FRAMES = (1 << 3),
};
-/* Paint.flags */
-typedef enum {
- PAINT_SHOW_BRUSH = (1 << 0),
- PAINT_FAST_NAVIGATE = (1 << 1),
- PAINT_SHOW_BRUSH_ON_SURFACE = (1 << 2),
- PAINT_USE_CAVITY_MASK = (1 << 3)
-} PaintFlags;
-
-/* Paint.symmetry_flags
- * (for now just a duplicate of sculpt symmetry flags) */
-typedef enum SymmetryFlags {
- PAINT_SYMM_X = (1 << 0),
- PAINT_SYMM_Y = (1 << 1),
- PAINT_SYMM_Z = (1 << 2),
- PAINT_SYMMETRY_FEATHER = (1 << 3),
- PAINT_TILE_X = (1 << 4),
- PAINT_TILE_Y = (1 << 5),
- PAINT_TILE_Z = (1 << 6),
-} SymmetryFlags;
+/** #Paint.flags */
+typedef enum ePaintFlags {
+ PAINT_SHOW_BRUSH = (1 << 0),
+ PAINT_FAST_NAVIGATE = (1 << 1),
+ PAINT_SHOW_BRUSH_ON_SURFACE = (1 << 2),
+ PAINT_USE_CAVITY_MASK = (1 << 3),
+ PAINT_SCULPT_DELAY_UPDATES = (1 << 4),
+} ePaintFlags;
+
+/**
+ * #Paint.symmetry_flags
+ * (for now just a duplicate of sculpt symmetry flags).
+ */
+typedef enum ePaintSymmetryFlags {
+ PAINT_SYMM_X = (1 << 0),
+ PAINT_SYMM_Y = (1 << 1),
+ PAINT_SYMM_Z = (1 << 2),
+ PAINT_SYMMETRY_FEATHER = (1 << 3),
+ PAINT_TILE_X = (1 << 4),
+ PAINT_TILE_Y = (1 << 5),
+ PAINT_TILE_Z = (1 << 6),
+} ePaintSymmetryFlags;
#define PAINT_SYMM_AXIS_ALL (PAINT_SYMM_X | PAINT_SYMM_Y | PAINT_SYMM_Z)
-/* Sculpt.flags */
-/* These can eventually be moved to paint flags? */
-typedef enum SculptFlags {
-#ifdef DNA_DEPRECATED
- /* deprecated, part of paint struct symmetry_flags now */
- SCULPT_SYMM_X = (1 << 0),
- SCULPT_SYMM_Y = (1 << 1),
- SCULPT_SYMM_Z = (1 << 2),
-#endif
+/**
+ * #Sculpt.flags
+ * These can eventually be moved to paint flags?
+ */
+typedef enum eSculptFlags {
+ SCULPT_FLAG_UNUSED_0 = (1 << 0), /* cleared */
+ SCULPT_FLAG_UNUSED_1 = (1 << 1), /* cleared */
+ SCULPT_FLAG_UNUSED_2 = (1 << 2), /* cleared */
+
+ SCULPT_LOCK_X = (1 << 3),
+ SCULPT_LOCK_Y = (1 << 4),
+ SCULPT_LOCK_Z = (1 << 5),
+
+ SCULPT_FLAG_UNUSED_6 = (1 << 6), /* cleared */
+
+ SCULPT_FLAG_UNUSED_7 = (1 << 7), /* cleared */
+ SCULPT_ONLY_DEFORM = (1 << 8),
+ // SCULPT_SHOW_DIFFUSE = (1 << 9), /* deprecated */
- SCULPT_LOCK_X = (1 << 3),
- SCULPT_LOCK_Y = (1 << 4),
- SCULPT_LOCK_Z = (1 << 5),
- /* deprecated, part of paint struct symmetry_flags now */
- SCULPT_SYMMETRY_FEATHER = (1 << 6),
+ /* If set, the mesh will be drawn with smooth-shading in
+ * dynamic-topology mode */
+ SCULPT_DYNTOPO_SMOOTH_SHADING = (1 << 10),
- SCULPT_USE_OPENMP = (1 << 7),
- SCULPT_ONLY_DEFORM = (1 << 8),
- SCULPT_SHOW_DIFFUSE = (1 << 9),
+ /* If set, dynamic-topology brushes will subdivide short edges */
+ SCULPT_DYNTOPO_SUBDIVIDE = (1 << 12),
+ /* If set, dynamic-topology brushes will collapse short edges */
+ SCULPT_DYNTOPO_COLLAPSE = (1 << 11),
- /* If set, the mesh will be drawn with smooth-shading in
- * dynamic-topology mode */
- SCULPT_DYNTOPO_SMOOTH_SHADING = (1 << 10),
+ /* If set, dynamic-topology detail size will be constant in object space */
+ SCULPT_DYNTOPO_DETAIL_CONSTANT = (1 << 13),
+ SCULPT_DYNTOPO_DETAIL_BRUSH = (1 << 14),
+ SCULPT_DYNTOPO_DETAIL_MANUAL = (1 << 16),
- /* If set, dynamic-topology brushes will subdivide short edges */
- SCULPT_DYNTOPO_SUBDIVIDE = (1 << 12),
- /* If set, dynamic-topology brushes will collapse short edges */
- SCULPT_DYNTOPO_COLLAPSE = (1 << 11),
+ /* Don't display mask in viewport, but still use it for strokes. */
+ SCULPT_HIDE_MASK = (1 << 15),
- /* If set, dynamic-topology detail size will be constant in object space */
- SCULPT_DYNTOPO_DETAIL_CONSTANT = (1 << 13),
- SCULPT_DYNTOPO_DETAIL_BRUSH = (1 << 14),
-} SculptFlags;
+ /* Don't display face sets in viewport. */
+ SCULPT_HIDE_FACE_SETS = (1 << 17),
+} eSculptFlags;
-typedef enum ImagePaintMode {
- IMAGEPAINT_MODE_MATERIAL, /* detect texture paint slots from the material */
- IMAGEPAINT_MODE_IMAGE, /* select texture paint image directly */
-} ImagePaintMode;
+/** #ImagePaintSettings.mode */
+typedef enum eImagePaintMode {
+ IMAGEPAINT_MODE_MATERIAL = 0, /* detect texture paint slots from the material */
+ IMAGEPAINT_MODE_IMAGE = 1, /* select texture paint image directly */
+} eImagePaintMode;
-/* ImagePaintSettings.flag */
-#define IMAGEPAINT_DRAWING 1
-// #define IMAGEPAINT_DRAW_TOOL 2 // deprecated
-// #define IMAGEPAINT_DRAW_TOOL_DRAWING 4 // deprecated
+/** #ImagePaintSettings.interp */
+enum {
+ IMAGEPAINT_INTERP_LINEAR = 0,
+ IMAGEPAINT_INTERP_CLOSEST = 1,
+};
+
+/** #ImagePaintSettings.flag */
+#define IMAGEPAINT_DRAWING (1 << 0)
+// #define IMAGEPAINT_DRAW_TOOL (1 << 1) /* deprecated */
+// #define IMAGEPAINT_DRAW_TOOL_DRAWING (1 << 2) /* deprecated */
/* projection painting only */
-#define IMAGEPAINT_PROJECT_XRAY (1 << 4)
-#define IMAGEPAINT_PROJECT_BACKFACE (1 << 5)
-#define IMAGEPAINT_PROJECT_FLAT (1 << 6)
-#define IMAGEPAINT_PROJECT_LAYER_CLONE (1 << 7)
-#define IMAGEPAINT_PROJECT_LAYER_STENCIL (1 << 8)
-#define IMAGEPAINT_PROJECT_LAYER_STENCIL_INV (1 << 9)
-
-
-#define IMAGEPAINT_MISSING_UVS (1 << 0)
-#define IMAGEPAINT_MISSING_MATERIAL (1 << 1)
-#define IMAGEPAINT_MISSING_TEX (1 << 2)
-#define IMAGEPAINT_MISSING_STENCIL (1 << 3)
-
-/* toolsettings->uvcalc_flag */
-#define UVCALC_FILLHOLES 1
-#define UVCALC_NO_ASPECT_CORRECT 2 /* would call this UVCALC_ASPECT_CORRECT, except it should be default with old file */
-#define UVCALC_TRANSFORM_CORRECT 4 /* adjust UV's while transforming to avoid distortion */
-#define UVCALC_USESUBSURF 8 /* Use mesh data after subsurf to compute UVs*/
-
-/* toolsettings->uv_flag */
-#define UV_SYNC_SELECTION 1
-#define UV_SHOW_SAME_IMAGE 2
-
-/* toolsettings->uv_selectmode */
-#define UV_SELECT_VERTEX 1
-#define UV_SELECT_EDGE 2
-#define UV_SELECT_FACE 4
-#define UV_SELECT_ISLAND 8
-
-/* toolsettings->edge_mode */
-#define EDGE_MODE_SELECT 0
-#define EDGE_MODE_TAG_SEAM 1
-#define EDGE_MODE_TAG_SHARP 2
-#define EDGE_MODE_TAG_CREASE 3
-#define EDGE_MODE_TAG_BEVEL 4
-#define EDGE_MODE_TAG_FREESTYLE 5
-
-/* toolsettings->gpencil_flags */
-#define GP_TOOL_FLAG_PAINTSESSIONS_ON (1<<0)
-
-/* toolsettings->gpencil_src */
-typedef enum eGPencil_Source_3D {
- GP_TOOL_SOURCE_SCENE = 0,
- GP_TOOL_SOURCE_OBJECT = 1
-} eGPencil_Source_3d;
-
-/* toolsettings->particle flag */
-#define PE_KEEP_LENGTHS 1
-#define PE_LOCK_FIRST 2
-#define PE_DEFLECT_EMITTER 4
-#define PE_INTERPOLATE_ADDED 8
-#define PE_DRAW_PART 16
-/* #define PE_X_MIRROR 64 */ /* deprecated */
-#define PE_FADE_TIME 128
-#define PE_AUTO_VELOCITY 256
-
-/* toolsetting->particle brushtype */
-#define PE_BRUSH_NONE -1
-#define PE_BRUSH_COMB 0
-#define PE_BRUSH_CUT 1
-#define PE_BRUSH_LENGTH 2
-#define PE_BRUSH_PUFF 3
-#define PE_BRUSH_ADD 4
-#define PE_BRUSH_SMOOTH 5
-#define PE_BRUSH_WEIGHT 6
-
-/* this must equal ParticleEditSettings.brush array size */
-#define PE_TOT_BRUSH 6
-
-/* ParticleBrushData->flag */
+/** #ImagePaintSettings.flag */
+#define IMAGEPAINT_PROJECT_XRAY (1 << 4)
+#define IMAGEPAINT_PROJECT_BACKFACE (1 << 5)
+#define IMAGEPAINT_PROJECT_FLAT (1 << 6)
+#define IMAGEPAINT_PROJECT_LAYER_CLONE (1 << 7)
+#define IMAGEPAINT_PROJECT_LAYER_STENCIL (1 << 8)
+#define IMAGEPAINT_PROJECT_LAYER_STENCIL_INV (1 << 9)
+
+/** #ImagePaintSettings.missing_data */
+#define IMAGEPAINT_MISSING_UVS (1 << 0)
+#define IMAGEPAINT_MISSING_MATERIAL (1 << 1)
+#define IMAGEPAINT_MISSING_TEX (1 << 2)
+#define IMAGEPAINT_MISSING_STENCIL (1 << 3)
+
+/** #ToolSettings.uvcalc_flag */
+#define UVCALC_FILLHOLES (1 << 0)
+/** would call this UVCALC_ASPECT_CORRECT, except it should be default with old file */
+#define UVCALC_NO_ASPECT_CORRECT (1 << 1)
+/** Adjust UV's while transforming with Vert or Edge Slide. */
+#define UVCALC_TRANSFORM_CORRECT_SLIDE (1 << 2)
+/** Use mesh data after subsurf to compute UV's. */
+#define UVCALC_USESUBSURF (1 << 3)
+/** adjust UV's while transforming to avoid distortion */
+#define UVCALC_TRANSFORM_CORRECT (1 << 4)
+/** Keep equal values merged while correcting custom-data. */
+#define UVCALC_TRANSFORM_CORRECT_KEEP_CONNECTED (1 << 5)
+
+/** #ToolSettings.uv_flag */
+#define UV_SYNC_SELECTION 1
+#define UV_SHOW_SAME_IMAGE 2
+
+/** #ToolSettings.uv_selectmode */
+#define UV_SELECT_VERTEX 1
+#define UV_SELECT_EDGE 2
+#define UV_SELECT_FACE 4
+#define UV_SELECT_ISLAND 8
+
+/** #ToolSettings.gpencil_flags */
+typedef enum eGPencil_Flags {
+ /* When creating new frames, the last frame gets used as the basis for the new one */
+ GP_TOOL_FLAG_RETAIN_LAST = (1 << 1),
+ /* Add the strokes below all strokes in the layer */
+ GP_TOOL_FLAG_PAINT_ONBACK = (1 << 2),
+ /* Show compact list of colors */
+ GP_TOOL_FLAG_THUMBNAIL_LIST = (1 << 3),
+ /* Generate wheight data for new strokes */
+ GP_TOOL_FLAG_CREATE_WEIGHTS = (1 << 4),
+ /* Automerge with last stroke */
+ GP_TOOL_FLAG_AUTOMERGE_STROKE = (1 << 5),
+} eGPencil_Flags;
+
+/** #Scene.r.simplify_gpencil */
+typedef enum eGPencil_SimplifyFlags {
+ /* Simplify */
+ SIMPLIFY_GPENCIL_ENABLE = (1 << 0),
+ /* Simplify on play */
+ SIMPLIFY_GPENCIL_ON_PLAY = (1 << 1),
+ /* Simplify fill on viewport */
+ SIMPLIFY_GPENCIL_FILL = (1 << 2),
+ /* Simplify modifier on viewport */
+ SIMPLIFY_GPENCIL_MODIFIER = (1 << 3),
+ /* Simplify Shader FX */
+ SIMPLIFY_GPENCIL_FX = (1 << 5),
+ /* Simplify layer tint */
+ SIMPLIFY_GPENCIL_TINT = (1 << 7),
+ /* Simplify Antialiasing */
+ SIMPLIFY_GPENCIL_AA = (1 << 8),
+} eGPencil_SimplifyFlags;
+
+/** `ToolSettings.gpencil_*_align` - Stroke Placement mode flags */
+typedef enum eGPencil_Placement_Flags {
+ /* New strokes are added in viewport/data space (i.e. not screen space) */
+ GP_PROJECT_VIEWSPACE = (1 << 0),
+
+ /* Viewport space, but relative to render canvas (Sequencer Preview Only) */
+ /* GP_PROJECT_CANVAS = (1 << 1), */ /* UNUSED */
+
+ /* Project into the screen's Z values */
+ GP_PROJECT_DEPTH_VIEW = (1 << 2),
+ GP_PROJECT_DEPTH_STROKE = (1 << 3),
+
+ /* "Use Endpoints" */
+ GP_PROJECT_DEPTH_STROKE_ENDPOINTS = (1 << 4),
+ GP_PROJECT_CURSOR = (1 << 5),
+ GP_PROJECT_DEPTH_STROKE_FIRST = (1 << 6),
+} eGPencil_Placement_Flags;
+
+/** #ToolSettings.gpencil_selectmode */
+typedef enum eGPencil_Selectmode_types {
+ GP_SELECTMODE_POINT = 0,
+ GP_SELECTMODE_STROKE = 1,
+ GP_SELECTMODE_SEGMENT = 2,
+} eGPencil_Selectmode_types;
+
+/** #ToolSettings.gpencil_guide_types */
+typedef enum eGPencil_GuideTypes {
+ GP_GUIDE_CIRCULAR = 0,
+ GP_GUIDE_RADIAL = 1,
+ GP_GUIDE_PARALLEL = 2,
+ GP_GUIDE_GRID = 3,
+ GP_GUIDE_ISO = 4,
+} eGPencil_GuideTypes;
+
+/** #ToolSettings.gpencil_guide_references */
+typedef enum eGPencil_Guide_Reference {
+ GP_GUIDE_REF_CURSOR = 0,
+ GP_GUIDE_REF_CUSTOM = 1,
+ GP_GUIDE_REF_OBJECT = 2,
+} eGPencil_Guide_Reference;
+
+/** #ToolSettings.particle flag */
+#define PE_KEEP_LENGTHS (1 << 0)
+#define PE_LOCK_FIRST (1 << 1)
+#define PE_DEFLECT_EMITTER (1 << 2)
+#define PE_INTERPOLATE_ADDED (1 << 3)
+#define PE_DRAW_PART (1 << 4)
+#define PE_UNUSED_6 (1 << 6) /* cleared */
+#define PE_FADE_TIME (1 << 7)
+#define PE_AUTO_VELOCITY (1 << 8)
+
+/** #ParticleEditSettings.brushtype */
+#define PE_BRUSH_NONE -1
+#define PE_BRUSH_COMB 0
+#define PE_BRUSH_CUT 1
+#define PE_BRUSH_LENGTH 2
+#define PE_BRUSH_PUFF 3
+#define PE_BRUSH_ADD 4
+#define PE_BRUSH_SMOOTH 5
+#define PE_BRUSH_WEIGHT 6
+
+/** #ParticleBrushData.flag */
#define PE_BRUSH_DATA_PUFF_VOLUME 1
-/* tooksettings->particle edittype */
-#define PE_TYPE_PARTICLES 0
-#define PE_TYPE_SOFTBODY 1
-#define PE_TYPE_CLOTH 2
-
-/* toolsettings->skgen_options */
-#define SKGEN_FILTER_INTERNAL (1 << 0)
-#define SKGEN_FILTER_EXTERNAL (1 << 1)
-#define SKGEN_SYMMETRY (1 << 2)
-#define SKGEN_CUT_LENGTH (1 << 3)
-#define SKGEN_CUT_ANGLE (1 << 4)
-#define SKGEN_CUT_CORRELATION (1 << 5)
-#define SKGEN_HARMONIC (1 << 6)
-#define SKGEN_STICK_TO_EMBEDDING (1 << 7)
-#define SKGEN_ADAPTIVE_DISTANCE (1 << 8)
-#define SKGEN_FILTER_SMART (1 << 9)
-#define SKGEN_DISP_LENGTH (1 << 10)
-#define SKGEN_DISP_WEIGHT (1 << 11)
-#define SKGEN_DISP_ORIG (1 << 12)
-#define SKGEN_DISP_EMBED (1 << 13)
-#define SKGEN_DISP_INDEX (1 << 14)
-
-#define SKGEN_SUB_LENGTH 0
-#define SKGEN_SUB_ANGLE 1
-#define SKGEN_SUB_CORRELATION 2
-#define SKGEN_SUB_TOTAL 3
-
-/* toolsettings->skgen_postpro */
-#define SKGEN_SMOOTH 0
-#define SKGEN_AVERAGE 1
-#define SKGEN_SHARPEN 2
-
-/* toolsettings->bone_sketching */
-#define BONE_SKETCHING 1
-#define BONE_SKETCHING_QUICK 2
-#define BONE_SKETCHING_ADJUST 4
-
-/* toolsettings->bone_sketching_convert */
-#define SK_CONVERT_CUT_FIXED 0
-#define SK_CONVERT_CUT_LENGTH 1
-#define SK_CONVERT_CUT_ADAPTATIVE 2
-#define SK_CONVERT_RETARGET 3
-
-/* toolsettings->skgen_retarget_options */
-#define SK_RETARGET_AUTONAME 1
-
-/* toolsettings->skgen_retarget_roll */
-#define SK_RETARGET_ROLL_NONE 0
-#define SK_RETARGET_ROLL_VIEW 1
-#define SK_RETARGET_ROLL_JOINT 2
-
-/* physics_settings->flag */
-#define PHYS_GLOBAL_GRAVITY 1
+/** #ParticleBrushData.edittype */
+#define PE_TYPE_PARTICLES 0
+#define PE_TYPE_SOFTBODY 1
+#define PE_TYPE_CLOTH 2
+
+/** #PhysicsSettings.flag */
+#define PHYS_GLOBAL_GRAVITY 1
/* UnitSettings */
-/* UnitSettings->system */
-#define USER_UNIT_NONE 0
-#define USER_UNIT_METRIC 1
-#define USER_UNIT_IMPERIAL 2
-/* UnitSettings->flag */
-#define USER_UNIT_OPT_SPLIT 1
-#define USER_UNIT_ROT_RADIANS 2
+#define USER_UNIT_ADAPTIVE 0xFF
+/* UnitSettings.system */
+#define USER_UNIT_NONE 0
+#define USER_UNIT_METRIC 1
+#define USER_UNIT_IMPERIAL 2
+/* UnitSettings.flag */
+#define USER_UNIT_OPT_SPLIT 1
+#define USER_UNIT_ROT_RADIANS 2
+
+/** #SceneEEVEE.flag */
+enum {
+ // SCE_EEVEE_VOLUMETRIC_ENABLED = (1 << 0), /* Unused */
+ SCE_EEVEE_VOLUMETRIC_LIGHTS = (1 << 1),
+ SCE_EEVEE_VOLUMETRIC_SHADOWS = (1 << 2),
+ // SCE_EEVEE_VOLUMETRIC_COLORED = (1 << 3), /* Unused */
+ SCE_EEVEE_GTAO_ENABLED = (1 << 4),
+ SCE_EEVEE_GTAO_BENT_NORMALS = (1 << 5),
+ SCE_EEVEE_GTAO_BOUNCE = (1 << 6),
+ // SCE_EEVEE_DOF_ENABLED = (1 << 7), /* Moved to camera->dof.flag */
+ SCE_EEVEE_BLOOM_ENABLED = (1 << 8),
+ SCE_EEVEE_MOTION_BLUR_ENABLED = (1 << 9),
+ SCE_EEVEE_SHADOW_HIGH_BITDEPTH = (1 << 10),
+ SCE_EEVEE_TAA_REPROJECTION = (1 << 11),
+ // SCE_EEVEE_SSS_ENABLED = (1 << 12), /* Unused */
+ // SCE_EEVEE_SSS_SEPARATE_ALBEDO = (1 << 13), /* Unused */
+ SCE_EEVEE_SSR_ENABLED = (1 << 14),
+ SCE_EEVEE_SSR_REFRACTION = (1 << 15),
+ SCE_EEVEE_SSR_HALF_RESOLUTION = (1 << 16),
+ SCE_EEVEE_SHOW_IRRADIANCE = (1 << 17),
+ SCE_EEVEE_SHOW_CUBEMAPS = (1 << 18),
+ SCE_EEVEE_GI_AUTOBAKE = (1 << 19),
+ SCE_EEVEE_SHADOW_SOFT = (1 << 20),
+ SCE_EEVEE_OVERSCAN = (1 << 21),
+ SCE_EEVEE_DOF_HQ_SLIGHT_FOCUS = (1 << 22),
+ SCE_EEVEE_DOF_JITTER = (1 << 23),
+};
+
+/** #SceneEEVEE.shadow_method */
+enum {
+ SHADOW_ESM = 1,
+ /* SHADOW_VSM = 2, */ /* UNUSED */
+ /* SHADOW_METHOD_MAX = 3, */ /* UNUSED */
+};
+
+/** #SceneEEVEE.motion_blur_position */
+enum {
+ SCE_EEVEE_MB_CENTER = 0,
+ SCE_EEVEE_MB_START = 1,
+ SCE_EEVEE_MB_END = 2,
+};
+
+/** #SceneDisplay->render_aa and #SceneDisplay->viewport_aa */
+enum {
+ SCE_DISPLAY_AA_OFF = 0,
+ SCE_DISPLAY_AA_FXAA = 1,
+ SCE_DISPLAY_AA_SAMPLES_5 = 5,
+ SCE_DISPLAY_AA_SAMPLES_8 = 8,
+ SCE_DISPLAY_AA_SAMPLES_11 = 11,
+ SCE_DISPLAY_AA_SAMPLES_16 = 16,
+ SCE_DISPLAY_AA_SAMPLES_32 = 32,
+};
#ifdef __cplusplus
}
#endif
-
-#endif /* __DNA_SCENE_TYPES_H__ */