Blender V5.0
BKE_material.hh
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
12#include <optional>
13
14struct ID;
15struct Main;
16struct Material;
17struct Object;
18struct Scene;
19struct bNode;
20struct Depsgraph;
22
23/* -------------------------------------------------------------------- */
26
29
31
32/* -------------------------------------------------------------------- */
35
37void BKE_object_materials_sync_length(Main *bmain, Object *ob, ID *id);
38
41
42void BKE_object_material_resize(Main *bmain, Object *ob, short totcol, bool do_id_user);
43void BKE_object_material_remap(Object *ob, const unsigned int *remap);
50void BKE_object_material_remap_calc(Object *ob_dst, Object *ob_src, short *remap_src_to_dst);
54void BKE_object_material_from_eval_data(Main *bmain, Object *ob_orig, const ID *data_eval);
55Material *BKE_material_add(Main *bmain, const char *name);
56Material *BKE_gpencil_material_add(Main *bmain, const char *name);
59
60/* UNUSED */
61// void automatname(Material *);
62
64
65/* -------------------------------------------------------------------- */
68
74Material ***BKE_id_material_array_p(ID *id); /* same but for ID's */
75short *BKE_id_material_len_p(ID *id);
76
77enum {
78 /* use existing link option */
83};
84
87void BKE_id_material_assign(Main *bmain, ID *id, Material *ma, short act);
88void BKE_object_material_assign(Main *bmain, Object *ob, Material *ma, short act, int assign_type);
89
96void BKE_object_material_assign_single_obdata(Main *bmain, Object *ob, Material *ma, short act);
101 Main *bmain, Object *ob, Material ***matar, int totcol, bool to_object_only);
102
108bool BKE_object_material_slot_add(Main *bmain, Object *ob, bool set_active = true);
110bool BKE_object_material_slot_used(Object *object, short actcol);
111
119int BKE_object_material_index_get_with_hint(Object *ob, const Material *ma, int hint_index);
120
121int BKE_object_material_ensure(Main *bmain, Object *ob, Material *material);
122
123Material *BKE_gpencil_material(Object *ob, short act);
125
126void BKE_texpaint_slot_refresh_cache(Scene *scene, Material *ma, const Object *ob);
128bNode *BKE_texpaint_slot_material_find_node(Material *ma, short texpaint_slot);
129
131
132/* -------------------------------------------------------------------- */
135
136void BKE_id_materials_copy(Main *bmain, ID *id_src, ID *id_dst);
137void BKE_id_material_resize(Main *bmain, ID *id, short totcol, bool do_id_user);
138void BKE_id_material_append(Main *bmain, ID *id, Material *ma);
140 ID *id,
141 /* index is an int because of RNA. */
142 int index);
143void BKE_id_material_clear(Main *bmain, ID *id);
144
146
147/* -------------------------------------------------------------------- */
150
164const Material *BKE_object_material_get_eval(const Object &ob, const ID &data, short act);
171int BKE_object_material_count_eval(const Object &ob, const ID &data);
172
177std::optional<int> BKE_id_material_index_max_eval(const ID &id);
179int BKE_id_material_used_eval(const ID &id);
180
193
194void BKE_id_material_eval_assign(ID *id, int slot, Material *material);
200
202
203/* -------------------------------------------------------------------- */
206
212void ramp_blend(int type, float r_col[3], float fac, const float col[3]);
213
215
216/* -------------------------------------------------------------------- */
224
230
232
234
235/* -------------------------------------------------------------------- */
238
239void BKE_material_eval(Depsgraph *depsgraph, Material *material);
240
void BKE_objects_materials_sync_length_all(Main *bmain, ID *id)
void BKE_texpaint_slots_refresh_object(Scene *scene, Object *ob)
short * BKE_object_material_len_p(Object *ob)
int BKE_object_material_count_eval(const Object *ob)
@ BKE_MAT_ASSIGN_OBDATA
@ BKE_MAT_ASSIGN_USERPREF
@ BKE_MAT_ASSIGN_OBJECT
@ BKE_MAT_ASSIGN_EXISTING
void BKE_id_material_eval_ensure_default_slot(ID *id)
MaterialGPencilStyle * BKE_gpencil_material_settings(Object *ob, short act)
void BKE_gpencil_material_attr_init(Material *ma)
void BKE_object_material_assign_single_obdata(Main *bmain, Object *ob, Material *ma, short act)
void BKE_id_material_clear(Main *bmain, ID *id)
Material ** BKE_object_material_get_p(Object *ob, short act)
void BKE_object_material_remap(Object *ob, const unsigned int *remap)
void BKE_id_material_assign(Main *bmain, ID *id, Material *ma, short act)
short * BKE_id_material_len_p(ID *id)
Material * BKE_material_default_surface()
Material *** BKE_id_material_array_p(ID *id)
short BKE_object_material_slot_find_index(Object *ob, Material *ma)
Material * BKE_material_default_volume()
Material * BKE_gpencil_material(Object *ob, short act)
void BKE_material_eval(Depsgraph *depsgraph, Material *material)
void BKE_material_defaults_free_gpu()
void BKE_object_material_from_eval_data(Main *bmain, Object *ob_orig, const ID *data_eval)
Material * BKE_gpencil_material_add(Main *bmain, const char *name)
void BKE_object_materials_sync_length(Main *bmain, Object *ob, ID *id)
void BKE_id_materials_copy(Main *bmain, ID *id_src, ID *id_dst)
Material * BKE_material_default_holdout()
void BKE_materials_init()
void BKE_id_material_resize(Main *bmain, ID *id, short totcol, bool do_id_user)
void BKE_texpaint_slot_refresh_cache(Scene *scene, Material *ma, const Object *ob)
bool BKE_object_material_slot_add(Main *bmain, Object *ob, bool set_active=true)
Material * BKE_material_default_gpencil()
void BKE_id_material_eval_assign(ID *id, int slot, Material *material)
void ramp_blend(int type, float r_col[3], float fac, const float col[3])
void BKE_object_material_array_assign(Main *bmain, Object *ob, Material ***matar, int totcol, bool to_object_only)
Material * BKE_material_add(Main *bmain, const char *name)
void BKE_id_material_append(Main *bmain, ID *id, Material *ma)
bool BKE_object_material_slot_used(Object *object, short actcol)
int BKE_object_material_ensure(Main *bmain, Object *ob, Material *material)
void BKE_object_material_resize(Main *bmain, Object *ob, short totcol, bool do_id_user)
Material * BKE_material_default_empty()
int BKE_id_material_used_with_fallback_eval(const ID &id)
Material * BKE_object_material_get(Object *ob, short act)
void BKE_object_material_remap_calc(Object *ob_dst, Object *ob_src, short *remap_src_to_dst)
Material * BKE_id_material_pop(Main *bmain, ID *id, int index)
Material * BKE_object_material_get_eval(Object *ob, short act)
std::optional< int > BKE_id_material_index_max_eval(const ID &id)
void BKE_object_material_assign(Main *bmain, Object *ob, Material *ma, short act, int assign_type)
void BKE_materials_exit()
bNode * BKE_texpaint_slot_material_find_node(Material *ma, short texpaint_slot)
int BKE_object_material_used_with_fallback_eval(const Object &ob)
int BKE_object_material_index_get(Object *ob, const Material *ma)
int BKE_object_material_index_get_with_hint(Object *ob, const Material *ma, int hint_index)
int BKE_id_material_used_eval(const ID &id)
void BKE_material_make_node_previews_dirty(Material *ma)
Material *** BKE_object_material_array_p(Object *ob)
bool BKE_object_material_slot_remove(Main *bmain, Object *ob)
BMesh const char void * data
BPy_StructRNA * depsgraph
uint col
const char * name
Definition DNA_ID.h:414