Blender V4.3
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
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 Ipo;
22struct bNodeTree;
23
24/* WATCH IT: change type? also make changes in ipo.h */
25
48
49typedef struct MaterialGPencilStyle {
51
52
53 struct Image *sima;
55 struct Image *ima;
57 float stroke_rgba[4];
59 float fill_rgba[4];
61 float mix_rgba[4];
63 short flag;
65 short index;
67 short stroke_style;
69 short fill_style;
71 float mix_factor;
73 float gradient_angle DNA_DEPRECATED;
75 float gradient_radius DNA_DEPRECATED;
76 char _pad2[4];
78 float gradient_scale[2] DNA_DEPRECATED;
80 float gradient_shift[2] DNA_DEPRECATED;
82 float texture_angle;
84 float texture_scale[2];
86 float texture_offset[2];
88 float texture_opacity DNA_DEPRECATED;
90 float texture_pixsize;
92 int mode;
93
95 int gradient_type;
96
98 float mix_stroke_factor;
100 int alignment_mode;
102 float alignment_rotation;
104
105/* MaterialGPencilStyle->flag */
107 /* Fill Texture is a pattern */
109 /* don't display color */
111 /* protected from further editing */
113 /* do onion skinning */
115 /* clamp texture */
117 /* mix fill texture */
119 /* Flip fill colors */
121 /* Stroke Texture is a pattern */
123 /* Stroke show main switch */
125 /* Fill show main switch */
127 /* mix stroke texture */
129 /* disable stencil clipping (overlap) */
131 /* Material used as stroke masking. */
133 /* Material used as fill masking. */
136
142
143typedef struct MaterialLineArt {
144 /* eMaterialLineArtFlags */
145 int flags;
146
147 /* Used to filter line art occlusion edges */
148 unsigned char material_mask_bits;
149
151 unsigned char mat_occlusion;
152
154
155 char _pad;
157
163
164typedef struct Material {
166
167 ID id;
169 struct AnimData *adt;
170
171 short flag;
173 char surface_render_method;
174 char _pad1[1];
175
176 /* Colors from Blender Internal that we are still using. */
177 float r, g, b, a;
178 float specr, specg, specb;
179 float alpha DNA_DEPRECATED;
180 float ray_mirror DNA_DEPRECATED;
181 float spec;
183 float gloss_mir DNA_DEPRECATED;
184 float roughness;
185 float metallic;
186
188 char use_nodes;
189
191 char pr_type;
192 short pr_texture;
193 short pr_flag;
194
196 short index;
197
198 struct bNodeTree *nodetree;
200 struct Ipo *ipo DNA_DEPRECATED;
201 struct PreviewImage *preview;
202
203 /* Freestyle line settings. */
204 float line_col[4];
205 short line_priority;
206 short vcol_alpha;
207
208 /* Texture painting slots. */
209 short paint_active_slot;
210 short paint_clone_slot;
211 short tot_slots;
212
213 /* Displacement. */
214 char displacement_method;
215
216 /* Thickness. */
217 char thickness_mode;
218
219 /* Transparency. */
220 float alpha_threshold;
221 float refract_depth;
222 char blend_method; /* TODO(fclem): Deprecate once we remove legacy EEVEE. */
223 char blend_shadow; /* TODO(fclem): Deprecate once we remove legacy EEVEE. */
224 char blend_flag;
225
226 /* Volume. */
227 char volume_intersection_method;
228
229 /* Displacement. */
230 float inflate_bounds;
231
232 char _pad3[4];
233
238 struct TexPaintSlot *texpaintslot;
239
241 ListBase gpumaterial;
242
244 struct MaterialGPencilStyle *gp_style;
245 struct MaterialLineArt lineart;
247
248/* **************** MATERIAL ********************* */
249
250/* maximum number of materials per material array.
251 * (on object, mesh, light, etc.). limited by
252 * short mat_nr in verts, faces.
253 * -1 because for active material we store the index + 1 */
254#define MAXMAT (32767 - 1)
255
257enum {
259 MA_IS_USED = 1 << 0, /* UNUSED */
261 MA_DS_EXPAND = 1 << 1,
268};
269
270/* ramps */
271enum {
291};
292
294enum {
295 TEXCO_ORCO = 1 << 0,
296 // TEXCO_REFL = 1 << 1, /* Deprecated. */
297 // TEXCO_NORM = 1 << 2, /* Deprecated. */
298 TEXCO_GLOB = 1 << 3,
299 TEXCO_UV = 1 << 4,
300 TEXCO_OBJECT = 1 << 5,
301 // TEXCO_LAVECTOR = 1 << 6, /* Deprecated. */
302 // TEXCO_VIEW = 1 << 7, /* Deprecated. */
303 // TEXCO_STICKY = 1 << 8, /* Deprecated. */
304 // TEXCO_OSA = 1 << 9, /* Deprecated. */
305 TEXCO_WINDOW = 1 << 10,
306 // NEED_UV = 1 << 11, /* Deprecated. */
307 // TEXCO_TANGENT = 1 << 12, /* Deprecated. */
309 TEXCO_STRAND = 1 << 13,
311 TEXCO_PARTICLE = 1 << 13,
312 // TEXCO_STRESS = 1 << 14, /* Deprecated. */
313 // TEXCO_SPEED = 1 << 15, /* Deprecated. */
314};
315
317enum {
318 MAP_COL = 1 << 0,
319 MAP_ALPHA = 1 << 7,
320};
321
323typedef enum ePreviewType {
328 MA_SPHERE_A = 4, /* Used for icon renders only. */
337
339enum {
341};
342
344enum {
347};
348
350enum {
353};
354
356enum {
358 // MA_BM_ADD = 1, /* deprecated */
359 // MA_BM_MULTIPLY = 2, /* deprecated */
363};
364
366enum {
375};
376
378enum {
383};
384
386enum {
390};
391
393enum {
396};
397
398/* Grease Pencil Stroke styles */
399enum {
402};
403
404/* Grease Pencil Fill styles */
405enum {
408 GP_MATERIAL_FILL_STYLE_CHECKER = 2, /* DEPRECATED (only for convert old files) */
410};
411
412/* Grease Pencil Gradient Types */
413enum {
416};
417
418/* Grease Pencil Follow Drawing Modes */
419enum {
423};
ID and Library types, which are fundamental for SDNA.
enum eAnimEdit_AutoSnap DNA_DEPRECATED
#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.
@ TEXCO_WINDOW
@ TEXCO_ORCO
@ TEXCO_PARTICLE
@ TEXCO_GLOB
@ TEXCO_OBJECT
@ TEXCO_STRAND
@ 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_DS_SHOW_TEXS
@ MA_DS_EXPAND
@ MA_IS_USED
@ 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_SURFACE_METHOD_DEFERRED
@ MA_SURFACE_METHOD_FORWARD
@ MA_SPHERE_A
@ MA_SHADERBALL
@ MA_TEXTURE
@ MA_SPHERE
@ GP_MATERIAL_FILL_STYLE_GRADIENT
@ GP_MATERIAL_FILL_STYLE_TEXTURE
@ GP_MATERIAL_FILL_STYLE_CHECKER
@ GP_MATERIAL_FILL_STYLE_SOLID
@ MA_DISPLACEMENT_BOTH
@ MA_DISPLACEMENT_BUMP
@ MA_DISPLACEMENT_DISPLACE
@ GP_MATERIAL_FOLLOW_OBJ
@ GP_MATERIAL_FOLLOW_PATH
@ GP_MATERIAL_FOLLOW_FIXED
@ MA_BS_HASHED
@ MA_BS_CLIP
@ MA_BS_NONE
@ MA_BS_SOLID
@ MA_VOLUME_ISECT_ACCURATE
@ MA_VOLUME_ISECT_FAST
@ GP_MATERIAL_STROKE_STYLE_SOLID
@ GP_MATERIAL_STROKE_STYLE_TEXTURE
@ MA_PREVIEW_WORLD
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
eMaterialLineArtFlags
@ LRT_MATERIAL_CUSTOM_OCCLUSION_EFFECTIVENESS
@ LRT_MATERIAL_CUSTOM_INTERSECTION_PRIORITY
@ LRT_MATERIAL_MASK_ENABLED
eMaterialGPencilStyle_Mode
@ GP_MATERIAL_MODE_SQUARE
@ GP_MATERIAL_MODE_DOT
@ GP_MATERIAL_MODE_LINE
@ MAP_ALPHA
@ GP_MATERIAL_GRADIENT_RADIAL
@ GP_MATERIAL_GRADIENT_LINEAR
@ MA_THICKNESS_SLAB
@ MA_THICKNESS_SPHERE
struct MaterialLineArt MaterialLineArt
@ MA_BM_CLIP
@ MA_BM_HASHED
@ MA_BM_SOLID
@ MA_BM_BLEND
local_group_size(16, 16) .push_constant(Type b
Definition DNA_ID.h:413
unsigned char mat_occlusion
unsigned char intersection_priority
unsigned char material_mask_bits
struct Image * ima
struct ImageUser * image_user
uint8_t flag
Definition wm_window.cc:138