From f386e82f89c8fdb7d40c0f5ee44e11153a2c3c19 Mon Sep 17 00:00:00 2001 From: Jan Date: Thu, 24 Mar 2022 23:26:07 +0100 Subject: [PATCH] Omit code constants that have the same source and dest accessor --- premake5.lua | 3 ++ .../AssetDumpers/AssetDumperTechniqueSet.cpp | 34 +++++++++++++------ tools/scripts/options.lua | 4 +++ 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/premake5.lua b/premake5.lua index 7980e462..20831ff7 100644 --- a/premake5.lua +++ b/premake5.lua @@ -61,6 +61,9 @@ workspace "OpenAssetTools" filter "options:debug-structureddatadef" defines { "STRUCTUREDDATADEF_DEBUG" } filter {} + filter "options:debug-techset" + defines { "TECHSET_DEBUG" } + filter {} -- ======================== -- ThirdParty diff --git a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperTechniqueSet.cpp b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperTechniqueSet.cpp index 9677f5c0..7dca71df 100644 --- a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperTechniqueSet.cpp +++ b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperTechniqueSet.cpp @@ -90,14 +90,15 @@ namespace IW4 return; } - Indent(); - + std::string codeDestAccessor; if (targetShaderArg->m_type_elements > 1) - m_stream << targetShaderArg->m_name << '[' << (arg.dest - targetShaderArg->m_register_index) << ']'; + { + std::ostringstream ss; + ss << targetShaderArg->m_name << '[' << (arg.dest - targetShaderArg->m_register_index) << ']'; + codeDestAccessor = ss.str(); + } else - m_stream << targetShaderArg->m_name; - - m_stream << " = "; + codeDestAccessor = targetShaderArg->m_name; if(arg.type == MTL_ARG_CODE_VERTEX_CONST || arg.type == MTL_ARG_CODE_PIXEL_CONST) { @@ -106,20 +107,31 @@ namespace IW4 if(FindCodeConstantSourceAccessor(sourceIndex, s_codeConsts, codeSourceAccessor) || FindCodeConstantSourceAccessor(sourceIndex, s_defaultCodeConsts, codeSourceAccessor)) { - m_stream << "code." << codeSourceAccessor; + if(codeDestAccessor != codeSourceAccessor) + { + Indent(); + m_stream << codeDestAccessor << " = code." << codeSourceAccessor << ";\n"; + } + else + { +#ifdef TECHSET_DEBUG + Indent(); + m_stream << "// Omitted due to matching accessors: " << codeDestAccessor << " = code." << codeSourceAccessor << ";\n"; +#endif + } } else { assert(false); - m_stream << "UNKNOWN"; + Indent(); + m_stream << codeDestAccessor << " = UNKNOWN;\n"; } } else { - m_stream << "something"; + Indent(); + m_stream << codeDestAccessor << " = something;\n"; } - - m_stream << ";\n"; } void DumpVertexShader(const MaterialPass& pass) diff --git a/tools/scripts/options.lua b/tools/scripts/options.lua index c9db5d53..a07c7392 100644 --- a/tools/scripts/options.lua +++ b/tools/scripts/options.lua @@ -1,4 +1,8 @@ newoption { trigger = "debug-structureddatadef", description = "Activate additional debugging logic for StructuredDataDef assets" +} +newoption { + trigger = "debug-techset", + description = "Activate additional debugging logic for Techset assets" } \ No newline at end of file