Blender  V3.3
BKE_material.h File Reference

General operations, lookup, etc. for materials. More...

Go to the source code of this file.

Functions

Module
void BKE_materials_init (void)
 
void BKE_materials_exit (void)
 
Materials
void BKE_object_materials_test (struct Main *bmain, struct Object *ob, struct ID *id)
 
void BKE_objects_materials_test_all (struct Main *bmain, struct ID *id)
 
void BKE_object_material_resize (struct Main *bmain, struct Object *ob, short totcol, bool do_id_user)
 
void BKE_object_material_remap (struct Object *ob, const unsigned int *remap)
 
void BKE_object_material_remap_calc (struct Object *ob_dst, struct Object *ob_src, short *remap_src_to_dst)
 
void BKE_object_material_from_eval_data (struct Main *bmain, struct Object *ob_orig, const struct ID *data_eval)
 
struct MaterialBKE_material_add (struct Main *bmain, const char *name)
 
struct MaterialBKE_gpencil_material_add (struct Main *bmain, const char *name)
 
void BKE_gpencil_material_attr_init (struct Material *ma)
 
RNA API
void BKE_id_materials_copy (struct Main *bmain, struct ID *id_src, struct ID *id_dst)
 
void BKE_id_material_resize (struct Main *bmain, struct ID *id, short totcol, bool do_id_user)
 
void BKE_id_material_append (struct Main *bmain, struct ID *id, struct Material *ma)
 
struct MaterialBKE_id_material_pop (struct Main *bmain, struct ID *id, int index)
 
void BKE_id_material_clear (struct Main *bmain, struct ID *id)
 
Evaluation API
struct MaterialBKE_object_material_get_eval (struct Object *ob, short act)
 
int BKE_object_material_count_eval (struct Object *ob)
 
void BKE_id_material_eval_assign (struct ID *id, int slot, struct Material *material)
 
void BKE_id_material_eval_ensure_default_slot (struct ID *id)
 
Rendering
void ramp_blend (int type, float r_col[3], float fac, const float col[3])
 
Copy/Paste
void BKE_material_copybuf_clear (void)
 
void BKE_material_copybuf_free (void)
 
void BKE_material_copybuf_copy (struct Main *bmain, struct Material *ma)
 
void BKE_material_copybuf_paste (struct Main *bmain, struct Material *ma)
 
Default Materials
struct MaterialBKE_material_default_empty (void)
 
struct MaterialBKE_material_default_holdout (void)
 
struct MaterialBKE_material_default_surface (void)
 
struct MaterialBKE_material_default_volume (void)
 
struct MaterialBKE_material_default_gpencil (void)
 
void BKE_material_defaults_free_gpu (void)
 
Dependency graph evaluation
void BKE_material_eval (struct Depsgraph *depsgraph, struct Material *material)
 

Material Slots

enum  { BKE_MAT_ASSIGN_EXISTING , BKE_MAT_ASSIGN_USERPREF , BKE_MAT_ASSIGN_OBDATA , BKE_MAT_ASSIGN_OBJECT }
 
struct Material *** BKE_object_material_array_p (struct Object *ob)
 
short * BKE_object_material_len_p (struct Object *ob)
 
struct Material *** BKE_id_material_array_p (struct ID *id)
 
short * BKE_id_material_len_p (struct ID *id)
 
struct Material ** BKE_object_material_get_p (struct Object *ob, short act)
 
struct MaterialBKE_object_material_get (struct Object *ob, short act)
 
void BKE_id_material_assign (struct Main *bmain, struct ID *id, struct Material *ma, short act)
 
void BKE_object_material_assign (struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type)
 
void BKE_object_material_assign_single_obdata (struct Main *bmain, struct Object *ob, struct Material *ma, short act)
 
void BKE_object_material_array_assign (struct Main *bmain, struct Object *ob, struct Material ***matar, int totcol, bool to_object_only)
 
short BKE_object_material_slot_find_index (struct Object *ob, struct Material *ma)
 
bool BKE_object_material_slot_add (struct Main *bmain, struct Object *ob)
 
bool BKE_object_material_slot_remove (struct Main *bmain, struct Object *ob)
 
bool BKE_object_material_slot_used (struct Object *object, short actcol)
 
struct MaterialBKE_gpencil_material (struct Object *ob, short act)
 
struct MaterialGPencilStyleBKE_gpencil_material_settings (struct Object *ob, short act)
 
void BKE_texpaint_slot_refresh_cache (struct Scene *scene, struct Material *ma, const struct Object *ob)
 
void BKE_texpaint_slots_refresh_object (struct Scene *scene, struct Object *ob)
 
struct bNodeBKE_texpaint_slot_material_find_node (struct Material *ma, short texpaint_slot)
 

Detailed Description

General operations, lookup, etc. for materials.

Definition in file BKE_material.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
BKE_MAT_ASSIGN_EXISTING 
BKE_MAT_ASSIGN_USERPREF 
BKE_MAT_ASSIGN_OBDATA 
BKE_MAT_ASSIGN_OBJECT 

Definition at line 77 of file BKE_material.h.

Function Documentation

◆ BKE_gpencil_material()

struct Material* BKE_gpencil_material ( struct Object ob,
short  act 
)

◆ BKE_gpencil_material_add()

struct Material* BKE_gpencil_material_add ( struct Main bmain,
const char *  name 
)

◆ BKE_gpencil_material_attr_init()

void BKE_gpencil_material_attr_init ( struct Material ma)

◆ BKE_gpencil_material_settings()

struct MaterialGPencilStyle* BKE_gpencil_material_settings ( struct Object ob,
short  act 
)

◆ BKE_id_material_append()

void BKE_id_material_append ( struct Main bmain,
struct ID id,
struct Material ma 
)

◆ BKE_id_material_array_p()

struct Material*** BKE_id_material_array_p ( struct ID id)

◆ BKE_id_material_assign()

void BKE_id_material_assign ( struct Main bmain,
struct ID id,
struct Material ma,
short  act 
)

◆ BKE_id_material_clear()

void BKE_id_material_clear ( struct Main bmain,
struct ID id 
)

◆ BKE_id_material_eval_assign()

void BKE_id_material_eval_assign ( struct ID id,
int  slot,
struct Material material 
)

◆ BKE_id_material_eval_ensure_default_slot()

void BKE_id_material_eval_ensure_default_slot ( struct ID id)

◆ BKE_id_material_len_p()

short* BKE_id_material_len_p ( struct ID id)

◆ BKE_id_material_pop()

struct Material* BKE_id_material_pop ( struct Main bmain,
struct ID id,
int  index 
)

◆ BKE_id_material_resize()

void BKE_id_material_resize ( struct Main bmain,
struct ID id,
short  totcol,
bool  do_id_user 
)

◆ BKE_id_materials_copy()

void BKE_id_materials_copy ( struct Main bmain,
struct ID id_src,
struct ID id_dst 
)

◆ BKE_material_add()

struct Material* BKE_material_add ( struct Main bmain,
const char *  name 
)

◆ BKE_material_copybuf_clear()

void BKE_material_copybuf_clear ( void  )

Definition at line 1871 of file material.c.

References matcopied, and matcopybuf.

Referenced by WM_init().

◆ BKE_material_copybuf_copy()

void BKE_material_copybuf_copy ( struct Main bmain,
struct Material ma 
)

◆ BKE_material_copybuf_free()

void BKE_material_copybuf_free ( void  )

◆ BKE_material_copybuf_paste()

void BKE_material_copybuf_paste ( struct Main bmain,
struct Material ma 
)

◆ BKE_material_default_empty()

struct Material* BKE_material_default_empty ( void  )

Definition at line 2041 of file material.c.

References default_material_empty.

Referenced by workbench_object_material_get().

◆ BKE_material_default_gpencil()

struct Material* BKE_material_default_gpencil ( void  )

◆ BKE_material_default_holdout()

struct Material* BKE_material_default_holdout ( void  )

Definition at line 2046 of file material.c.

References default_material_holdout.

Referenced by eevee_object_material_get().

◆ BKE_material_default_surface()

struct Material* BKE_material_default_surface ( void  )

◆ BKE_material_default_volume()

struct Material* BKE_material_default_volume ( void  )

◆ BKE_material_defaults_free_gpu()

void BKE_material_defaults_free_gpu ( void  )

◆ BKE_material_eval()

void BKE_material_eval ( struct Depsgraph depsgraph,
struct Material material 
)

◆ BKE_materials_exit()

void BKE_materials_exit ( void  )

Definition at line 2090 of file material.c.

References default_materials, and material_free_data().

Referenced by WM_exit_ex().

◆ BKE_materials_init()

void BKE_materials_init ( void  )

◆ BKE_object_material_array_assign()

void BKE_object_material_array_assign ( struct Main bmain,
struct Object ob,
struct Material ***  matar,
int  totcol,
bool  to_object_only 
)
Warning
this calls many more update calls per object then are needed, could be optimized.

Definition at line 1173 of file material.c.

References Object::actcol, BKE_MAT_ASSIGN_OBJECT, BKE_MAT_ASSIGN_USERPREF, BKE_object_material_assign(), BKE_object_material_slot_remove(), Object::matbits, and Object::totcol.

Referenced by material_slot_copy_exec(), mesh_separate_arrays(), and mesh_separate_tagged().

◆ BKE_object_material_array_p()

struct Material*** BKE_object_material_array_p ( struct Object ob)

◆ BKE_object_material_assign()

void BKE_object_material_assign ( struct Main bmain,
struct Object ob,
struct Material ma,
short  act,
int  assign_type 
)

◆ BKE_object_material_assign_single_obdata()

void BKE_object_material_assign_single_obdata ( struct Main bmain,
struct Object ob,
struct Material ma,
short  act 
)

Similar to BKE_object_material_assign with BKE_MAT_ASSIGN_OBDATA type, but does not scan whole Main for other usages of the same obdata. Only use in cases where you know that the object's obdata is only used by this one object.

Definition at line 1052 of file material.c.

References BKE_MAT_ASSIGN_OBDATA, and object_material_assign().

Referenced by utils::assign_materials(), and blender::io::alembic::utils::assign_materials().

◆ BKE_object_material_count_eval()

int BKE_object_material_count_eval ( struct Object ob)

◆ BKE_object_material_from_eval_data()

void BKE_object_material_from_eval_data ( struct Main bmain,
struct Object ob_orig,
const struct ID data_eval 
)

Copy materials from evaluated geometry to the original geometry of an object.

Referenced by modifier_apply_obdata(), and object_convert_exec().

◆ BKE_object_material_get()

struct Material* BKE_object_material_get ( struct Object ob,
short  act 
)

Definition at line 687 of file material.c.

References BKE_object_material_get_p(), and NULL.

Referenced by InstanceWriter::add_material_bindings(), animdata_filter_ds_materials(), bake_object_check(), bc_has_animations(), BKE_gpencil_convert_mesh(), BKE_gpencil_material(), BKE_gpencil_material_find_index_by_name_prefix(), BKE_gpencil_material_settings(), BKE_gpencil_object_material_ensure_by_name(), BKE_gpencil_object_material_ensure_from_active_input_material(), BKE_gpencil_object_material_ensure_from_brush(), BKE_gpencil_object_material_from_brush_get(), BKE_gpencil_object_material_index_get(), BKE_gpencil_object_material_index_get_by_name(), BKE_object_material_remap_calc(), BKE_texpaint_slots_refresh_object(), buttons_context_path_material(), GeometryExporter::create_mesh_primitive_list(), ED_gpencil_material_enum_itemf(), ED_mesh_join_objects_exec(), ED_object_assign_active_image(), ED_object_get_active_image(), ED_object_ot_drop_named_material_tooltip(), ED_object_texture_paint_mode_enter_ex(), ED_paint_proj_mesh_data_check(), AnimationExporter::export_curve_animation(), eyedropper_add_material(), blender::bke::paint::canvas::get_active_slot(), blender::ed::sculpt_paint::canvas::get_active_slot(), BCAnimationCurve::get_animation_name(), get_automasking_strokes_list(), blender::ed::space_node::get_context_path_node_shader(), get_default_texture_layer_name_for_object(), get_or_create_current_material(), gpencil_bake_grease_pencil_animation_exec(), gpencil_check_same_material_color(), gpencil_fill_invoke(), gpencil_layer_duplicate_object_exec(), gpencil_material_find_index_by_name(), gpencil_material_lock_unsused_exec(), gpencil_materials_copy_to_object_exec(), gpencil_modifier_masking_panel_draw(), gpencil_strokes_copy_exec(), imapaint_pick_uv(), Freestyle::BlenderFileLoader::insertShapeNode(), join_mesh_single(), make_links_data_exec(), material_slot_assign_exec(), material_slot_de_select(), mesh_new_from_mball_object(), object_frame_has_keyframe(), object_select_all_by_material(), object_select_linked_exec(), ForEachMaterialFunctor< Functor >::operator()(), paint_sample_color(), proj_paint_state_mesh_eval_init(), psys_get_particle_on_path(), psys_thread_context_init(), shader_get_from_context(), single_mat_users(), texture_paint_add_texture_paint_slot_invoke(), and AnimationImporter::translate_Animations().

◆ BKE_object_material_get_eval()

struct Material* BKE_object_material_get_eval ( struct Object ob,
short  act 
)

◆ BKE_object_material_get_p()

struct Material** BKE_object_material_get_p ( struct Object ob,
short  act 
)

◆ BKE_object_material_len_p()

short* BKE_object_material_len_p ( struct Object ob)

◆ BKE_object_material_remap()

void BKE_object_material_remap ( struct Object ob,
const unsigned int *  remap 
)

◆ BKE_object_material_remap_calc()

void BKE_object_material_remap_calc ( struct Object ob_dst,
struct Object ob_src,
short *  remap_src_to_dst 
)

Calculate a material remapping from ob_src to ob_dst.

Parameters
remap_src_to_dstAn array the size of ob_src->totcol where index values are filled in which map to ob_dst materials.

Definition at line 1090 of file material.c.

References BKE_object_material_get(), BLI_ghash_free(), BLI_ghash_lookup_p(), BLI_ghash_ptr_new_ex(), BLI_ghash_reinsert(), NULL, POINTER_AS_INT, POINTER_FROM_INT, and Object::totcol.

Referenced by BMD_mesh_intersection().

◆ BKE_object_material_resize()

void BKE_object_material_resize ( struct Main bmain,
struct Object ob,
short  totcol,
bool  do_id_user 
)

◆ BKE_object_material_slot_add()

bool BKE_object_material_slot_add ( struct Main bmain,
struct Object ob 
)

◆ BKE_object_material_slot_find_index()

short BKE_object_material_slot_find_index ( struct Object ob,
struct Material ma 
)

◆ BKE_object_material_slot_remove()

bool BKE_object_material_slot_remove ( struct Main bmain,
struct Object ob 
)

◆ BKE_object_material_slot_used()

bool BKE_object_material_slot_used ( struct Object object,
short  actcol 
)

◆ BKE_object_materials_test()

void BKE_object_materials_test ( struct Main bmain,
struct Object ob,
struct ID id 
)

◆ BKE_objects_materials_test_all()

void BKE_objects_materials_test_all ( struct Main bmain,
struct ID id 
)

◆ BKE_texpaint_slot_material_find_node()

struct bNode* BKE_texpaint_slot_material_find_node ( struct Material ma,
short  texpaint_slot 
)

◆ BKE_texpaint_slot_refresh_cache()

void BKE_texpaint_slot_refresh_cache ( struct Scene scene,
struct Material ma,
const struct Object ob 
)

◆ BKE_texpaint_slots_refresh_object()

void BKE_texpaint_slots_refresh_object ( struct Scene scene,
struct Object ob 
)

◆ ramp_blend()

void ramp_blend ( int  type,
float  r_col[3],
float  fac,
const float  col[3] 
)