Blender V4.3
BKE_material.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
5#pragma once
6
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15struct ID;
16struct Main;
17struct Material;
18struct Object;
19struct Scene;
20struct bNode;
21
22/* -------------------------------------------------------------------- */
26void BKE_materials_init(void);
27void BKE_materials_exit(void);
28
31/* -------------------------------------------------------------------- */
35void BKE_object_materials_test(struct Main *bmain, struct Object *ob, struct ID *id);
36void BKE_objects_materials_test_all(struct Main *bmain, struct ID *id);
37void BKE_object_material_resize(struct Main *bmain,
38 struct Object *ob,
39 short totcol,
40 bool do_id_user);
41void BKE_object_material_remap(struct Object *ob, const unsigned int *remap);
48void BKE_object_material_remap_calc(struct Object *ob_dst,
49 struct Object *ob_src,
50 short *remap_src_to_dst);
55 struct Object *ob_orig,
56 const struct ID *data_eval);
57struct Material *BKE_material_add(struct Main *bmain, const char *name);
58struct Material *BKE_gpencil_material_add(struct Main *bmain, const char *name);
61
62/* UNUSED */
63// void automatname(struct Material *);
64
67/* -------------------------------------------------------------------- */
71struct Material ***BKE_object_material_array_p(struct Object *ob);
72short *BKE_object_material_len_p(struct Object *ob);
76struct Material ***BKE_id_material_array_p(struct ID *id); /* same but for ID's */
77short *BKE_id_material_len_p(struct ID *id);
78
79enum {
80 /* use existing link option */
85};
86
87struct Material **BKE_object_material_get_p(struct Object *ob, short act);
88struct Material *BKE_object_material_get(struct Object *ob, short act);
89void BKE_id_material_assign(struct Main *bmain, struct ID *id, struct Material *ma, short act);
91 struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type);
92
100 struct Object *ob,
101 struct Material *ma,
102 short act);
106void BKE_object_material_array_assign(struct Main *bmain,
107 struct Object *ob,
108 struct Material ***matar,
109 int totcol,
110 bool to_object_only);
111
112short BKE_object_material_slot_find_index(struct Object *ob, struct Material *ma);
113bool BKE_object_material_slot_add(struct Main *bmain, struct Object *ob);
114bool BKE_object_material_slot_remove(struct Main *bmain, struct Object *ob);
115bool BKE_object_material_slot_used(struct Object *object, short actcol);
116
124int BKE_object_material_index_get_with_hint(Object *ob, const Material *ma, int hint_index);
125
126int BKE_object_material_ensure(Main *bmain, Object *ob, Material *material);
127
128struct Material *BKE_gpencil_material(struct Object *ob, short act);
129struct MaterialGPencilStyle *BKE_gpencil_material_settings(struct Object *ob, short act);
130
132 struct Material *ma,
133 const struct Object *ob);
134void BKE_texpaint_slots_refresh_object(struct Scene *scene, struct Object *ob);
135struct bNode *BKE_texpaint_slot_material_find_node(struct Material *ma, short texpaint_slot);
136
139/* -------------------------------------------------------------------- */
143void BKE_id_materials_copy(struct Main *bmain, struct ID *id_src, struct ID *id_dst);
144void BKE_id_material_resize(struct Main *bmain, struct ID *id, short totcol, bool do_id_user);
145void BKE_id_material_append(struct Main *bmain, struct ID *id, struct Material *ma);
146struct Material *BKE_id_material_pop(struct Main *bmain,
147 struct ID *id,
148 /* index is an int because of RNA. */
149 int index);
150void BKE_id_material_clear(struct Main *bmain, struct ID *id);
151
154/* -------------------------------------------------------------------- */
165struct Material *BKE_object_material_get_eval(struct Object *ob, short act);
167void BKE_id_material_eval_assign(struct ID *id, int slot, struct Material *material);
173
176/* -------------------------------------------------------------------- */
185void ramp_blend(int type, float r_col[3], float fac, const float col[3]);
186
189/* -------------------------------------------------------------------- */
198
200
203/* -------------------------------------------------------------------- */
207struct Depsgraph;
208
209void BKE_material_eval(struct Depsgraph *depsgraph, struct Material *material);
210
213#ifdef __cplusplus
214}
215#endif
struct Material *** BKE_id_material_array_p(struct ID *id)
void BKE_materials_init(void)
void BKE_materials_exit(void)
bool BKE_object_material_slot_remove(struct Main *bmain, struct Object *ob)
void BKE_material_make_node_previews_dirty(struct Material *ma)
struct Material * BKE_gpencil_material(struct Object *ob, short act)
struct Material * BKE_gpencil_material_add(struct Main *bmain, const char *name)
struct Material * BKE_id_material_pop(struct Main *bmain, struct ID *id, int index)
void BKE_id_material_assign(struct Main *bmain, struct ID *id, struct Material *ma, short act)
void BKE_material_eval(struct Depsgraph *depsgraph, struct Material *material)
struct Material * BKE_object_material_get(struct Object *ob, short act)
struct Material * BKE_material_default_empty(void)
struct Material * BKE_material_default_holdout(void)
bool BKE_object_material_slot_used(struct Object *object, short actcol)
int BKE_object_material_count_eval(const struct Object *ob)
void BKE_objects_materials_test_all(struct Main *bmain, struct ID *id)
void BKE_object_material_assign_single_obdata(struct Main *bmain, struct Object *ob, struct Material *ma, short act)
void BKE_object_material_remap_calc(struct Object *ob_dst, struct Object *ob_src, short *remap_src_to_dst)
short * BKE_object_material_len_p(struct Object *ob)
void BKE_texpaint_slot_refresh_cache(struct Scene *scene, struct Material *ma, const struct Object *ob)
void BKE_object_materials_test(struct Main *bmain, struct Object *ob, struct ID *id)
void BKE_id_material_append(struct Main *bmain, struct ID *id, struct Material *ma)
struct Material * BKE_material_default_surface(void)
struct Material * BKE_material_default_volume(void)
void BKE_texpaint_slots_refresh_object(struct Scene *scene, struct Object *ob)
void BKE_object_material_assign(struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type)
void BKE_id_materials_copy(struct Main *bmain, struct ID *id_src, struct ID *id_dst)
void BKE_object_material_resize(struct Main *bmain, struct Object *ob, short totcol, bool do_id_user)
void ramp_blend(int type, float r_col[3], float fac, const float col[3])
struct Material *** BKE_object_material_array_p(struct Object *ob)
void BKE_object_material_from_eval_data(struct Main *bmain, struct Object *ob_orig, const struct ID *data_eval)
int BKE_object_material_ensure(Main *bmain, Object *ob, Material *material)
void BKE_object_material_array_assign(struct Main *bmain, struct Object *ob, struct Material ***matar, int totcol, bool to_object_only)
void BKE_id_material_clear(struct Main *bmain, struct ID *id)
short * BKE_id_material_len_p(struct ID *id)
struct bNode * BKE_texpaint_slot_material_find_node(struct Material *ma, short texpaint_slot)
struct Material * BKE_material_add(struct Main *bmain, const char *name)
struct Material * BKE_object_material_get_eval(struct Object *ob, short act)
void BKE_object_material_remap(struct Object *ob, const unsigned int *remap)
@ BKE_MAT_ASSIGN_OBDATA
@ BKE_MAT_ASSIGN_USERPREF
@ BKE_MAT_ASSIGN_OBJECT
@ BKE_MAT_ASSIGN_EXISTING
void BKE_id_material_eval_ensure_default_slot(struct ID *id)
short BKE_object_material_slot_find_index(struct Object *ob, struct Material *ma)
void BKE_gpencil_material_attr_init(struct Material *ma)
bool BKE_object_material_slot_add(struct Main *bmain, struct Object *ob)
void BKE_material_defaults_free_gpu(void)
struct Material ** BKE_object_material_get_p(struct Object *ob, short act)
struct MaterialGPencilStyle * BKE_gpencil_material_settings(struct Object *ob, short act)
int BKE_object_material_index_get(Object *ob, const Material *ma)
void BKE_id_material_eval_assign(struct ID *id, int slot, struct Material *material)
int BKE_object_material_index_get_with_hint(Object *ob, const Material *ma, int hint_index)
struct Material * BKE_material_default_gpencil(void)
void BKE_id_material_resize(struct Main *bmain, struct ID *id, short totcol, bool do_id_user)
const Depsgraph * depsgraph
uint col
Definition DNA_ID.h:413