mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-03-16 01:43:04 +00:00
feat: add techset compiling for IW3
This commit is contained in:
@@ -1240,7 +1240,7 @@ namespace IW3
|
|||||||
|
|
||||||
struct MaterialVertexDeclaration
|
struct MaterialVertexDeclaration
|
||||||
{
|
{
|
||||||
char streamCount;
|
unsigned char streamCount;
|
||||||
bool hasOptionalSource;
|
bool hasOptionalSource;
|
||||||
bool isLoaded;
|
bool isLoaded;
|
||||||
MaterialVertexStreamRouting routing;
|
MaterialVertexStreamRouting routing;
|
||||||
|
|||||||
@@ -738,11 +738,13 @@ namespace IW3
|
|||||||
.value = TEXTURE_SRC_CODE_RESOLVED_POST_SUN,
|
.value = TEXTURE_SRC_CODE_RESOLVED_POST_SUN,
|
||||||
.accessor = "resolvedPostSun",
|
.accessor = "resolvedPostSun",
|
||||||
.updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY,
|
.updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY,
|
||||||
|
.techFlags = MTL_TECHFLAG_NEEDS_RESOLVED_POST_SUN,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.value = TEXTURE_SRC_CODE_RESOLVED_SCENE,
|
.value = TEXTURE_SRC_CODE_RESOLVED_SCENE,
|
||||||
.accessor = "resolvedScene",
|
.accessor = "resolvedScene",
|
||||||
.updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY,
|
.updateFrequency = techset::CommonCodeSourceUpdateFrequency::RARELY,
|
||||||
|
.techFlags = MTL_TECHFLAG_NEEDS_RESOLVED_SCENE,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.value = TEXTURE_SRC_CODE_POST_EFFECT_0,
|
.value = TEXTURE_SRC_CODE_POST_EFFECT_0,
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
#include "ObjCompilerIW3.h"
|
#include "ObjCompilerIW3.h"
|
||||||
|
|
||||||
#include "Game/IW3/IW3.h"
|
#include "Game/IW3/IW3.h"
|
||||||
|
#include "Game/IW3/Techset/TechniqueCompilerIW3.h"
|
||||||
|
#include "Game/IW3/Techset/TechsetCompilerIW3.h"
|
||||||
|
#include "Game/IW3/Techset/VertexDeclCompilerIW3.h"
|
||||||
#include "Image/ImageIwdPostProcessor.h"
|
#include "Image/ImageIwdPostProcessor.h"
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -13,7 +16,10 @@ namespace
|
|||||||
{
|
{
|
||||||
auto& memory = zone.Memory();
|
auto& memory = zone.Memory();
|
||||||
|
|
||||||
// No compilers yet
|
collection.AddAssetCreator(techset::CreateTechsetCompilerIW3(memory, searchPath));
|
||||||
|
|
||||||
|
collection.AddSubAssetCreator(techset::CreateTechniqueCompilerIW3(memory, zone, searchPath));
|
||||||
|
collection.AddSubAssetCreator(techset::CreateVertexDeclCompilerIW3(memory));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigurePostProcessors(AssetCreatorCollection& collection,
|
void ConfigurePostProcessors(AssetCreatorCollection& collection,
|
||||||
@@ -39,5 +45,6 @@ void ObjCompiler::ConfigureCreatorCollection(AssetCreatorCollection& collection,
|
|||||||
IOutputPath& outDir,
|
IOutputPath& outDir,
|
||||||
IOutputPath& cacheDir) const
|
IOutputPath& cacheDir) const
|
||||||
{
|
{
|
||||||
|
ConfigureCompilers(collection, zone, searchPath);
|
||||||
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir);
|
ConfigurePostProcessors(collection, zone, zoneDefinition, searchPath, zoneStates, outDir);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/TechniqueCompiler" + GAME + ".cpp"
|
#filename "Game/" + GAME + "/Techset/TechniqueCompiler" + GAME + ".cpp"
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
#if GAME == "IW3"
|
#if GAME == "IW3"
|
||||||
#define FEATURE_IW3
|
#define FEATURE_IW3
|
||||||
#define IS_DX9
|
#define IS_DX9
|
||||||
|
#define SHADERS_ARE_SUBASSETS
|
||||||
#elif GAME == "IW4"
|
#elif GAME == "IW4"
|
||||||
#define FEATURE_IW4
|
#define FEATURE_IW4
|
||||||
#define IS_DX9
|
#define IS_DX9
|
||||||
@@ -278,7 +279,10 @@ namespace
|
|||||||
std::string lowerTechniqueName(commonTechnique.m_name);
|
std::string lowerTechniqueName(commonTechnique.m_name);
|
||||||
utils::MakeStringLowerCase(lowerTechniqueName);
|
utils::MakeStringLowerCase(lowerTechniqueName);
|
||||||
|
|
||||||
#if defined(FEATURE_IW4)
|
#if defined(FEATURE_IW3)
|
||||||
|
if (lowerTechniqueName == "zprepass")
|
||||||
|
technique.flags |= MTL_TECHFLAG_ZPREPASS;
|
||||||
|
#elif defined(FEATURE_IW4)
|
||||||
// Not a particularly cool way to do this but...
|
// Not a particularly cool way to do this but...
|
||||||
// the game actually does this :shrug:
|
// the game actually does this :shrug:
|
||||||
if (lowerTechniqueName == "zprepass")
|
if (lowerTechniqueName == "zprepass")
|
||||||
@@ -290,7 +294,7 @@ namespace
|
|||||||
|
|
||||||
if (technique.flags & MTL_TECHFLAG_USES_FLOATZ && lowerTechniqueName.starts_with("distortion_"))
|
if (technique.flags & MTL_TECHFLAG_USES_FLOATZ && lowerTechniqueName.starts_with("distortion_"))
|
||||||
technique.flags = (technique.flags & ~MTL_TECHFLAG_USES_FLOATZ) | MTL_TECHFLAG_USES_DISTORTION_FLOATZ;
|
technique.flags = (technique.flags & ~MTL_TECHFLAG_USES_FLOATZ) | MTL_TECHFLAG_USES_DISTORTION_FLOATZ;
|
||||||
|
|
||||||
if (ShouldApplyFlag200(technique))
|
if (ShouldApplyFlag200(technique))
|
||||||
technique.flags |= TECHNIQUE_FLAG_200;
|
technique.flags |= TECHNIQUE_FLAG_200;
|
||||||
#elif defined(FEATURE_T6)
|
#elif defined(FEATURE_T6)
|
||||||
@@ -454,9 +458,7 @@ namespace
|
|||||||
|
|
||||||
void FinalizeZone(AssetCreationContext& context) override
|
void FinalizeZone(AssetCreationContext& context) override
|
||||||
{
|
{
|
||||||
#if defined(FEATURE_IW4)
|
#if defined(FEATURE_T6)
|
||||||
// TODO
|
|
||||||
#elif defined(FEATURE_T6)
|
|
||||||
const auto materials = m_zone.m_pools.PoolAssets<AssetMaterial>();
|
const auto materials = m_zone.m_pools.PoolAssets<AssetMaterial>();
|
||||||
for (auto* materialAsset : materials)
|
for (auto* materialAsset : materials)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/TechniqueCompiler" + GAME + ".h"
|
#filename "Game/" + GAME + "/Techset/TechniqueCompiler" + GAME + ".h"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/TechsetCompiler" + GAME + ".cpp"
|
#filename "Game/" + GAME + "/Techset/TechsetCompiler" + GAME + ".cpp"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/TechsetCompiler" + GAME + ".h"
|
#filename "Game/" + GAME + "/Techset/TechsetCompiler" + GAME + ".h"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/VertexDeclCompiler" + GAME + ".cpp"
|
#filename "Game/" + GAME + "/Techset/VertexDeclCompiler" + GAME + ".cpp"
|
||||||
|
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#if GAME == "IW3"
|
#if GAME == "IW3"
|
||||||
#define FEATURE_IW3
|
#define FEATURE_IW3
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#elif GAME == "IW4"
|
#elif GAME == "IW4"
|
||||||
#define FEATURE_IW4
|
#define FEATURE_IW4
|
||||||
#elif GAME == "IW5"
|
#elif GAME == "IW5"
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/VertexDeclCompiler" + GAME + ".h"
|
#filename "Game/" + GAME + "/Techset/VertexDeclCompiler" + GAME + ".h"
|
||||||
|
|
||||||
#if GAME == "IW3"
|
#if GAME == "IW3"
|
||||||
#define FEATURE_IW3
|
#define FEATURE_IW3
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#elif GAME == "IW4"
|
#elif GAME == "IW4"
|
||||||
#define FEATURE_IW4
|
#define FEATURE_IW4
|
||||||
#elif GAME == "IW5"
|
#elif GAME == "IW5"
|
||||||
@@ -12,6 +13,7 @@
|
|||||||
#define FEATURE_T5
|
#define FEATURE_T5
|
||||||
#elif GAME == "T6"
|
#elif GAME == "T6"
|
||||||
#define FEATURE_T6
|
#define FEATURE_T6
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// This file was templated.
|
// This file was templated.
|
||||||
@@ -27,7 +29,7 @@
|
|||||||
|
|
||||||
#set CREATE_COMPILER_METHOD "CreateVertexDeclCompiler" + GAME
|
#set CREATE_COMPILER_METHOD "CreateVertexDeclCompiler" + GAME
|
||||||
|
|
||||||
#if defined(FEATURE_T6)
|
#if defined(IS_SUB_ASSET)
|
||||||
#define INTERFACE_NAME ISubAssetCreator
|
#define INTERFACE_NAME ISubAssetCreator
|
||||||
#else
|
#else
|
||||||
#define INTERFACE_NAME IAssetCreator
|
#define INTERFACE_NAME IAssetCreator
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
#include "Game/IW3/IW3.h"
|
#include "Game/IW3/IW3.h"
|
||||||
#include "Game/IW3/Image/ImageLoaderEmbeddedIW3.h"
|
#include "Game/IW3/Image/ImageLoaderEmbeddedIW3.h"
|
||||||
#include "Game/IW3/Image/ImageLoaderExternalIW3.h"
|
#include "Game/IW3/Image/ImageLoaderExternalIW3.h"
|
||||||
|
#include "Game/IW3/Techset/PixelShaderLoaderIW3.h"
|
||||||
|
#include "Game/IW3/Techset/VertexShaderLoaderIW3.h"
|
||||||
#include "Game/IW3/XModel/LoaderXModelIW3.h"
|
#include "Game/IW3/XModel/LoaderXModelIW3.h"
|
||||||
#include "Localize/AssetLoaderLocalizeIW3.h"
|
#include "Localize/AssetLoaderLocalizeIW3.h"
|
||||||
#include "Material/LoaderMaterialIW3.h"
|
#include "Material/LoaderMaterialIW3.h"
|
||||||
@@ -118,6 +120,9 @@ namespace
|
|||||||
// collection.AddAssetCreator(std::make_unique<AssetLoaderImpactFx>(memory));
|
// collection.AddAssetCreator(std::make_unique<AssetLoaderImpactFx>(memory));
|
||||||
collection.AddAssetCreator(raw_file::CreateLoaderIW3(memory, searchPath));
|
collection.AddAssetCreator(raw_file::CreateLoaderIW3(memory, searchPath));
|
||||||
collection.AddAssetCreator(string_table::CreateLoaderIW3(memory, searchPath));
|
collection.AddAssetCreator(string_table::CreateLoaderIW3(memory, searchPath));
|
||||||
|
|
||||||
|
collection.AddSubAssetCreator(techset::CreateVertexShaderLoaderIW3(memory, searchPath));
|
||||||
|
collection.AddSubAssetCreator(techset::CreatePixelShaderLoaderIW3(memory, searchPath));
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/PixelShaderLoader" + GAME + ".cpp"
|
#filename "Game/" + GAME + "/Techset/PixelShaderLoader" + GAME + ".cpp"
|
||||||
|
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
#if GAME == "IW3"
|
#if GAME == "IW3"
|
||||||
#define FEATURE_IW3
|
#define FEATURE_IW3
|
||||||
#define IS_DX9
|
#define IS_DX9
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#elif GAME == "IW4"
|
#elif GAME == "IW4"
|
||||||
#define FEATURE_IW4
|
#define FEATURE_IW4
|
||||||
#define IS_DX9
|
#define IS_DX9
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/PixelShaderLoader" + GAME + ".h"
|
#filename "Game/" + GAME + "/Techset/PixelShaderLoader" + GAME + ".h"
|
||||||
|
|
||||||
#if GAME == "IW3"
|
#if GAME == "IW3"
|
||||||
#define FEATURE_IW3
|
#define FEATURE_IW3
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#elif GAME == "IW4"
|
#elif GAME == "IW4"
|
||||||
#define FEATURE_IW4
|
#define FEATURE_IW4
|
||||||
#elif GAME == "IW5"
|
#elif GAME == "IW5"
|
||||||
@@ -12,6 +13,7 @@
|
|||||||
#define FEATURE_T5
|
#define FEATURE_T5
|
||||||
#elif GAME == "T6"
|
#elif GAME == "T6"
|
||||||
#define FEATURE_T6
|
#define FEATURE_T6
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// This file was templated.
|
// This file was templated.
|
||||||
@@ -28,7 +30,7 @@
|
|||||||
|
|
||||||
#set CREATE_LOADER_METHOD "CreatePixelShaderLoader" + GAME
|
#set CREATE_LOADER_METHOD "CreatePixelShaderLoader" + GAME
|
||||||
|
|
||||||
#if defined(FEATURE_T6)
|
#if defined(IS_SUB_ASSET)
|
||||||
#define INTERFACE_NAME ISubAssetCreator
|
#define INTERFACE_NAME ISubAssetCreator
|
||||||
#else
|
#else
|
||||||
#define INTERFACE_NAME IAssetCreator
|
#define INTERFACE_NAME IAssetCreator
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/VertexShaderLoader" + GAME + ".cpp"
|
#filename "Game/" + GAME + "/Techset/VertexShaderLoader" + GAME + ".cpp"
|
||||||
|
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
#if GAME == "IW3"
|
#if GAME == "IW3"
|
||||||
#define FEATURE_IW3
|
#define FEATURE_IW3
|
||||||
#define IS_DX9
|
#define IS_DX9
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#elif GAME == "IW4"
|
#elif GAME == "IW4"
|
||||||
#define FEATURE_IW4
|
#define FEATURE_IW4
|
||||||
#define IS_DX9
|
#define IS_DX9
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
#options GAME(IW4, T6)
|
#options GAME(IW3, IW4, T6)
|
||||||
|
|
||||||
#filename "Game/" + GAME + "/Techset/VertexShaderLoader" + GAME + ".h"
|
#filename "Game/" + GAME + "/Techset/VertexShaderLoader" + GAME + ".h"
|
||||||
|
|
||||||
#if GAME == "IW3"
|
#if GAME == "IW3"
|
||||||
#define FEATURE_IW3
|
#define FEATURE_IW3
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#elif GAME == "IW4"
|
#elif GAME == "IW4"
|
||||||
#define FEATURE_IW4
|
#define FEATURE_IW4
|
||||||
#elif GAME == "IW5"
|
#elif GAME == "IW5"
|
||||||
@@ -12,6 +13,7 @@
|
|||||||
#define FEATURE_T5
|
#define FEATURE_T5
|
||||||
#elif GAME == "T6"
|
#elif GAME == "T6"
|
||||||
#define FEATURE_T6
|
#define FEATURE_T6
|
||||||
|
#define IS_SUB_ASSET
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// This file was templated.
|
// This file was templated.
|
||||||
@@ -28,7 +30,7 @@
|
|||||||
|
|
||||||
#set CREATE_LOADER_METHOD "CreateVertexShaderLoader" + GAME
|
#set CREATE_LOADER_METHOD "CreateVertexShaderLoader" + GAME
|
||||||
|
|
||||||
#if defined(FEATURE_T6)
|
#if defined(IS_SUB_ASSET)
|
||||||
#define INTERFACE_NAME ISubAssetCreator
|
#define INTERFACE_NAME ISubAssetCreator
|
||||||
#else
|
#else
|
||||||
#define INTERFACE_NAME IAssetCreator
|
#define INTERFACE_NAME IAssetCreator
|
||||||
|
|||||||
Reference in New Issue
Block a user