Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
"ASSIMP_BUILD_ASSIMP_TOOLS": "OFF",
"ASSIMP_BUILD_ALL_IMPORTERS_BY_DEFAULT": "OFF",
"ASSIMP_BUILD_OBJ_IMPORTER": "ON",
"ASSIMP_BUILD_FBX_IMPORTER": "ON",
"ASSIMP_BUILD_ALL_EXPORTERS_BY_DEFAULT": "OFF",
"ASSIMP_BUILD_OBJ_EXPORTER": "ON",

Expand Down
10 changes: 8 additions & 2 deletions Tetragrama/Components/AssetImporterUIComponent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,13 @@ namespace Tetragrama::Components
// import memory — engine importers and editor importers — is budget-tracked.
auto* import_arena = &ZEngine::Engine::GetContext()->ImportPipelineArena;
import_arena->CreateSubArena(ZMega(64), &GltfImporterArena);
import_arena->CreateSubArena(ZMega(350), &AssimpImporterArena);
import_arena->CreateSubArena(ZMega(128), &AssimpImporterArena);

m_gltf_importer = ZPushStructCtor(import_arena, ZEngine::Importers::GltfImporter);
m_fbx_importer = ZPushStructCtor(import_arena, ZEngine::Importers::FbxImporter);
m_assimp_importer = ZPushStructCtor(import_arena, ZEngine::Importers::AssimpImporter);
m_gltf_importer->Initialize(&GltfImporterArena);
m_fbx_importer->Initialize(import_arena);
m_assimp_importer->Initialize(&AssimpImporterArena);

m_path_buf.init(&LocalStringArena, 1024);
Expand Down Expand Up @@ -138,7 +140,7 @@ namespace Tetragrama::Components

void AssetImporterUIComponent::StartImport()
{
if (!m_gltf_importer || !m_assimp_importer)
if (!m_gltf_importer || !m_fbx_importer || !m_assimp_importer)
return;

auto* app = reinterpret_cast<Tetragrama::EditorPtr>(ParentLayer->CurrentApp);
Expand Down Expand Up @@ -198,6 +200,10 @@ namespace Tetragrama::Components
{
ZEngine::Helpers::ThreadPoolHelper::Submit([this, src = m_path_buf, cfg_copy, arena = &LocalArena, app]() mutable { m_gltf_importer->ImportFile(src.c_str(), cfg_copy, arena, this, OnImportFileComplete, OnImportProgress, OnImportError, OnImportLog); });
}
else if (secure_strcmp(ext.Data, ".fbx") == 0)
{
ZEngine::Helpers::ThreadPoolHelper::Submit([this, src = m_path_buf, cfg_copy, arena = &LocalArena, app]() mutable { m_fbx_importer->ImportFile(src.c_str(), cfg_copy, arena, this, OnImportFileComplete, OnImportProgress, OnImportError, OnImportLog); });
}
else
{
ZEngine::Helpers::ThreadPoolHelper::Submit([this, src = m_path_buf, cfg_copy, arena = &LocalArena, app]() mutable { m_assimp_importer->ImportFile(src.c_str(), cfg_copy, arena, this, OnImportFileComplete, OnImportProgress, OnImportError, OnImportLog); });
Expand Down
2 changes: 2 additions & 0 deletions Tetragrama/Components/AssetImporterUIComponent.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <ZEngine/Core/Memory/Allocator.h>
#include <ZEngine/Importers/AssetTypes.h>
#include <ZEngine/Importers/AssimpImporter.h>
#include <ZEngine/Importers/FbxImporter.h>
#include <ZEngine/Importers/GltfImporter.h>
#include <ZEngine/ZEngineDef.h>
#include <future>
Expand Down Expand Up @@ -92,6 +93,7 @@ namespace Tetragrama::Components

// Importers — allocated from parent arena in Initialize()
ZEngine::Importers::GltfImporter* m_gltf_importer = nullptr;
ZEngine::Importers::FbxImporter* m_fbx_importer = nullptr;
ZEngine::Importers::AssimpImporter* m_assimp_importer = nullptr;

void PushLog(cstring text, const float color[4]);
Expand Down
4 changes: 2 additions & 2 deletions ZEngine/ZEngine/Core/Memory/MemoryManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,12 @@ namespace ZEngine::Core::Memory
MemoryBudgetConfig cfg = {};
cfg.AudioEngine = {"AudioEngine", ZMega(128ULL)};
cfg.AnimationManager = {"AnimationManager", ZMega(256ULL)};
cfg.AssetManager = {"AssetManager", ZMega(512ULL)};
cfg.AssetManager = {"AssetManager", ZGiga(1ULL)};
cfg.ECSScene = {"ECSScene", ZMega(512ULL)};
cfg.Logging = {"Logging", ZMega(8ULL)};
cfg.VirtualFS = {"VirtualFS", ZMega(64ULL)};
cfg.VulkanDevice = {"VulkanDevice", ZGiga(1ULL)};
cfg.ImportPipeline = {"ImportPipeline", ZGiga(1ULL)}; // glTF 64 + Assimp 128 + envmap 32 + editor ~414 MB; each carves directly
cfg.ImportPipeline = {"ImportPipeline", ZMega(3584ULL)}; // 3.5 GB — each importer gets generous headroom for large scenes
cfg.UIContext = {"UIContext", ZMega(64ULL)};
cfg.Swapchain = {"Swapchain", ZMega(8ULL)};
cfg.ShaderCache = {"ShaderCache", ZMega(64ULL)};
Expand Down
4 changes: 4 additions & 0 deletions ZEngine/ZEngine/Engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <ZEngine/Helpers/ThreadPool.h>
#include <ZEngine/Importers/AssimpImporter.h>
#include <ZEngine/Importers/EnvironmentMapImporter.h>
#include <ZEngine/Importers/FbxImporter.h>
#include <ZEngine/Importers/GltfImporter.h>
#include <ZEngine/Importers/ImportCoordinator.h>
#include <ZEngine/Input/InputManager.h>
Expand Down Expand Up @@ -95,12 +96,15 @@ namespace ZEngine
g_engine_ctx->ImportCoordinator->Initialize(&g_engine_ctx->AssetArena, g_engine_ctx->VFS, Managers::AssetManager::Instance()->Registry);

static Importers::GltfImporter s_gltf_importer;
static Importers::FbxImporter s_fbx_importer;
static Importers::AssimpImporter s_assimp_importer;
static Importers::EnvironmentMapImporter s_env_map_importer;
s_gltf_importer.Initialize(&g_engine_ctx->ImportPipelineArena);
s_fbx_importer.Initialize(&g_engine_ctx->ImportPipelineArena);
s_assimp_importer.Initialize(&g_engine_ctx->ImportPipelineArena);
s_env_map_importer.Initialize(&g_engine_ctx->ImportPipelineArena);
g_engine_ctx->ImportCoordinator->RegisterImporter(&s_gltf_importer);
g_engine_ctx->ImportCoordinator->RegisterImporter(&s_fbx_importer);
g_engine_ctx->ImportCoordinator->RegisterImporter(&s_assimp_importer);
g_engine_ctx->ImportCoordinator->RegisterImporter(&s_env_map_importer);

Expand Down
2 changes: 1 addition & 1 deletion ZEngine/ZEngine/Importers/AssimpImporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ namespace ZEngine::Importers
{
if (!extension)
return false;
return secure_strcmp(extension, "fbx") == 0 || secure_strcmp(extension, "obj") == 0;
return secure_strcmp(extension, "obj") == 0;
}

Core::VFS::VFSResult<void> AssimpImporter::Import(Core::VFS::IVFSContext& ctx, const Core::VFS::VFSPath& path, const Core::VFS::MetaFileData& meta)
Expand Down
Loading
Loading