Blender V4.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)
 
void BKE_material_make_node_previews_dirty (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 (const 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])
 
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)
 
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_object_material_ensure (Main *bmain, Object *ob, Material *material)
 
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 79 of file BKE_material.h.

Function Documentation

◆ BKE_gpencil_material()

◆ BKE_gpencil_material_add()

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

◆ BKE_gpencil_material_attr_init()

◆ BKE_gpencil_material_settings()

◆ BKE_id_material_append()

◆ BKE_id_material_array_p()

◆ BKE_id_material_assign()

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

◆ BKE_id_material_clear()

◆ BKE_id_material_eval_assign()

◆ BKE_id_material_eval_ensure_default_slot()

◆ BKE_id_material_len_p()

◆ BKE_id_material_pop()

◆ 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()

◆ BKE_material_add()

◆ BKE_material_default_empty()

struct Material * BKE_material_default_empty ( void )

◆ BKE_material_default_gpencil()

◆ BKE_material_default_holdout()

struct Material * BKE_material_default_holdout ( void )

Definition at line 2080 of file blenkernel/intern/material.cc.

References default_material_holdout.

◆ BKE_material_default_surface()

◆ BKE_material_default_volume()

◆ 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_material_make_node_previews_dirty()

void BKE_material_make_node_previews_dirty ( struct Material * ma)

◆ BKE_materials_exit()

void BKE_materials_exit ( void )

Definition at line 2124 of file blenkernel/intern/material.cc.

References default_materials, and material_free_data().

Referenced by WM_exit_ex().

◆ BKE_materials_init()

◆ BKE_object_material_array_assign()

◆ BKE_object_material_array_p()

◆ BKE_object_material_assign()

◆ 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 1147 of file blenkernel/intern/material.cc.

References BKE_MAT_ASSIGN_OBDATA, and object_material_assign().

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

◆ BKE_object_material_count_eval()

◆ BKE_object_material_ensure()

◆ 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 )

◆ BKE_object_material_get()

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

Definition at line 725 of file blenkernel/intern/material.cc.

References BKE_object_material_get_p(), Material::gp_style, OB_GREASE_PENCIL, and Object::type.

Referenced by InstanceWriter::add_material_bindings(), animdata_filter_ds_materials(), blender::io::usd::USDCurvesWriter::assign_materials(), blender::ed::greasepencil::bake_grease_pencil_animation_exec(), blender::ed::object::bake_object_check(), bc_has_animations(), BKE_gpencil_material(), BKE_gpencil_material_find_index_by_name_prefix(), BKE_gpencil_material_settings(), BKE_grease_pencil_object_material_ensure_by_name(), BKE_grease_pencil_object_material_ensure_from_active_input_material(), BKE_grease_pencil_object_material_ensure_from_brush(), BKE_grease_pencil_object_material_from_brush_get(), BKE_grease_pencil_object_material_index_get_by_name(), BKE_object_material_index_get(), BKE_object_material_index_get_with_hint(), BKE_object_material_remap_calc(), BKE_texpaint_slots_refresh_object(), buttons_context_path_material(), GeometryExporter::create_mesh_primitive_list(), blender::ed::greasepencil::image_render::draw_grease_pencil_strokes(), blender::ed::object::drop_named_material_tooltip(), ED_mesh_join_objects_exec(), ED_object_assign_active_image(), ED_object_get_active_image(), ED_object_texture_paint_mode_enter_ex(), ED_paint_proj_mesh_data_check(), AnimationExporter::export_curve_animation(), blender::ui::greasepencil::eyedropper_add_material(), eyedropper_cryptomatte_sample_view3d_fl(), blender::bke::paint::canvas::get_active_slot(), blender::ed::sculpt_paint::canvas::get_active_slot(), BCAnimationCurve::get_animation_name(), blender::ed::greasepencil::get_boundary_bounds(), blender::ed::space_node::get_context_path_node_shader(), get_default_texture_layer_name_for_object(), blender::ed::greasepencil::get_editable_material_indices(), blender::ed::greasepencil::get_fill_material_indices(), blender::modifier::greasepencil::get_grease_pencil_material_passes(), blender::ed::greasepencil::get_hidden_material_indices(), get_or_create_current_material(), blender::ed::greasepencil::get_visible_boundary_strokes(), blender::io::grease_pencil::get_visible_strokes(), blender::ed::sculpt_paint::grease_pencil_fill_invoke(), blender::ed::greasepencil::grease_pencil_material_copy_to_object_exec(), blender::ed::greasepencil::grease_pencil_material_hide_exec(), blender::ed::greasepencil::grease_pencil_material_lock_all_exec(), blender::ed::greasepencil::grease_pencil_material_lock_unselected_exec(), blender::ed::greasepencil::grease_pencil_material_lock_unused_exec(), blender::ed::greasepencil::grease_pencil_material_unlock_all_exec(), imapaint_pick_uv(), blender::io::obj::OBJImportTest::import_and_check(), CryptomatteSession::init(), Freestyle::BlenderFileLoader::insertShapeNode(), join_mesh_single(), lineart_load_tri_task(), blender::ed::object::make_links_data_exec(), blender::ed::greasepencil::material_enum_itemf(), material_slot_assign_exec(), material_slot_de_select(), blender::modify_fill_color(), blender::modify_fill_color(), blender::modify_stroke_color(), blender::modify_stroke_color(), blender::ed::object::object_grease_pencil_add_exec(), blender::ed::object::object_select_all_by_material(), blender::ed::object::object_select_linked_exec(), ForEachMaterialFunctor< Functor >::operator()(), paint_sample_color(), proj_paint_state_mesh_eval_init(), psys_cache_paths(), psys_get_particle_on_path(), psys_thread_context_init(), shader_get_from_context(), blender::ed::object::single_mat_users(), texture_paint_add_texture_paint_slot_invoke(), AnimationImporter::translate_Animations(), and versioning_eevee_shadow_settings().

◆ 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_index_get()

◆ BKE_object_material_index_get_with_hint()

int BKE_object_material_index_get_with_hint ( Object * ob,
const Material * ma,
int hint_index )

A version of BKE_object_material_index_get that takes an index to test first.

Parameters
hint_indexWhen this index is in a valid range, test it first. Useful when an active-index is preferred but may not match the material.

Definition at line 855 of file blenkernel/intern/material.cc.

References BKE_object_material_get(), BKE_object_material_index_get(), and BKE_object_material_len_p().

Referenced by material_slot_de_select().

◆ BKE_object_material_len_p()

◆ BKE_object_material_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 1182 of file blenkernel/intern/material.cc.

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

Referenced by BMD_mesh_intersection().

◆ BKE_object_material_resize()

◆ BKE_object_material_slot_add()

◆ BKE_object_material_slot_find_index()

short BKE_object_material_slot_find_index ( struct Object * ob,
struct Material * ma )

◆ BKE_object_material_slot_remove()

◆ BKE_object_material_slot_used()

◆ BKE_object_materials_test()

◆ BKE_objects_materials_test_all()

◆ BKE_texpaint_slot_material_find_node()

◆ 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()