From a064b5fd71d2d5745d80e18d26c713332ede86d8 Mon Sep 17 00:00:00 2001 From: Jan Laupetin Date: Sat, 15 Nov 2025 19:21:43 +0000 Subject: [PATCH] chore: move ShaderDumpingZoneState to non-game specific code --- .../Game/T6/Techset/TechsetDumperT6.cpp | 48 +------------------ .../Techset/ShaderDumpingZoneState.cpp | 31 ++++++++++++ .../Techset/ShaderDumpingZoneState.h | 21 ++++++++ .../Techset/TechniqueDumpingZoneState.cpp | 2 +- 4 files changed, 55 insertions(+), 47 deletions(-) create mode 100644 src/ObjWriting/Techset/ShaderDumpingZoneState.cpp create mode 100644 src/ObjWriting/Techset/ShaderDumpingZoneState.h diff --git a/src/ObjWriting/Game/T6/Techset/TechsetDumperT6.cpp b/src/ObjWriting/Game/T6/Techset/TechsetDumperT6.cpp index e2191c59..e2c6604e 100644 --- a/src/ObjWriting/Game/T6/Techset/TechsetDumperT6.cpp +++ b/src/ObjWriting/Game/T6/Techset/TechsetDumperT6.cpp @@ -4,6 +4,7 @@ #include "Shader/ShaderCommon.h" #include "Techset/CommonTechniqueDumper.h" #include "Techset/CommonTechsetDumper.h" +#include "Techset/ShaderDumpingZoneState.h" #include "Techset/TechniqueDumpingZoneState.h" #include @@ -12,51 +13,6 @@ using namespace T6; namespace { - class ShaderZoneState final : public IZoneAssetDumperState - { - public: - bool ShouldDumpTechnique(const MaterialTechnique* technique) - { - const auto existingTechnique = m_dumped_techniques.find(technique); - if (existingTechnique == m_dumped_techniques.end()) - { - m_dumped_techniques.emplace(technique); - return true; - } - - return false; - } - - bool ShouldDumpPixelShader(const MaterialPixelShader* pixelShader) - { - const auto existingPixelShader = m_dumped_pixel_shaders.find(pixelShader); - if (existingPixelShader == m_dumped_pixel_shaders.end()) - { - m_dumped_pixel_shaders.emplace(pixelShader); - return true; - } - - return false; - } - - bool ShouldDumpVertexShader(const MaterialVertexShader* vertexShader) - { - const auto existingVertexShader = m_dumped_vertex_shaders.find(vertexShader); - if (existingVertexShader == m_dumped_vertex_shaders.end()) - { - m_dumped_vertex_shaders.emplace(vertexShader); - return true; - } - - return false; - } - - private: - std::unordered_set m_dumped_techniques; - std::unordered_set m_dumped_pixel_shaders; - std::unordered_set m_dumped_vertex_shaders; - }; - void DumpPixelShader(const AssetDumpingContext& context, const MaterialPixelShader& pixelShader) { const auto shaderFile = context.OpenAssetFile(shader::GetFileNameForPixelShaderAssetName(pixelShader.name)); @@ -79,7 +35,7 @@ namespace void DumpShaders(AssetDumpingContext& context, const MaterialTechniqueSet& techset) { - auto* shaderState = context.GetZoneAssetDumperState(); + auto* shaderState = context.GetZoneAssetDumperState(); for (const auto* technique : techset.techniques) { diff --git a/src/ObjWriting/Techset/ShaderDumpingZoneState.cpp b/src/ObjWriting/Techset/ShaderDumpingZoneState.cpp new file mode 100644 index 00000000..23e84712 --- /dev/null +++ b/src/ObjWriting/Techset/ShaderDumpingZoneState.cpp @@ -0,0 +1,31 @@ +#include "ShaderDumpingZoneState.h" + +namespace techset +{ + bool ShaderDumpingZoneState::ShouldDumpTechnique(const void* technique) + { + if (m_dumped_techniques.contains(technique)) + return false; + + m_dumped_techniques.emplace(technique); + return true; + } + + bool ShaderDumpingZoneState::ShouldDumpVertexShader(const void* vertexShader) + { + if (m_dumped_vertex_shaders.contains(vertexShader)) + return false; + + m_dumped_vertex_shaders.emplace(vertexShader); + return true; + } + + bool ShaderDumpingZoneState::ShouldDumpPixelShader(const void* pixelShader) + { + if (m_dumped_pixel_shaders.contains(pixelShader)) + return false; + + m_dumped_pixel_shaders.emplace(pixelShader); + return true; + } +} // namespace techset diff --git a/src/ObjWriting/Techset/ShaderDumpingZoneState.h b/src/ObjWriting/Techset/ShaderDumpingZoneState.h new file mode 100644 index 00000000..18182598 --- /dev/null +++ b/src/ObjWriting/Techset/ShaderDumpingZoneState.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Dumping/IZoneAssetDumperState.h" + +#include + +namespace techset +{ + class ShaderDumpingZoneState final : public IZoneAssetDumperState + { + public: + bool ShouldDumpTechnique(const void* technique); + bool ShouldDumpVertexShader(const void* vertexShader); + bool ShouldDumpPixelShader(const void* pixelShader); + + private: + std::unordered_set m_dumped_techniques; + std::unordered_set m_dumped_vertex_shaders; + std::unordered_set m_dumped_pixel_shaders; + }; +} // namespace techset diff --git a/src/ObjWriting/Techset/TechniqueDumpingZoneState.cpp b/src/ObjWriting/Techset/TechniqueDumpingZoneState.cpp index 7ca2e43d..2469e41a 100644 --- a/src/ObjWriting/Techset/TechniqueDumpingZoneState.cpp +++ b/src/ObjWriting/Techset/TechniqueDumpingZoneState.cpp @@ -4,7 +4,7 @@ namespace techset { bool TechniqueDumpingZoneState::ShouldDumpTechnique(const void* technique) { - if (m_dumped_techniques.find(technique) != m_dumped_techniques.end()) + if (m_dumped_techniques.contains(technique)) return false; m_dumped_techniques.emplace(technique);