Blender V5.0
DNA_material_types.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "DNA_ID.h"
12#include "DNA_defs.h"
13#include "DNA_listBase.h"
14
15#ifndef MAX_MTEX
16# define MAX_MTEX 18
17#endif
18
19struct AnimData;
20struct Image;
21struct bNodeTree;
22
23/* WATCH IT: change type? also make changes in ipo.h */
24
47
50
51
52 struct Image *sima;
54 struct Image *ima;
56 float stroke_rgba[4];
58 float fill_rgba[4];
60 float mix_rgba[4];
62 short flag;
64 short index;
72 float gradient_angle DNA_DEPRECATED;
74 float gradient_radius DNA_DEPRECATED;
75 char _pad2[4];
77 float gradient_scale[2] DNA_DEPRECATED;
79 float gradient_shift[2] DNA_DEPRECATED;
83 float texture_scale[2];
87 float texture_opacity DNA_DEPRECATED;
91 int mode;
92
95
103
104/* MaterialGPencilStyle->flag */
106 /* Fill Texture is a pattern */
108 /* don't display color */
110 /* protected from further editing */
112 /* do onion skinning */
114 /* clamp texture */
116 /* mix fill texture */
118 /* Flip fill colors */
120 /* Stroke Texture is a pattern */
122 /* Stroke show main switch */
124 /* Fill show main switch */
126 /* mix stroke texture */
128 /* disable stencil clipping (overlap) */
130 /* Material used as stroke masking. */
132 /* Material used as fill masking. */
135
141
142typedef struct MaterialLineArt {
143 /* eMaterialLineArtFlags */
144 int flags;
145
146 /* Used to filter line art occlusion edges */
147 unsigned char material_mask_bits;
148
150 unsigned char mat_occlusion;
151
153
154 char _pad;
156
162
163typedef struct Material {
164#ifdef __cplusplus
167 static constexpr ID_Type id_type = ID_MA;
168#endif
169
172 struct AnimData *adt;
173
174 short flag;
177 char _pad1[1];
178
179 /* Colors from Blender Internal that we are still using. */
180 float r, g, b, a;
182 float alpha DNA_DEPRECATED;
183 float ray_mirror DNA_DEPRECATED;
184 float spec;
186 float gloss_mir DNA_DEPRECATED;
188 float metallic;
189
191 char use_nodes DNA_DEPRECATED;
192
196 short pr_flag;
197
199 short index;
200
203
204 /* Freestyle line settings. */
205 float line_col[4];
208
209 /* Texture painting slots. */
213
214 /* Displacement. */
216
217 /* Thickness. */
219
220 /* Transparency. */
223 char blend_method; /* TODO(fclem): Deprecate once we remove legacy EEVEE. */
224 char blend_shadow; /* TODO(fclem): Deprecate once we remove legacy EEVEE. */
226
227 /* Volume. */
229
230 /* Displacement. */
232
233 char _pad3[4];
234
240
243
248
249/* **************** MATERIAL ********************* */
250
251/* maximum number of materials per material array.
252 * (on object, mesh, light, etc.). limited by
253 * short mat_nr in verts, faces.
254 * -1 because for active material we store the index + 1 */
255#define MAXMAT (32767 - 1)
256
258enum {
260 MA_IS_USED = 1 << 0, /* UNUSED */
262 MA_DS_EXPAND = 1 << 1,
269};
270
271/* ramps */
272enum {
292};
293
295enum {
296 TEXCO_ORCO = 1 << 0,
297 // TEXCO_REFL = 1 << 1, /* Deprecated. */
298 // TEXCO_NORM = 1 << 2, /* Deprecated. */
299 TEXCO_GLOB = 1 << 3,
300 TEXCO_UV = 1 << 4,
301 TEXCO_OBJECT = 1 << 5,
302 // TEXCO_LAVECTOR = 1 << 6, /* Deprecated. */
303 // TEXCO_VIEW = 1 << 7, /* Deprecated. */
304 // TEXCO_STICKY = 1 << 8, /* Deprecated. */
305 // TEXCO_OSA = 1 << 9, /* Deprecated. */
306 TEXCO_WINDOW = 1 << 10,
307 // NEED_UV = 1 << 11, /* Deprecated. */
308 // TEXCO_TANGENT = 1 << 12, /* Deprecated. */
310 TEXCO_STRAND = 1 << 13,
312 TEXCO_PARTICLE = 1 << 13,
313 // TEXCO_STRESS = 1 << 14, /* Deprecated. */
314 // TEXCO_SPEED = 1 << 15, /* Deprecated. */
315};
316
318enum {
319 MAP_COL = 1 << 0,
320 MAP_ALPHA = 1 << 7,
321};
322
324typedef enum ePreviewType {
329 MA_SPHERE_A = 4, /* Used for icon renders only. */
338
340enum {
342};
343
345enum {
348};
349
351enum {
354};
355
357enum {
359 // MA_BM_ADD = 1, /* deprecated */
360 // MA_BM_MULTIPLY = 2, /* deprecated */
364};
365
367enum {
376};
377
379enum {
384};
385
387enum {
391};
392
394enum {
397};
398
399/* Grease Pencil Stroke styles */
400enum {
403};
404
405/* Grease Pencil Fill styles */
406enum {
409 GP_MATERIAL_FILL_STYLE_CHECKER = 2, /* DEPRECATED (only for convert old files) */
411};
412
413/* Grease Pencil Gradient Types */
414enum {
417};
418
419/* Grease Pencil Follow Drawing Modes */
420enum {
424};
ID and Library types, which are fundamental for SDNA.
ID_Type
@ ID_MA
#define DNA_DEFINE_CXX_METHODS(class_name)
Definition DNA_defs.h:66
These structs are the foundation for all linked lists in the library system.
@ GP_MATERIAL_STROKE_STYLE_SOLID
@ GP_MATERIAL_STROKE_STYLE_TEXTURE
@ MA_BL_TRANSPARENT_SHADOW
@ MA_BL_LIGHTPROBE_VOLUME_DOUBLE_SIDED
@ MA_BL_THICKNESS_FROM_SHADOW
@ MA_BL_CULL_BACKFACE
@ MA_BL_TRANSLUCENCY
@ MA_BL_SS_REFRACTION
@ MA_BL_CULL_BACKFACE_SHADOW
@ MA_BL_HIDE_BACKFACE
@ MA_SPHERE_A
@ MA_SHADERBALL
@ MA_TEXTURE
@ MA_SPHERE
@ MA_SURFACE_METHOD_DEFERRED
@ MA_SURFACE_METHOD_FORWARD
@ MA_BM_CLIP
@ MA_BM_HASHED
@ MA_BM_SOLID
@ MA_BM_BLEND
@ MA_BS_HASHED
@ MA_BS_CLIP
@ MA_BS_NONE
@ MA_BS_SOLID
@ GP_MATERIAL_FOLLOW_OBJ
@ GP_MATERIAL_FOLLOW_PATH
@ GP_MATERIAL_FOLLOW_FIXED
@ MA_PREVIEW_WORLD
struct Material Material
eMaterialGPencilStyle_Flag
@ GP_MATERIAL_LOCKED
@ GP_MATERIAL_FLIP_FILL
@ GP_MATERIAL_STROKE_PATTERN
@ GP_MATERIAL_STROKE_TEX_MIX
@ GP_MATERIAL_FILL_TEX_MIX
@ GP_MATERIAL_HIDE_ONIONSKIN
@ GP_MATERIAL_HIDE
@ GP_MATERIAL_DISABLE_STENCIL
@ GP_MATERIAL_IS_STROKE_HOLDOUT
@ GP_MATERIAL_STROKE_SHOW
@ GP_MATERIAL_IS_FILL_HOLDOUT
@ GP_MATERIAL_FILL_PATTERN
@ GP_MATERIAL_FILL_SHOW
@ GP_MATERIAL_TEX_CLAMP
@ GP_MATERIAL_GRADIENT_RADIAL
@ GP_MATERIAL_GRADIENT_LINEAR
eMaterialLineArtFlags
@ LRT_MATERIAL_CUSTOM_OCCLUSION_EFFECTIVENESS
@ LRT_MATERIAL_CUSTOM_INTERSECTION_PRIORITY
@ LRT_MATERIAL_MASK_ENABLED
@ MA_THICKNESS_SLAB
@ MA_THICKNESS_SPHERE
@ TEXCO_WINDOW
@ TEXCO_ORCO
@ TEXCO_PARTICLE
@ TEXCO_GLOB
@ TEXCO_OBJECT
@ TEXCO_STRAND
eMaterialGPencilStyle_Mode
@ GP_MATERIAL_MODE_SQUARE
@ GP_MATERIAL_MODE_DOT
@ GP_MATERIAL_MODE_LINE
@ MA_DS_SHOW_TEXS
@ MA_DS_EXPAND
@ MA_IS_USED
@ MA_RAMP_LIGHT
@ MA_RAMP_COLOR
@ MA_RAMP_SAT
@ MA_RAMP_HUE
@ MA_RAMP_LINEAR
@ MA_RAMP_DIV
@ MA_RAMP_EXCLUSION
@ MA_RAMP_ADD
@ MA_RAMP_DODGE
@ MA_RAMP_SUB
@ MA_RAMP_SCREEN
@ MA_RAMP_SOFT
@ MA_RAMP_DARK
@ MA_RAMP_BURN
@ MA_RAMP_BLEND
@ MA_RAMP_VAL
@ MA_RAMP_OVERLAY
@ MA_RAMP_MULT
@ MA_RAMP_DIFF
@ MA_DISPLACEMENT_BOTH
@ MA_DISPLACEMENT_BUMP
@ MA_DISPLACEMENT_DISPLACE
@ MA_VOLUME_ISECT_ACCURATE
@ MA_VOLUME_ISECT_FAST
@ GP_MATERIAL_FILL_STYLE_GRADIENT
@ GP_MATERIAL_FILL_STYLE_TEXTURE
@ GP_MATERIAL_FILL_STYLE_CHECKER
@ GP_MATERIAL_FILL_STYLE_SOLID
struct MaterialLineArt MaterialLineArt
@ MAP_ALPHA
#define typedef
Definition DNA_ID.h:414
float gradient_angle DNA_DEPRECATED
unsigned char mat_occlusion
unsigned char intersection_priority
unsigned char material_mask_bits
float line_col[4]
char volume_intersection_method
struct MaterialLineArt lineart
struct bNodeTree * nodetree
short paint_active_slot
struct PreviewImage * preview
struct MaterialGPencilStyle * gp_style
float alpha DNA_DEPRECATED
ListBase gpumaterial
struct AnimData * adt
char surface_render_method
struct TexPaintSlot * texpaintslot
struct Image * ima
struct ImageUser * image_user