Blender  V2.93
BKE_material.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
17  * All rights reserved.
18  */
19 
20 #pragma once
21 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 struct ID;
31 struct Main;
32 struct Material;
33 struct Object;
34 struct Scene;
35 struct bNode;
36 
37 /* Module */
38 
39 void BKE_materials_init(void);
40 void BKE_materials_exit(void);
41 
42 /* Materials */
43 
44 void BKE_object_materials_test(struct Main *bmain, struct Object *ob, struct ID *id);
45 void BKE_objects_materials_test_all(struct Main *bmain, struct ID *id);
46 void BKE_object_material_resize(struct Main *bmain,
47  struct Object *ob,
48  const short totcol,
49  bool do_id_user);
50 void BKE_object_material_remap(struct Object *ob, const unsigned int *remap);
51 void BKE_object_material_remap_calc(struct Object *ob_dst,
52  struct Object *ob_src,
53  short *remap_src_to_dst);
54 struct Material *BKE_material_add(struct Main *bmain, const char *name);
55 struct Material *BKE_gpencil_material_add(struct Main *bmain, const char *name);
57 
58 /* UNUSED */
59 // void automatname(struct Material *);
60 
61 /* material slots */
62 
63 struct Material ***BKE_object_material_array_p(struct Object *ob);
64 short *BKE_object_material_len_p(struct Object *ob);
65 struct Material ***BKE_id_material_array_p(struct ID *id); /* same but for ID's */
66 short *BKE_id_material_len_p(struct ID *id);
67 
68 enum {
69  /* use existing link option */
74 };
75 
76 struct Material **BKE_object_material_get_p(struct Object *ob, short act);
77 struct Material *BKE_object_material_get(struct Object *ob, short act);
78 void BKE_id_material_assign(struct Main *bmain, struct ID *id, struct Material *ma, short act);
80  struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type);
81 void BKE_object_material_array_assign(struct Main *bmain,
82  struct Object *ob,
83  struct Material ***matar,
84  int totcol,
85  const bool to_object_only);
86 
87 short BKE_object_material_slot_find_index(struct Object *ob, struct Material *ma);
88 bool BKE_object_material_slot_add(struct Main *bmain, struct Object *ob);
89 bool BKE_object_material_slot_remove(struct Main *bmain, struct Object *ob);
90 bool BKE_object_material_slot_used(struct ID *id, short actcol);
91 
92 struct Material *BKE_gpencil_material(struct Object *ob, short act);
93 struct MaterialGPencilStyle *BKE_gpencil_material_settings(struct Object *ob, short act);
94 
95 void BKE_texpaint_slot_refresh_cache(struct Scene *scene, struct Material *ma);
96 void BKE_texpaint_slots_refresh_object(struct Scene *scene, struct Object *ob);
97 struct bNode *BKE_texpaint_slot_material_find_node(struct Material *ma, short texpaint_slot);
98 
99 /* rna api */
100 void BKE_id_materials_copy(struct Main *bmain, struct ID *id_src, struct ID *id_dst);
101 void BKE_id_material_resize(struct Main *bmain, struct ID *id, short totcol, bool do_id_user);
102 void BKE_id_material_append(struct Main *bmain, struct ID *id, struct Material *ma);
103 struct Material *BKE_id_material_pop(struct Main *bmain,
104  struct ID *id,
105  /* index is an int because of RNA. */
106  int index);
107 void BKE_id_material_clear(struct Main *bmain, struct ID *id);
108 /* rendering */
109 
110 void ramp_blend(int type, float r_col[3], const float fac, const float col[3]);
111 
112 /* copy/paste */
113 void BKE_material_copybuf_clear(void);
114 void BKE_material_copybuf_free(void);
115 void BKE_material_copybuf_copy(struct Main *bmain, struct Material *ma);
116 void BKE_material_copybuf_paste(struct Main *bmain, struct Material *ma);
117 
118 /* Default Materials */
119 
125 
127 
128 /* Dependency graph evaluation. */
129 
130 struct Depsgraph;
131 
132 void BKE_material_eval(struct Depsgraph *depsgraph, struct Material *material);
133 
134 #ifdef __cplusplus
135 }
136 #endif
struct MaterialGPencilStyle * BKE_gpencil_material_settings(struct Object *ob, short act)
Definition: material.c:713
void BKE_materials_init(void)
Definition: material.c:1856
struct Material *** BKE_object_material_array_p(struct Object *ob)
Definition: material.c:323
void BKE_materials_exit(void)
Definition: material.c:1868
bool BKE_object_material_slot_remove(struct Main *bmain, struct Object *ob)
Definition: material.c:1107
struct Material * BKE_material_default_surface(void)
Definition: material.c:1829
bool BKE_object_material_slot_used(struct ID *id, short actcol)
Definition: material.c:465
struct Material * BKE_object_material_get(struct Object *ob, short act)
Definition: material.c:697
@ BKE_MAT_ASSIGN_OBDATA
Definition: BKE_material.h:72
@ BKE_MAT_ASSIGN_USERPREF
Definition: BKE_material.h:71
@ BKE_MAT_ASSIGN_OBJECT
Definition: BKE_material.h:73
@ BKE_MAT_ASSIGN_EXISTING
Definition: BKE_material.h:70
void BKE_texpaint_slot_refresh_cache(struct Scene *scene, struct Material *ma)
Definition: material.c:1307
struct bNode * BKE_texpaint_slot_material_find_node(struct Material *ma, short texpaint_slot)
Definition: material.c:1386
void BKE_id_material_assign(struct Main *bmain, struct ID *id, struct Material *ma, short act)
Definition: material.c:803
void BKE_material_eval(struct Depsgraph *depsgraph, struct Material *material)
Definition: material.c:1716
void BKE_object_material_resize(struct Main *bmain, struct Object *ob, const short totcol, bool do_id_user)
Definition: material.c:727
struct Material * BKE_material_default_holdout(void)
Definition: material.c:1824
struct Material *** BKE_id_material_array_p(struct ID *id)
Definition: material.c:390
void BKE_objects_materials_test_all(struct Main *bmain, struct ID *id)
Definition: material.c:784
void BKE_object_material_remap_calc(struct Object *ob_dst, struct Object *ob_src, short *remap_src_to_dst)
Definition: material.c:983
struct Material * BKE_gpencil_material(struct Object *ob, short act)
Definition: material.c:703
struct Material * BKE_gpencil_material_add(struct Main *bmain, const char *name)
Definition: material.c:310
void BKE_object_materials_test(struct Main *bmain, struct Object *ob, struct ID *id)
Definition: material.c:772
void BKE_id_material_append(struct Main *bmain, struct ID *id, struct Material *ma)
Definition: material.c:560
void BKE_material_copybuf_free(void)
Definition: material.c:1661
short * BKE_id_material_len_p(struct ID *id)
Definition: material.c:416
void BKE_material_copybuf_paste(struct Main *bmain, struct Material *ma)
Definition: material.c:1691
void BKE_texpaint_slots_refresh_object(struct Scene *scene, struct Object *ob)
Definition: material.c:1361
void BKE_object_material_assign(struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type)
Definition: material.c:850
void BKE_id_materials_copy(struct Main *bmain, struct ID *id_src, struct ID *id_dst)
Definition: material.c:508
struct Material * BKE_material_default_empty(void)
Definition: material.c:1819
void BKE_material_copybuf_copy(struct Main *bmain, struct Material *ma)
Definition: material.c:1673
struct Material * BKE_id_material_pop(struct Main *bmain, struct ID *id, int index)
Definition: material.c:584
struct Material * BKE_material_default_volume(void)
Definition: material.c:1834
void BKE_id_material_clear(struct Main *bmain, struct ID *id)
Definition: material.c:622
void BKE_object_material_remap(struct Object *ob, const unsigned int *remap)
Definition: material.c:947
struct Material * BKE_material_default_gpencil(void)
Definition: material.c:1839
struct Material * BKE_material_add(struct Main *bmain, const char *name)
Definition: material.c:301
short BKE_object_material_slot_find_index(struct Object *ob, struct Material *ma)
Definition: material.c:1064
void BKE_gpencil_material_attr_init(struct Material *ma)
Definition: material.c:282
bool BKE_object_material_slot_add(struct Main *bmain, struct Object *ob)
Definition: material.c:1091
void BKE_material_defaults_free_gpu(void)
Definition: material.c:1844
struct Material ** BKE_object_material_get_p(struct Object *ob, short act)
Definition: material.c:645
void BKE_material_copybuf_clear(void)
Definition: material.c:1655
short * BKE_object_material_len_p(struct Object *ob)
Definition: material.c:356
void BKE_id_material_resize(struct Main *bmain, struct ID *id, short totcol, bool do_id_user)
Definition: material.c:529
void BKE_object_material_array_assign(struct Main *bmain, struct Object *ob, struct Material ***matar, int totcol, const bool to_object_only)
Definition: material.c:1032
void ramp_blend(int type, float r_col[3], const float fac, const float col[3])
Definition: material.c:1395
struct Depsgraph Depsgraph
Definition: DEG_depsgraph.h:51
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Scene scene
Material material
const Depsgraph * depsgraph
uint col
Definition: DNA_ID.h:273
Definition: BKE_main.h:116