Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/blender/blender_geometry.cpp
| Show First 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | |||||
| array<Node *> BlenderSync::find_used_shaders(BL::Object &b_ob) | array<Node *> BlenderSync::find_used_shaders(BL::Object &b_ob) | ||||
| { | { | ||||
| BL::Material material_override = view_layer.material_override; | BL::Material material_override = view_layer.material_override; | ||||
| Shader *default_shader = (b_ob.type() == BL::Object::type_VOLUME) ? scene->default_volume : | Shader *default_shader = (b_ob.type() == BL::Object::type_VOLUME) ? scene->default_volume : | ||||
| scene->default_surface; | scene->default_surface; | ||||
| array<Node *> used_shaders; | array<Node *> used_shaders; | ||||
| for (BL::MaterialSlot &b_slot : b_ob.material_slots) { | const int tot_materials = b_ob.material_count_eval(); | ||||
| for (int i = 0; i < tot_materials; i++) { | |||||
| if (material_override) { | if (material_override) { | ||||
| find_shader(material_override, used_shaders, default_shader); | find_shader(material_override, used_shaders, default_shader); | ||||
| } | } | ||||
| else { | else { | ||||
| BL::ID b_material(b_slot.material()); | BL::ID b_material(b_ob.material_get_eval(i)); | ||||
| find_shader(b_material, used_shaders, default_shader); | find_shader(b_material, used_shaders, default_shader); | ||||
| } | } | ||||
| } | } | ||||
| if (used_shaders.size() == 0) { | if (used_shaders.size() == 0) { | ||||
| if (material_override) | if (material_override) | ||||
| find_shader(material_override, used_shaders, default_shader); | find_shader(material_override, used_shaders, default_shader); | ||||
| else | else | ||||
| ▲ Show 20 Lines • Show All 169 Lines • Show Last 20 Lines | |||||