Depsgraph: New dependency graph integration commit
[blender.git] / source / blender / makesdna / DNA_scene_types.h
index 0eae50a2562a26297a1a620c98895485c87eafdc..fe346eecec5aa751a060728767a5d228df95c2ce 100644 (file)
@@ -47,6 +47,7 @@ extern "C" {
 #include "DNA_ID.h"
 #include "DNA_freestyle_types.h"
 #include "DNA_gpu_types.h"
+#include "DNA_userdef_types.h"
 
 struct CurveMapping;
 struct Object;
@@ -249,6 +250,73 @@ typedef enum ScenePassType {
 
 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */
 
+/* View - MultiView */
+typedef struct SceneRenderView {
+       struct SceneRenderView *next, *prev;
+
+       char name[64];  /* MAX_NAME */
+       char suffix[64];        /* MAX_NAME */
+
+       int viewflag;
+       int pad[2];
+       char pad2[4];
+
+} SceneRenderView;
+
+/* srv->viewflag */
+#define SCE_VIEW_DISABLE               (1<<0)
+
+/* scene.render.views_format */
+enum {
+       SCE_VIEWS_FORMAT_STEREO_3D = 0,
+       SCE_VIEWS_FORMAT_MULTIVIEW = 1,
+};
+
+/* ImageFormatData.views_output */
+enum {
+       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];
+} Stereo3dFormat;
+
+/* 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,
+} eStereoDisplayMode;
+
+/* Stereo3dFormat.flag */
+typedef enum eStereo3dFlag {
+       S3D_INTERLACE_SWAP        = (1 << 0),
+       S3D_SIDEBYSIDE_CROSSEYED  = (1 << 1),
+       S3D_SQUEEZED_FRAME        = (1 << 2),
+} eStereo3dFlag;
+
+/* Stereo3dFormat.anaglyph_type */
+typedef enum eStereo3dAnaglyphType {
+       S3D_ANAGLYPH_REDCYAN      = 0,
+       S3D_ANAGLYPH_GREENMAGENTA = 1,
+       S3D_ANAGLYPH_YELLOWBLUE   = 2,
+} eStereo3dAnaglyphType;
+
+/* Stereo3dFormat.interlace_type */
+typedef enum eStereo3dInterlaceType {
+       S3D_INTERLACE_ROW          = 0,
+       S3D_INTERLACE_COLUMN       = 1,
+       S3D_INTERLACE_CHECKERBOARD = 2,
+} eStereo3dInterlaceType;
+
 /* *************************************************************** */
 
 /* Generic image format settings,
@@ -286,7 +354,11 @@ typedef struct ImageFormatData {
        char  jp2_flag;
        char jp2_codec;
 
-       char pad[6];
+       char pad[5];
+
+       /* Multiview */
+       char views_format;
+       Stereo3dFormat stereo3d_format;
 
        /* color management */
        ColorManagedViewSettings view_settings;
@@ -585,8 +657,10 @@ typedef struct RenderData {
        /* render simplify */
        int simplify_flag;
        short simplify_subsurf;
-       short simplify_shadowsamples;
+       short simplify_subsurf_render;
+       short simplify_shadowsamples, pad9;
        float simplify_particles;
+       float simplify_particles_render;
        float simplify_aosss;
 
        /* cineon */
@@ -616,6 +690,12 @@ typedef struct RenderData {
 
        int preview_start_resolution;
        int pad;
+
+       /* MultiView */
+       ListBase views;
+       short actview;
+       short views_format;
+       short pad8[2];
 } RenderData;
 
 /* *************************************************************** */
@@ -718,7 +798,12 @@ typedef struct GameData {
        short obstacleSimulation;
        short raster_storage;
        float levelHeight;
-       float deactivationtime, lineardeactthreshold, angulardeactthreshold, pad2;
+       float deactivationtime, lineardeactthreshold, angulardeactthreshold;
+
+       /* Scene LoD */
+       short lodflag, pad2;
+       int scehysteresis, pad5;
+
 } GameData;
 
 #define STEREO_NOSTEREO                1
@@ -791,6 +876,9 @@ enum {
 #pragma GCC poison GAME_MAT_TEXFACE
 #endif
 
+/* GameData.lodflag */
+#define SCE_LOD_USE_HYST               (1 << 0)
+
 /* UV Paint */
 #define UV_SCULPT_LOCK_BORDERS                         1
 #define UV_SCULPT_ALL_ISLANDS                          2
@@ -802,6 +890,19 @@ enum {
 #define UV_SCULPT_TOOL_RELAX_LAPLACIAN 1
 #define UV_SCULPT_TOOL_RELAX_HC                        2
 
+/* Stereo Flags */
+#define STEREO_RIGHT_NAME "right"
+#define STEREO_LEFT_NAME "left"
+#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;
+
 /* Markers */
 
 typedef struct TimeMarker {    
@@ -920,6 +1021,8 @@ typedef struct Sculpt {
 
        /* scale for constant detail size */
        float constant_detail;
+       float detail_percent;
+       float pad;
 
        struct Object *gravity_object;
        void *pad2;
@@ -1170,7 +1273,11 @@ typedef struct ToolSettings {
        short snap_flag, snap_target;
        short proportional, prop_mode;
        char proportional_objects; /* proportional edit, object mode */
-       char proportional_mask; /* 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 */
@@ -1294,6 +1401,7 @@ typedef struct Scene {
        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;
        struct  DagForest *theDag;
        short dagflags;
        short recalc;                           /* recalc = counterpart of ob->recalc */
@@ -1432,6 +1540,7 @@ typedef struct Scene {
 #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
@@ -1745,7 +1854,8 @@ typedef enum SculptFlags {
        SCULPT_DYNTOPO_COLLAPSE = (1 << 11),
 
        /* If set, dynamic-topology detail size will be constant in object space */
-       SCULPT_DYNTOPO_DETAIL_CONSTANT = (1 << 13)
+       SCULPT_DYNTOPO_DETAIL_CONSTANT = (1 << 13),
+       SCULPT_DYNTOPO_DETAIL_BRUSH = (1 << 14),
 } SculptFlags;
 
 typedef enum ImagePaintMode {