Blender V4.3
DNA_layer_types.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
11#include "DNA_freestyle_types.h"
12#include "DNA_listBase.h"
13
14#include "BLI_utildefines.h"
15
35 EEVEE_RENDER_PASS_UNUSED_14 = (1 << 14), /* EEVEE_RENDER_PASS_BLOOM */
37 /*
38 * TODO(@jbakker): Clean up conflicting bits after EEVEE has been removed.
39 * #EEVEE_RENDER_PASS_CRYPTOMATTE is for EEVEE, `EEVEE_RENDER_PASS_CRYTPOMATTE_*` are for
40 * EEVEE-Next.
41 */
50#define EEVEE_RENDER_PASS_MAX_BIT 21
52
53/* #ViewLayerAOV.type */
58
59/* #ViewLayerAOV.flag */
63
64/* #ViewLayer.cryptomatte_flag */
72#define VIEW_LAYER_CRYPTOMATTE_ALL \
73 (VIEW_LAYER_CRYPTOMATTE_OBJECT | VIEW_LAYER_CRYPTOMATTE_MATERIAL | VIEW_LAYER_CRYPTOMATTE_ASSET)
74
75typedef struct Base {
76 struct Base *next, *prev;
77
78 struct Object *object;
79
80 /* Pointer to an original base. Is initialized for evaluated view layer.
81 * NOTE: Only allowed to be accessed from within active dependency graph. */
82 struct Base *base_orig;
83
84 unsigned int lay DNA_DEPRECATED;
85 /* Final flags, including both accumulated collection flags and object's
86 * restriction flags. */
87 short flag;
88 /* Flags which are based on the collections flags evaluation, does not
89 * include flags from object's restrictions. */
92 unsigned short local_view_bits;
93 unsigned short local_collections_bits;
94 char _pad1[2];
96
103
118
119/* Type containing EEVEE settings per view-layer */
124
126typedef struct ViewLayerAOV {
128
129 /* Name of the AOV */
130 char name[64];
131 int flag;
132 /* Type of AOV (color/value)
133 * matches `eViewLayerAOVType` */
134 int type;
136
138typedef struct ViewLayerLightgroup {
140
141 /* Name of the Light-group. */
142 char name[64];
144
145/* Light-group membership information. */
146typedef struct LightgroupMembership {
147 /* Name of the Light-group. */
148 char name[64];
150
151typedef struct ViewLayer {
152 struct ViewLayer *next, *prev;
154 char name[64];
155 short flag;
156 char _pad[6];
161 struct Base *basact;
162
168
169 /* Old SceneRenderLayer data. */
176 char _pad1[4];
177
179
184
187
188 /* List containing the `ViewLayerAOV`s */
191
192 /* List containing the 'ViewLayerLightgroup`s */
195
196 /* Runtime data */
202
203/* Base->flag */
204enum {
205 /* User controlled flags. */
206 BASE_SELECTED = (1 << 0), /* Object is selected. */
207 BASE_HIDDEN = (1 << 8), /* Object is hidden for editing. */
208
209 /* Runtime evaluated flags. */
210
211 /* Object is enabled and potentially visible in a viewport. Layer collection
212 * visibility, local collection visibility, and local view are not part of this
213 * and may cause the object to be hidden depending on the 3D viewport settings.
214 *
215 * Objects with this flag will be considered visible by the viewport depsgraph
216 * and be evaluated as a result.
217 *
218 * This implies BASE_ENABLED_VIEWPORT. */
220
221 /* Object can be selected. */
222 BASE_SELECTABLE = (1 << 2),
223
224 /* Object comes from a duplicator. */
225 BASE_FROM_DUPLI = (1 << 3),
226
227 /* Object is enabled and visible in a viewport with default viewport settings,
228 * (so without any local view or local collection visibility overrides). Used
229 * when editors other than the 3D viewport need to know if an object is visible. */
231
232 /* Object comes from a scene set. */
233 BASE_FROM_SET = (1 << 5),
234
235 /* Object is enabled for viewport or final render respectively. Only enabled
236 * objects can be pulled into the depsgraph for evaluation, either through being
237 * directly visible, as a dependency of another object, or as part of colliders
238 * and effectors for physics. */
241
242 /* BASE_DEPRECATED = (1 << 9), */
243
244 /* Object masked out from render */
245 BASE_HOLDOUT = (1 << 10),
246 /* Object only contributes indirectly to render */
248};
249
250/* LayerCollection->flag */
251enum {
252 /* LAYER_COLLECTION_DEPRECATED0 = (1 << 0), */
253 /* LAYER_COLLECTION_DEPRECATED1 = (1 << 1), */
254 /* LAYER_COLLECTION_DEPRECATED2 = (1 << 2), */
255 /* LAYER_COLLECTION_DEPRECATED3 = (1 << 3), */
261};
262
263/* Layer Collection->runtime_flag
264 * Keep it synced with base->flag based on g_base_collection_flags. */
265enum {
267 /* LAYER_COLLECTION_VISIBLE_DEPSGRAPH = (1 << 1), */ /* UNUSED */
270};
271
272/* ViewLayer->flag */
273enum {
275 /* VIEW_LAYER_DEPRECATED = (1 << 1), */
279};
#define ENUM_OPERATORS(_type, _max)
struct LightgroupMembership LightgroupMembership
eViewLayerCryptomatteFlags
@ VIEW_LAYER_CRYPTOMATTE_MATERIAL
@ VIEW_LAYER_CRYPTOMATTE_ASSET
@ VIEW_LAYER_CRYPTOMATTE_ACCURATE
@ VIEW_LAYER_CRYPTOMATTE_OBJECT
@ LAYER_COLLECTION_VISIBLE_VIEW_LAYER
@ LAYER_COLLECTION_HIDE_VIEWPORT
@ LAYER_COLLECTION_HAS_OBJECTS
@ VIEW_LAYER_HAS_EXPORT_COLLECTIONS
@ VIEW_LAYER_FREESTYLE
@ VIEW_LAYER_RENDER
@ VIEW_LAYER_OUT_OF_SYNC
@ LAYER_COLLECTION_HIDE
@ LAYER_COLLECTION_EXCLUDE
@ LAYER_COLLECTION_INDIRECT_ONLY
@ LAYER_COLLECTION_PREVIOUSLY_EXCLUDED
@ LAYER_COLLECTION_HOLDOUT
struct Base Base
@ BASE_HIDDEN
@ BASE_INDIRECT_ONLY
@ BASE_FROM_DUPLI
@ BASE_FROM_SET
@ BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT
@ BASE_SELECTABLE
@ BASE_ENABLED_AND_MAYBE_VISIBLE_IN_VIEWPORT
@ BASE_ENABLED_RENDER
@ BASE_HOLDOUT
@ BASE_ENABLED_VIEWPORT
@ BASE_SELECTED
struct ViewLayerEngineData ViewLayerEngineData
#define EEVEE_RENDER_PASS_MAX_BIT
eViewLayerEEVEEPassType
@ EEVEE_RENDER_PASS_UNUSED_8
@ EEVEE_RENDER_PASS_CRYPTOMATTE_MATERIAL
@ EEVEE_RENDER_PASS_AO
@ EEVEE_RENDER_PASS_NORMAL
@ EEVEE_RENDER_PASS_UNUSED_14
@ EEVEE_RENDER_PASS_CRYPTOMATTE_OBJECT
@ EEVEE_RENDER_PASS_DIFFUSE_LIGHT
@ EEVEE_RENDER_PASS_VOLUME_LIGHT
@ EEVEE_RENDER_PASS_AOV
@ EEVEE_RENDER_PASS_DIFFUSE_COLOR
@ EEVEE_RENDER_PASS_CRYPTOMATTE_ASSET
@ EEVEE_RENDER_PASS_CRYPTOMATTE
@ EEVEE_RENDER_PASS_Z
@ EEVEE_RENDER_PASS_ENVIRONMENT
@ EEVEE_RENDER_PASS_COMBINED
@ EEVEE_RENDER_PASS_SPECULAR_LIGHT
@ EEVEE_RENDER_PASS_VECTOR
@ EEVEE_RENDER_PASS_SPECULAR_COLOR
@ EEVEE_RENDER_PASS_EMIT
@ EEVEE_RENDER_PASS_MIST
@ EEVEE_RENDER_PASS_TRANSPARENT
@ EEVEE_RENDER_PASS_SHADOW
@ EEVEE_RENDER_PASS_POSITION
eViewLayerAOVType
@ AOV_TYPE_COLOR
@ AOV_TYPE_VALUE
struct ViewLayerLightgroup ViewLayerLightgroup
struct ViewLayerEEVEE ViewLayerEEVEE
struct ViewLayer ViewLayer
eViewLayerAOVFlag
@ AOV_CONFLICT
struct LayerCollection LayerCollection
struct ViewLayerAOV ViewLayerAOV
These structs are the foundation for all linked lists in the library system.
short flag_from_collection
struct Base * next
struct Base * prev
short flag
struct Object * object
unsigned short local_view_bits
char _pad1[2]
unsigned int lay DNA_DEPRECATED
short flag_legacy
unsigned short local_collections_bits
struct Base * base_orig
struct LayerCollection * prev
struct LayerCollection * next
ListBase layer_collections
unsigned short local_collections_bits
struct Collection * collection
struct ViewLayerAOV * prev
struct ViewLayerAOV * next
struct DrawEngineType * engine_type
struct ViewLayerEngineData * next
void(* free)(void *storage)
struct ViewLayerEngineData * prev
struct ViewLayerLightgroup * prev
struct ViewLayerLightgroup * next
struct ViewLayerEEVEE eevee
ListBase drawdata
struct FreestyleConfig freestyle_config
short cryptomatte_flag
ListBase lightgroups
struct IDProperty * id_properties
short cryptomatte_levels
ViewLayerLightgroup * active_lightgroup
ViewLayerAOV * active_aov
struct ViewLayer * prev
ListBase layer_collections
struct World * world_override
LayerCollection * active_collection
struct GHash * object_bases_hash
struct Base ** object_bases_array
struct ViewLayer * next
struct Base * basact
struct SceneStats * stats
ListBase object_bases
float pass_alpha_threshold
ListBase aovs
struct Material * mat_override