void BlinnPhongShader::LoadMaterialFromAssimp(std::shared_ptr<aiMaterial> assimpMaterial) { if (!assimpMaterial) { return; } assimpMaterial->Get(AI_MATKEY_COLOR_DIFFUSE, glm::value_ptr(diffuse), nullptr); assimpMaterial->Get(AI_MATKEY_COLOR_SPECULAR, glm::value_ptr(specular), nullptr); assimpMaterial->Get(AI_MATKEY_SHININESS, &shininess, nullptr); assimpMaterial->Get(AI_MATKEY_COLOR_AMBIENT, glm::value_ptr(ambient), nullptr); if (assimpMaterial->GetTextureCount(aiTextureType_DIFFUSE)) { aiString aiDiffusePath; assimpMaterial->GetTexture(aiTextureType_DIFFUSE, 0, &aiDiffusePath); std::string diffusePath(aiDiffusePath.C_Str()); SetTexture(TextureSlots::DIFFUSE, TextureLoader::LoadTexture(diffusePath)); } if (assimpMaterial->GetTextureCount(aiTextureType_SPECULAR)) { aiString aiSpecularPath; assimpMaterial->GetTexture(aiTextureType_SPECULAR, 0, &aiSpecularPath); std::string specularPath(aiSpecularPath.C_Str()); SetTexture(TextureSlots::SPECULAR, TextureLoader::LoadTexture(specularPath)); } UpdateMaterialBlock(); }
void EpicShader::LoadMaterialFromAssimp(std::shared_ptr<aiMaterial> assimpMaterial) { if (!assimpMaterial) { return; } if (assimpMaterial->GetTextureCount(aiTextureType_DIFFUSE)) { aiString aiDiffusePath; assimpMaterial->GetTexture(aiTextureType_DIFFUSE, 0, &aiDiffusePath); std::string diffusePath(aiDiffusePath.C_Str()); SetTexture(TextureSlots::DIFFUSE, TextureLoader::LoadTexture(diffusePath)); } else { // for mtl files with only colors... assimpMaterial->Get(AI_MATKEY_COLOR_DIFFUSE, glm::value_ptr(diffuse), nullptr); } UpdateMaterialBlock(); }