diff --git a/premake5.lua b/premake5.lua index 53f7714d..245f4a6e 100644 --- a/premake5.lua +++ b/premake5.lua @@ -84,6 +84,9 @@ workspace "OpenAssetTools" filter "options:debug-techset" defines { "TECHSET_DEBUG" } filter {} + filter "options:experimental-material-compilation" + defines { "EXPERIMENTAL_MATERIAL_COMPILATION" } + filter {} -- ======================== -- ThirdParty diff --git a/src/ObjLoading/Game/IW4/Material/CompilingMaterialLoad.cpp b/src/ObjCompiling/Game/IW4/Material/CompilerMaterialIW4.cpp similarity index 99% rename from src/ObjLoading/Game/IW4/Material/CompilingMaterialLoad.cpp rename to src/ObjCompiling/Game/IW4/Material/CompilerMaterialIW4.cpp index 17d8dae1..a1584078 100644 --- a/src/ObjLoading/Game/IW4/Material/CompilingMaterialLoad.cpp +++ b/src/ObjCompiling/Game/IW4/Material/CompilerMaterialIW4.cpp @@ -1,4 +1,4 @@ -#include "CompilingMaterialLoad.h" +#include "CompilerMaterialIW4.h" #include "Game/IW4/CommonIW4.h" #include "Game/IW4/IW4.h" @@ -1376,7 +1376,7 @@ namespace namespace IW4 { - std::unique_ptr> CreateCompilingMaterialLoader(MemoryManager& memory, ISearchPath& searchPath, IGdtQueryable& gdt) + std::unique_ptr> CreateMaterialCompiler(MemoryManager& memory, ISearchPath& searchPath, IGdtQueryable& gdt) { return std::make_unique(memory, searchPath, gdt); } diff --git a/src/ObjLoading/Game/IW4/Material/CompilingMaterialLoad.h b/src/ObjCompiling/Game/IW4/Material/CompilerMaterialIW4.h similarity index 58% rename from src/ObjLoading/Game/IW4/Material/CompilingMaterialLoad.h rename to src/ObjCompiling/Game/IW4/Material/CompilerMaterialIW4.h index 938ac9ce..52c7d3dd 100644 --- a/src/ObjLoading/Game/IW4/Material/CompilingMaterialLoad.h +++ b/src/ObjCompiling/Game/IW4/Material/CompilerMaterialIW4.h @@ -8,5 +8,5 @@ namespace IW4 { - std::unique_ptr> CreateCompilingMaterialLoader(MemoryManager& memory, ISearchPath& searchPath, IGdtQueryable& gdt); + std::unique_ptr> CreateMaterialCompiler(MemoryManager& memory, ISearchPath& searchPath, IGdtQueryable& gdt); } // namespace IW4 diff --git a/src/ObjCompiling/Game/IW4/ObjCompilerIW4.cpp b/src/ObjCompiling/Game/IW4/ObjCompilerIW4.cpp index 9990d794..cdee56db 100644 --- a/src/ObjCompiling/Game/IW4/ObjCompilerIW4.cpp +++ b/src/ObjCompiling/Game/IW4/ObjCompilerIW4.cpp @@ -2,6 +2,7 @@ #include "Game/IW4/IW4.h" #include "Image/ImageIwdPostProcessor.h" +#include "Material/CompilerMaterialIW4.h" #include @@ -9,11 +10,13 @@ using namespace IW4; namespace { - void ConfigureCompilers(AssetCreatorCollection& collection, Zone& zone, ISearchPath& searchPath) + void ConfigureCompilers(AssetCreatorCollection& collection, Zone& zone, ISearchPath& searchPath, IGdtQueryable& gdt) { auto& memory = zone.Memory(); - // No compilers yet +#ifdef EXPERIMENTAL_MATERIAL_COMPILATION + collection.AddAssetCreator(CreateCompilingMaterialLoader(memory, searchPath, gdt)); +#endif } void ConfigurePostProcessors(AssetCreatorCollection& collection, @@ -39,5 +42,6 @@ void ObjCompiler::ConfigureCreatorCollection(AssetCreatorCollection& collection, IOutputPath& outDir, IOutputPath& cacheDir) const { + ConfigureCompilers(collection, zone, searchPath, gdt); ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir); } diff --git a/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp b/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp index ca33ed36..e8b1cf5e 100644 --- a/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp +++ b/src/ObjLoading/Game/IW4/ObjLoaderIW4.cpp @@ -6,7 +6,6 @@ #include "Leaderboard/LoaderLeaderboardIW4.h" #include "LightDef/LoaderLightDefIW4.h" #include "Localize/LoaderLocalizeIW4.h" -#include "Material/CompilingMaterialLoad.h" #include "Material/LoaderMaterialIW4.h" #include "Menu/LoaderMenuListIW4.h" #include "ObjLoading.h" @@ -128,7 +127,6 @@ namespace // collection.AddAssetCreator(std::make_unique(memory)); // collection.AddAssetCreator(std::make_unique(memory)); collection.AddAssetCreator(CreateMaterialLoader(memory, searchPath)); - collection.AddAssetCreator(CreateCompilingMaterialLoader(memory, searchPath, gdt)); collection.AddAssetCreator(CreatePixelShaderLoader(memory, searchPath)); collection.AddAssetCreator(CreateVertexShaderLoader(memory, searchPath)); collection.AddAssetCreator(CreateVertexDeclLoader(memory)); diff --git a/src/ObjWriting/Game/IW4/Material/AssetDumperMaterial.cpp b/src/ObjWriting/Game/IW4/Material/AssetDumperMaterial.cpp index f1a88599..11e62562 100644 --- a/src/ObjWriting/Game/IW4/Material/AssetDumperMaterial.cpp +++ b/src/ObjWriting/Game/IW4/Material/AssetDumperMaterial.cpp @@ -5,8 +5,6 @@ #include "Game/IW4/Material/MaterialConstantZoneState.h" #include "Material/MaterialCommon.h" -// #define EXPERIMENTAL_DECOMPILE_MATERIAL 1 - using namespace IW4; void AssetDumperMaterial::DumpPool(AssetDumpingContext& context, AssetPool* pool) @@ -24,7 +22,7 @@ bool AssetDumperMaterial::ShouldDump(XAssetInfo* asset) void AssetDumperMaterial::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) { -#ifdef EXPERIMENTAL_DECOMPILE_MATERIAL +#ifdef EXPERIMENTAL_MATERIAL_COMPILATION if (context.m_gdt) { DecompileMaterialToGdt(*context.m_gdt, *asset->Asset(), context); diff --git a/tools/scripts/options.lua b/tools/scripts/options.lua index a07c7392..28ed3633 100644 --- a/tools/scripts/options.lua +++ b/tools/scripts/options.lua @@ -5,4 +5,8 @@ newoption { newoption { trigger = "debug-techset", description = "Activate additional debugging logic for Techset assets" -} \ No newline at end of file +} +newoption { + trigger = "experimental-material-compilation", + description = "Activate experimental material compilation support" +}