45 void Material::Apply()
49 Renderer::BindShader(m_shader);
51 for (
const auto& uniform : m_shader->GetLayout())
54 if (uniform.Type == ShaderDataType::Sampler2D)
continue;
63 void* data = m_buffer.data() + uniform.Offset;
65 if (m_definedUniforms[uniform.Index])
67 m_shader->SetUniform(uniform.Name, uniform.Type, data);
72 m_shader->SetUniform1i(
"has_diffuseTex", 0);
73 m_shader->SetUniform1i(
"has_specularTex", 0);
74 m_shader->SetUniform1i(
"has_ambientTex", 0);
77 for (
auto& tex : m_textures)
79 if (tex.second && tex.second->IsTextureLoaded())
81 Renderer::BindTexture(tex.second, slot);
82 m_shader->SetUniform1i(tex.first, slot);
83 m_shader->SetUniform1i(
"has_" + tex.first, 1);
90 EE_CORE_ERROR(
"Material::Apply() : Cannot apply uniforms to a shader that is nullptr.");
109 MaterialPtr MaterialRegistry::LoadMaterial(
const std::shared_ptr<Shader>& shader)
111 EE_TRACE(
"(MaterialRegistry) : Creating shader for shader : {}", shader->GetRendererID());
112 MaterialPtr material = MaterialFactory::Create(shader);
113 instance().m_materials[material->GetID()] = material;