From d276e875a81ba974dd0617129f0e348ae4cce196 Mon Sep 17 00:00:00 2001 From: antopilo Date: Thu, 17 Apr 2025 20:58:38 -0400 Subject: [PATCH] Fixed albedo not working when first importing asset --- .../Nuake/Modules/AssimpModule/GLTFBaker.cpp | 4 ++-- Nuake/Source/Nuake/Rendering/Textures/Material.h | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Nuake/Source/Nuake/Modules/AssimpModule/GLTFBaker.cpp b/Nuake/Source/Nuake/Modules/AssimpModule/GLTFBaker.cpp index a08005bf..a8c682ae 100644 --- a/Nuake/Source/Nuake/Modules/AssimpModule/GLTFBaker.cpp +++ b/Nuake/Source/Nuake/Modules/AssimpModule/GLTFBaker.cpp @@ -83,7 +83,7 @@ Ref GLTFBaker::Bake(const Ref& file) material = CreateRef(); if (!materialData.albedo.empty()) { - material->SetAlbedo(absolutePath + "/../" + materialData.albedo); + material->SetAlbedo(FileSystem::AbsoluteToRelative(absolutePath + "/../" + materialData.albedo)); } if (!materialData.normal.empty()) @@ -117,7 +117,7 @@ Ref GLTFBaker::Bake(const Ref& file) materialCache[materialPath] = material; } - mesh->MaterialResource = RID(material->ID); + mesh->SetMaterial(material); model->AddMesh(std::move(mesh)); } diff --git a/Nuake/Source/Nuake/Rendering/Textures/Material.h b/Nuake/Source/Nuake/Rendering/Textures/Material.h index 6f1ed2e4..dd83856a 100644 --- a/Nuake/Source/Nuake/Rendering/Textures/Material.h +++ b/Nuake/Source/Nuake/Rendering/Textures/Material.h @@ -100,7 +100,21 @@ namespace Nuake inline bool GetUnlit() { return data.u_Unlit == 1; } bool HasAlbedo() { return (m_Albedo != nullptr || AlbedoImage != UUID(0)); } - void SetAlbedo(const std::string path) { m_Albedo = CreateRef(path); } + void SetAlbedo(const std::string path) + { + if (FileSystem::FileExists(path)) + { + GPUResources& resources = GPUResources::Get(); + Ref image = CreateRef(FileSystem::RelativeToAbsolute(path)); + if (resources.AddTexture(image)) + { + AlbedoImage = image->GetID(); + } + + Ref albedoTexture = TextureManager::Get()->GetTexture(path); + SetAlbedo(albedoTexture); + } + } void SetAlbedo(Ref texture) { m_Albedo = texture; } bool HasAO() { return m_AO != nullptr; }