diff --git a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperPixelShader.cpp b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperPixelShader.cpp index 64eebbb4..5062d18c 100644 --- a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperPixelShader.cpp +++ b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperPixelShader.cpp @@ -1,5 +1,7 @@ #include "AssetDumperPixelShader.h" +#include + using namespace IW4; bool AssetDumperPixelShader::ShouldDump(XAssetInfo* asset) @@ -9,4 +11,15 @@ bool AssetDumperPixelShader::ShouldDump(XAssetInfo* asset) void AssetDumperPixelShader::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) { + const auto* pixelShader = asset->Asset(); + + std::ostringstream ss; + ss << "shader_bin/ps_" << pixelShader->name << ".cso"; + + const auto shaderFile = context.OpenAssetFile(ss.str()); + + if (!shaderFile) + return; + + shaderFile->write(reinterpret_cast(pixelShader->prog.loadDef.program), static_cast(pixelShader->prog.loadDef.programSize) * 4u); } diff --git a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperVertexShader.cpp b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperVertexShader.cpp index 09d558fa..4124fb68 100644 --- a/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperVertexShader.cpp +++ b/src/ObjWriting/Game/IW4/AssetDumpers/AssetDumperVertexShader.cpp @@ -1,5 +1,7 @@ #include "AssetDumperVertexShader.h" +#include + using namespace IW4; bool AssetDumperVertexShader::ShouldDump(XAssetInfo* asset) @@ -9,4 +11,15 @@ bool AssetDumperVertexShader::ShouldDump(XAssetInfo* asset void AssetDumperVertexShader::DumpAsset(AssetDumpingContext& context, XAssetInfo* asset) { + const auto* vertexShader = asset->Asset(); + + std::ostringstream ss; + ss << "shader_bin/vs_" << vertexShader->name << ".cso"; + + const auto shaderFile = context.OpenAssetFile(ss.str()); + + if (!shaderFile) + return; + + shaderFile->write(reinterpret_cast(vertexShader->prog.loadDef.program), static_cast(vertexShader->prog.loadDef.programSize) * 4u); }