mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-11-22 21:02:07 +00:00
chore: move ShaderDumpingZoneState to non-game specific code
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
#include "Shader/ShaderCommon.h"
|
#include "Shader/ShaderCommon.h"
|
||||||
#include "Techset/CommonTechniqueDumper.h"
|
#include "Techset/CommonTechniqueDumper.h"
|
||||||
#include "Techset/CommonTechsetDumper.h"
|
#include "Techset/CommonTechsetDumper.h"
|
||||||
|
#include "Techset/ShaderDumpingZoneState.h"
|
||||||
#include "Techset/TechniqueDumpingZoneState.h"
|
#include "Techset/TechniqueDumpingZoneState.h"
|
||||||
|
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
@@ -12,51 +13,6 @@ using namespace T6;
|
|||||||
|
|
||||||
namespace
|
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<const MaterialTechnique*> m_dumped_techniques;
|
|
||||||
std::unordered_set<const MaterialPixelShader*> m_dumped_pixel_shaders;
|
|
||||||
std::unordered_set<const MaterialVertexShader*> m_dumped_vertex_shaders;
|
|
||||||
};
|
|
||||||
|
|
||||||
void DumpPixelShader(const AssetDumpingContext& context, const MaterialPixelShader& pixelShader)
|
void DumpPixelShader(const AssetDumpingContext& context, const MaterialPixelShader& pixelShader)
|
||||||
{
|
{
|
||||||
const auto shaderFile = context.OpenAssetFile(shader::GetFileNameForPixelShaderAssetName(pixelShader.name));
|
const auto shaderFile = context.OpenAssetFile(shader::GetFileNameForPixelShaderAssetName(pixelShader.name));
|
||||||
@@ -79,7 +35,7 @@ namespace
|
|||||||
|
|
||||||
void DumpShaders(AssetDumpingContext& context, const MaterialTechniqueSet& techset)
|
void DumpShaders(AssetDumpingContext& context, const MaterialTechniqueSet& techset)
|
||||||
{
|
{
|
||||||
auto* shaderState = context.GetZoneAssetDumperState<ShaderZoneState>();
|
auto* shaderState = context.GetZoneAssetDumperState<techset::ShaderDumpingZoneState>();
|
||||||
|
|
||||||
for (const auto* technique : techset.techniques)
|
for (const auto* technique : techset.techniques)
|
||||||
{
|
{
|
||||||
|
|||||||
31
src/ObjWriting/Techset/ShaderDumpingZoneState.cpp
Normal file
31
src/ObjWriting/Techset/ShaderDumpingZoneState.cpp
Normal file
@@ -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
|
||||||
21
src/ObjWriting/Techset/ShaderDumpingZoneState.h
Normal file
21
src/ObjWriting/Techset/ShaderDumpingZoneState.h
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Dumping/IZoneAssetDumperState.h"
|
||||||
|
|
||||||
|
#include <unordered_set>
|
||||||
|
|
||||||
|
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<const void*> m_dumped_techniques;
|
||||||
|
std::unordered_set<const void*> m_dumped_vertex_shaders;
|
||||||
|
std::unordered_set<const void*> m_dumped_pixel_shaders;
|
||||||
|
};
|
||||||
|
} // namespace techset
|
||||||
@@ -4,7 +4,7 @@ namespace techset
|
|||||||
{
|
{
|
||||||
bool TechniqueDumpingZoneState::ShouldDumpTechnique(const void* technique)
|
bool TechniqueDumpingZoneState::ShouldDumpTechnique(const void* technique)
|
||||||
{
|
{
|
||||||
if (m_dumped_techniques.find(technique) != m_dumped_techniques.end())
|
if (m_dumped_techniques.contains(technique))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_dumped_techniques.emplace(technique);
|
m_dumped_techniques.emplace(technique);
|
||||||
|
|||||||
Reference in New Issue
Block a user