mirror of
https://github.com/PCSX2/pcsx2.git
synced 2025-12-16 04:08:48 +00:00
Merge e068f08ea7 into 7fab935c2d
This commit is contained in:
commit
ca5bd64db6
31
cmake/ShaderToCpp.cmake
Normal file
31
cmake/ShaderToCpp.cmake
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
function(shader_to_cpp SHADER_FILES_OUT SHADER_FILES_CPP_OUT CPP_OUTPUT_DIR_OUT)
|
||||||
|
set(SHADER_FILES "")
|
||||||
|
set(SHADER_FILES_CPP "")
|
||||||
|
set(CPP_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/shaders_cpp")
|
||||||
|
file(MAKE_DIRECTORY ${CPP_OUTPUT_DIR})
|
||||||
|
file(GLOB_RECURSE DIR_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../bin/resources/shaders/*")
|
||||||
|
foreach(path IN LISTS DIR_FILES)
|
||||||
|
if(NOT ("${path}" MATCHES ".*\.glsl$" OR "${path}" MATCHES ".*\.fx$"))
|
||||||
|
continue()
|
||||||
|
endif()
|
||||||
|
if (NOT WIN32 AND "${path}" MATCHES "/dx11/") # Don't include unneccessary stuff
|
||||||
|
continue()
|
||||||
|
endif()
|
||||||
|
get_filename_component(DIR ${path} DIRECTORY)
|
||||||
|
get_filename_component(API ${DIR} NAME)
|
||||||
|
get_filename_component(BASE ${path} NAME_WE)
|
||||||
|
set(cpp_path "${CPP_OUTPUT_DIR}/${API}_${BASE}.cpp")
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${cpp_path}
|
||||||
|
COMMAND python ${CMAKE_CURRENT_SOURCE_DIR}/../tools/shader_to_cpp.py ${path} ${cpp_path} "${API}_${BASE}"
|
||||||
|
DEPENDS ${path} ${CMAKE_CURRENT_SOURCE_DIR}/../tools/shader_to_cpp.py
|
||||||
|
COMMENT "Shader to CPP: ${path} -> ${cpp_path}"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
list(APPEND SHADER_FILES ${path})
|
||||||
|
list(APPEND SHADER_FILES_CPP ${cpp_path})
|
||||||
|
endforeach()
|
||||||
|
set(${SHADER_FILES_OUT} ${SHADER_FILES} PARENT_SCOPE)
|
||||||
|
set(${SHADER_FILES_CPP_OUT} ${SHADER_FILES_CPP} PARENT_SCOPE)
|
||||||
|
set(${CPP_OUTPUT_DIR_OUT} ${CPP_OUTPUT_DIR} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
41
common/vsprops/ShaderToCpp.props
Normal file
41
common/vsprops/ShaderToCpp.props
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="UserMacros">
|
||||||
|
<BakeShadersInCpp>true</BakeShadersInCpp>
|
||||||
|
<ShaderCppDir>$(OutDir)shaders_cpp\</ShaderCppDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BuildMacro Include="BakeShadersInCpp">
|
||||||
|
<Value>$(BakeShadersInCpp)</Value>
|
||||||
|
</BuildMacro>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<PreprocessorDefinitions Condition="'$(BakeShadersInCpp)'=='true'">BAKE_SHADERS_IN_CPP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories Condition="'$(BakeShadersInCpp)'=='true'">%(AdditionalIncludeDirectories);$(ShaderCppDir)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<Target Name="ShaderToCpp" BeforeTargets="ClCompile" Condition="'@(ShaderToCpp)'!='' And '$(BakeShadersInCpp)'=='true'">
|
||||||
|
<!--Ensure output directory exists-->
|
||||||
|
<MakeDir Directories="$(ShaderCppDir)" Condition="!Exists('$(ShaderCppDir)')" />
|
||||||
|
<!--Setup metadata for following tasks-->
|
||||||
|
<ItemGroup>
|
||||||
|
<ShaderToCpp>
|
||||||
|
<Command>
|
||||||
|
"python" "$(SolutionDir)\tools\shader_to_cpp.py" "%(Identity)" "$(ShaderCppDir)%(VarName).cpp" "%(VarName)"
|
||||||
|
</Command>
|
||||||
|
<Outputs>$(ShaderCppDir)%(VarName).cpp</Outputs>
|
||||||
|
</ShaderToCpp>
|
||||||
|
</ItemGroup>
|
||||||
|
<!--Helper for dealing with tlogs-->
|
||||||
|
<!--https://learn.microsoft.com/en-us/visualstudio/msbuild/getoutofdateitems-task?view=vs-2022-->
|
||||||
|
<GetOutOfDateItems Sources="@(ShaderToCpp)" OutputsMetadataName="Outputs" CommandMetadataName="Command" TLogDirectory="$(TLogLocation)" TLogNamePrefix="ShaderToCpp">
|
||||||
|
<Output TaskParameter="OutOfDateSources" ItemName="OutOfDateShaderToCpp" />
|
||||||
|
</GetOutOfDateItems>
|
||||||
|
<CustomBuild Condition="'@(OutOfDateShaderToCpp)'!=''" Sources="@(OutOfDateShaderToCpp)" />
|
||||||
|
<Message Text="Shader to CPP: '%(OutOfDateShaderToCpp.Identity)' -> '$(ShaderCppDir)%(OutOfDateShaderToCpp.VarName).cpp'" Importance="high" Condition="'@(OutOfDateShaderToCpp)'!=''" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="ShaderToCppClean">
|
||||||
|
<Delete Files="@(ShaderToCpp->'$(ShaderCppDir)%(VarName).cpp')" />
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
6
common/vsprops/ShaderToCpp.targets
Normal file
6
common/vsprops/ShaderToCpp.targets
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<CleanDependsOn>ShaderToCppClean;$(CleanDependsOn)</CleanDependsOn>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
@ -51,6 +51,16 @@ if(WIN32)
|
|||||||
)
|
)
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
|
option(BAKE_SHADERS_IN_CPP "Bake shaders into C++ source files" OFF)
|
||||||
|
if(BAKE_SHADERS_IN_CPP)
|
||||||
|
include(ShaderToCpp)
|
||||||
|
shader_to_cpp(SHADER_FILES SHADER_FILES_CPP CPP_OUTPUT_DIR)
|
||||||
|
add_custom_target(GeneratedShaders DEPENDS ${SHADER_FILES} ${SHADER_FILES_CPP})
|
||||||
|
add_dependencies(PCSX2 GeneratedShaders)
|
||||||
|
target_compile_definitions(PCSX2_FLAGS INTERFACE BAKE_SHADERS_IN_CPP=1)
|
||||||
|
target_include_directories(PCSX2_FLAGS INTERFACE ${CPP_OUTPUT_DIR})
|
||||||
|
endif()
|
||||||
|
|
||||||
# Main pcsx2 source
|
# Main pcsx2 source
|
||||||
set(pcsx2Sources
|
set(pcsx2Sources
|
||||||
Achievements.cpp
|
Achievements.cpp
|
||||||
|
|||||||
@ -312,8 +312,69 @@ void GSDevice::GenerateExpansionIndexBuffer(void* buffer)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef BAKE_SHADERS_IN_CPP
|
||||||
|
#include "common_fxaa.cpp"
|
||||||
|
#include "vulkan_convert.cpp"
|
||||||
|
#include "vulkan_imgui.cpp"
|
||||||
|
#include "vulkan_interlace.cpp"
|
||||||
|
#include "vulkan_merge.cpp"
|
||||||
|
#include "vulkan_present.cpp"
|
||||||
|
#include "vulkan_shadeboost.cpp"
|
||||||
|
#include "vulkan_tfx.cpp"
|
||||||
|
#include "opengl_convert.cpp"
|
||||||
|
#include "opengl_imgui.cpp"
|
||||||
|
#include "opengl_interlace.cpp"
|
||||||
|
#include "opengl_merge.cpp"
|
||||||
|
#include "opengl_present.cpp"
|
||||||
|
#include "opengl_shadeboost.cpp"
|
||||||
|
#include "opengl_tfx_fs.cpp"
|
||||||
|
#include "opengl_tfx_vgs.cpp"
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include "dx11_convert.cpp"
|
||||||
|
#include "dx11_imgui.cpp"
|
||||||
|
#include "dx11_interlace.cpp"
|
||||||
|
#include "dx11_merge.cpp"
|
||||||
|
#include "dx11_present.cpp"
|
||||||
|
#include "dx11_shadeboost.cpp"
|
||||||
|
#include "dx11_tfx.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static const std::map<std::string, const unsigned char*> baked_shaders = {
|
||||||
|
{ "shaders/common/fxaa.fx" , common_fxaa},
|
||||||
|
{ "shaders/vulkan/convert.glsl" , vulkan_convert},
|
||||||
|
{ "shaders/vulkan/imgui.glsl" , vulkan_imgui},
|
||||||
|
{ "shaders/vulkan/interlace.glsl" , vulkan_interlace},
|
||||||
|
{ "shaders/vulkan/merge.glsl" , vulkan_merge },
|
||||||
|
{ "shaders/vulkan/present.glsl" , vulkan_present },
|
||||||
|
{ "shaders/vulkan/shadeboost.glsl" , vulkan_shadeboost },
|
||||||
|
{ "shaders/vulkan/tfx.glsl" , vulkan_tfx },
|
||||||
|
{ "shaders/opengl/convert.glsl" , opengl_convert },
|
||||||
|
{ "shaders/opengl/imgui.glsl" , opengl_imgui },
|
||||||
|
{ "shaders/opengl/interlace.glsl" , opengl_interlace },
|
||||||
|
{ "shaders/opengl/merge.glsl" , opengl_merge },
|
||||||
|
{ "shaders/opengl/present.glsl" , opengl_present },
|
||||||
|
{ "shaders/opengl/shadeboost.glsl" , opengl_shadeboost },
|
||||||
|
{ "shaders/opengl/tfx_fs.glsl" , opengl_tfx_fs },
|
||||||
|
{ "shaders/opengl/tfx_vgs.glsl" , opengl_tfx_vgs },
|
||||||
|
#ifdef _WIN32
|
||||||
|
{ "shaders/direct3d/convert.fx" , dx11_convert },
|
||||||
|
{ "shaders/direct3d/imgui.fx" , dx11_imgui },
|
||||||
|
{ "shaders/direct3d/interlace.fx" , dx11_interlace },
|
||||||
|
{ "shaders/direct3d/merge.fx" , dx11_merge },
|
||||||
|
{ "shaders/direct3d/present.fx" , dx11_present },
|
||||||
|
{ "shaders/direct3d/shadeboost.fx" , dx11_shadeboost },
|
||||||
|
{ "shaders/direct3d/tfx.fx" , dx11_tfx },
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
std::optional<std::string> GSDevice::ReadShaderSource(const char* filename)
|
std::optional<std::string> GSDevice::ReadShaderSource(const char* filename)
|
||||||
{
|
{
|
||||||
|
#ifdef BAKE_SHADERS_IN_CPP
|
||||||
|
const auto it = baked_shaders.find(filename);
|
||||||
|
if (it != baked_shaders.end())
|
||||||
|
return reinterpret_cast<const char*>(it->second);
|
||||||
|
#endif
|
||||||
return FileSystem::ReadFileToString(Path::Combine(EmuFolders::Resources, filename).c_str());
|
return FileSystem::ReadFileToString(Path::Combine(EmuFolders::Resources, filename).c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,7 @@
|
|||||||
<Import Condition="$(Configuration.Contains(Devel))" Project="$(SolutionDir)common\vsprops\CodeGen_Devel.props" />
|
<Import Condition="$(Configuration.Contains(Devel))" Project="$(SolutionDir)common\vsprops\CodeGen_Devel.props" />
|
||||||
<Import Condition="$(Configuration.Contains(Release))" Project="$(SolutionDir)common\vsprops\CodeGen_Release.props" />
|
<Import Condition="$(Configuration.Contains(Release))" Project="$(SolutionDir)common\vsprops\CodeGen_Release.props" />
|
||||||
<Import Condition="!$(Configuration.Contains(Release))" Project="$(SolutionDir)common\vsprops\IncrementalLinking.props" />
|
<Import Condition="!$(Configuration.Contains(Release))" Project="$(SolutionDir)common\vsprops\IncrementalLinking.props" />
|
||||||
|
<Import Project="$(SolutionDir)common\vsprops\ShaderToCpp.props" />
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
@ -70,8 +71,86 @@
|
|||||||
</ClCompile>
|
</ClCompile>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\vulkan\convert.glsl">
|
||||||
|
<VarName>vulkan_convert</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\vulkan\imgui.glsl">
|
||||||
|
<VarName>vulkan_imgui</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\vulkan\interlace.glsl">
|
||||||
|
<VarName>vulkan_interlace</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\vulkan\merge.glsl">
|
||||||
|
<VarName>vulkan_merge</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\vulkan\present.glsl">
|
||||||
|
<VarName>vulkan_present</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\vulkan\shadeboost.glsl">
|
||||||
|
<VarName>vulkan_shadeboost</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\vulkan\tfx.glsl">
|
||||||
|
<VarName>vulkan_tfx</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\convert.glsl">
|
||||||
|
<VarName>opengl_convert</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\imgui.glsl">
|
||||||
|
<VarName>opengl_imgui</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\interlace.glsl">
|
||||||
|
<VarName>opengl_interlace</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\merge.glsl">
|
||||||
|
<VarName>opengl_merge</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\shadeboost.glsl">
|
||||||
|
<VarName>opengl_shadeboost</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\tfx_fs.glsl">
|
||||||
|
<VarName>opengl_tfx_fs</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\tfx_vgs.glsl">
|
||||||
|
<VarName>opengl_tfx_vgs</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\opengl\present.glsl">
|
||||||
|
<VarName>opengl_present</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\dx11\convert.fx">
|
||||||
|
<VarName>dx11_convert</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\dx11\interlace.fx">
|
||||||
|
<VarName>dx11_interlace</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\dx11\merge.fx">
|
||||||
|
<VarName>dx11_merge</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\dx11\shadeboost.fx">
|
||||||
|
<VarName>dx11_shadeboost</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\dx11\tfx.fx">
|
||||||
|
<VarName>dx11_tfx</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\dx11\imgui.fx">
|
||||||
|
<VarName>dx11_imgui</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\dx11\present.fx">
|
||||||
|
<VarName>dx11_present</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<ShaderToCpp Include="..\bin\resources\shaders\common\fxaa.fx">
|
||||||
|
<VarName>common_fxaa</VarName>
|
||||||
|
</ShaderToCpp>
|
||||||
|
<None Include="..\bin\resources\shaders\common\fxaa.fx" />
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\cas.glsl" />
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\convert.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\opengl\imgui.glsl" />
|
<None Include="..\bin\resources\shaders\opengl\imgui.glsl" />
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\interlace.glsl" />
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\merge.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\opengl\present.glsl" />
|
<None Include="..\bin\resources\shaders\opengl\present.glsl" />
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\shadeboost.glsl" />
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\tfx_fs.glsl" />
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\tfx_vgs.glsl" />
|
||||||
|
<None Include="..\bin\resources\shaders\vulkan\cas.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\vulkan\convert.glsl" />
|
<None Include="..\bin\resources\shaders\vulkan\convert.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\vulkan\imgui.glsl" />
|
<None Include="..\bin\resources\shaders\vulkan\imgui.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\vulkan\interlace.glsl" />
|
<None Include="..\bin\resources\shaders\vulkan\interlace.glsl" />
|
||||||
@ -79,20 +158,14 @@
|
|||||||
<None Include="..\bin\resources\shaders\vulkan\present.glsl" />
|
<None Include="..\bin\resources\shaders\vulkan\present.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\vulkan\shadeboost.glsl" />
|
<None Include="..\bin\resources\shaders\vulkan\shadeboost.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\vulkan\tfx.glsl" />
|
<None Include="..\bin\resources\shaders\vulkan\tfx.glsl" />
|
||||||
<None Include="..\bin\resources\shaders\opengl\convert.glsl" />
|
|
||||||
<None Include="..\bin\resources\shaders\opengl\interlace.glsl" />
|
|
||||||
<None Include="..\bin\resources\shaders\opengl\merge.glsl" />
|
|
||||||
<None Include="..\bin\resources\shaders\opengl\shadeboost.glsl" />
|
|
||||||
<None Include="..\bin\resources\shaders\opengl\tfx_fs.glsl" />
|
|
||||||
<None Include="..\bin\resources\shaders\opengl\tfx_vgs.glsl" />
|
|
||||||
<None Include="..\bin\resources\shaders\dx11\convert.fx" />
|
<None Include="..\bin\resources\shaders\dx11\convert.fx" />
|
||||||
<None Include="..\bin\resources\shaders\common\fxaa.fx" />
|
<None Include="..\bin\resources\shaders\dx11\imgui.fx" />
|
||||||
<None Include="..\bin\resources\shaders\dx11\interlace.fx" />
|
<None Include="..\bin\resources\shaders\dx11\interlace.fx" />
|
||||||
<None Include="..\bin\resources\shaders\dx11\merge.fx" />
|
<None Include="..\bin\resources\shaders\dx11\merge.fx" />
|
||||||
|
<None Include="..\bin\resources\shaders\dx11\present.fx" />
|
||||||
<None Include="..\bin\resources\shaders\dx11\shadeboost.fx" />
|
<None Include="..\bin\resources\shaders\dx11\shadeboost.fx" />
|
||||||
<None Include="..\bin\resources\shaders\dx11\tfx.fx" />
|
<None Include="..\bin\resources\shaders\dx11\tfx.fx" />
|
||||||
<None Include="..\bin\resources\shaders\dx11\imgui.fx" />
|
<None Include="..\bin\resources\shaders\dx11\cas.hlsl" />
|
||||||
<None Include="..\bin\resources\shaders\dx11\present.fx" />
|
|
||||||
<None Include="GS\Renderers\Vulkan\VKEntryPoints.inl">
|
<None Include="GS\Renderers\Vulkan\VKEntryPoints.inl">
|
||||||
<ExcludedFromBuild Condition="'$(Platform)'=='ARM64'">true</ExcludedFromBuild>
|
<ExcludedFromBuild Condition="'$(Platform)'=='ARM64'">true</ExcludedFromBuild>
|
||||||
</None>
|
</None>
|
||||||
@ -1031,5 +1104,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Condition="$(Configuration.Contains(Debug)) Or $(Configuration.Contains(Devel))" Project="$(SolutionDir)3rdparty\winpixeventruntime\WinPixEventRuntime.props" />
|
<Import Condition="$(Configuration.Contains(Debug)) Or $(Configuration.Contains(Devel))" Project="$(SolutionDir)3rdparty\winpixeventruntime\WinPixEventRuntime.props" />
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<Import Project="$(SolutionDir)common\vsprops\ShaderToCpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets" />
|
<ImportGroup Label="ExtensionTargets" />
|
||||||
</Project>
|
</Project>
|
||||||
@ -336,65 +336,62 @@
|
|||||||
<None Include="x86\microVU_Upper.inl">
|
<None Include="x86\microVU_Upper.inl">
|
||||||
<Filter>System\Ps2\EmotionEngine\VU\Dynarec\microVU</Filter>
|
<Filter>System\Ps2\EmotionEngine\VU\Dynarec\microVU</Filter>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="GS\Renderers\Vulkan\VKEntryPoints.inl">
|
||||||
|
<Filter>System\Ps2\GS\Renderers\Vulkan</Filter>
|
||||||
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\common\fxaa.fx">
|
<None Include="..\bin\resources\shaders\common\fxaa.fx">
|
||||||
<Filter>System\Ps2\GS\Shaders\Common</Filter>
|
<Filter>System\Ps2\GS\Shaders\Common</Filter>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\cas.glsl">
|
||||||
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\opengl\convert.glsl">
|
<None Include="..\bin\resources\shaders\opengl\convert.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="..\bin\resources\shaders\opengl\imgui.glsl">
|
||||||
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\opengl\interlace.glsl">
|
<None Include="..\bin\resources\shaders\opengl\interlace.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\opengl\merge.glsl">
|
<None Include="..\bin\resources\shaders\opengl\merge.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\opengl\tfx_vgs.glsl">
|
<None Include="..\bin\resources\shaders\opengl\present.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
|
||||||
</None>
|
|
||||||
<None Include="..\bin\resources\shaders\opengl\tfx_fs.glsl">
|
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\opengl\shadeboost.glsl">
|
<None Include="..\bin\resources\shaders\opengl\shadeboost.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\opengl\imgui.glsl">
|
<None Include="..\bin\resources\shaders\opengl\tfx_fs.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\opengl\present.glsl">
|
<None Include="..\bin\resources\shaders\opengl\tfx_vgs.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
<Filter>System\Ps2\GS\Shaders\OpenGL</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\vulkan\interlace.glsl">
|
<None Include="..\bin\resources\shaders\vulkan\cas.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\vulkan\convert.glsl">
|
<None Include="..\bin\resources\shaders\vulkan\convert.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\vulkan\merge.glsl">
|
<None Include="..\bin\resources\shaders\vulkan\imgui.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\vulkan\tfx.glsl">
|
<None Include="..\bin\resources\shaders\vulkan\interlace.glsl">
|
||||||
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="..\bin\resources\shaders\vulkan\merge.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\vulkan\present.glsl">
|
<None Include="..\bin\resources\shaders\vulkan\present.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\vulkan\imgui.glsl">
|
|
||||||
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
|
||||||
</None>
|
|
||||||
<None Include="..\bin\resources\shaders\vulkan\shadeboost.glsl">
|
<None Include="..\bin\resources\shaders\vulkan\shadeboost.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\dx11\tfx.fx">
|
<None Include="..\bin\resources\shaders\vulkan\tfx.glsl">
|
||||||
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
<Filter>System\Ps2\GS\Shaders\Vulkan</Filter>
|
||||||
</None>
|
|
||||||
<None Include="..\bin\resources\shaders\dx11\shadeboost.fx">
|
|
||||||
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
|
||||||
</None>
|
|
||||||
<None Include="..\bin\resources\shaders\dx11\merge.fx">
|
|
||||||
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
|
||||||
</None>
|
|
||||||
<None Include="..\bin\resources\shaders\dx11\interlace.fx">
|
|
||||||
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\dx11\convert.fx">
|
<None Include="..\bin\resources\shaders\dx11\convert.fx">
|
||||||
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
@ -402,11 +399,23 @@
|
|||||||
<None Include="..\bin\resources\shaders\dx11\imgui.fx">
|
<None Include="..\bin\resources\shaders\dx11\imgui.fx">
|
||||||
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
</None>
|
</None>
|
||||||
|
<None Include="..\bin\resources\shaders\dx11\interlace.fx">
|
||||||
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="..\bin\resources\shaders\dx11\merge.fx">
|
||||||
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
|
</None>
|
||||||
<None Include="..\bin\resources\shaders\dx11\present.fx">
|
<None Include="..\bin\resources\shaders\dx11\present.fx">
|
||||||
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
</None>
|
</None>
|
||||||
<None Include="GS\Renderers\Vulkan\VKEntryPoints.inl">
|
<None Include="..\bin\resources\shaders\dx11\shadeboost.fx">
|
||||||
<Filter>System\Ps2\GS\Renderers\Vulkan</Filter>
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="..\bin\resources\shaders\dx11\tfx.fx">
|
||||||
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="..\bin\resources\shaders\dx11\cas.hlsl">
|
||||||
|
<Filter>System\Ps2\GS\Shaders\Direct3D</Filter>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
38
tools/shader_to_cpp.py
Normal file
38
tools/shader_to_cpp.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def generate_cpp(input_file, output_file, var_name):
|
||||||
|
with open(input_file, "rb") as f:
|
||||||
|
data = f.read()
|
||||||
|
|
||||||
|
ascii_codes = ", ".join(str(b) for b in data)
|
||||||
|
|
||||||
|
cpp = f"""// Auto-generated with {__file__}
|
||||||
|
|
||||||
|
static constexpr unsigned char {var_name}[{len(data) + 1}] = {{
|
||||||
|
{ascii_codes}, 0
|
||||||
|
}};
|
||||||
|
"""
|
||||||
|
|
||||||
|
with open(output_file, "w", newline="\n") as f:
|
||||||
|
f.write(cpp)
|
||||||
|
|
||||||
|
return output_file
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) != 4:
|
||||||
|
print("Usage: text_to_cpp.py <input-file> <output-file> <variable-name>")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
input_file = sys.argv[1]
|
||||||
|
output_file = sys.argv[2]
|
||||||
|
var_name = sys.argv[3]
|
||||||
|
if not os.path.isfile(input_file):
|
||||||
|
print(f"Error: '{input_file}' does not exist or is not a file.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
output_file = generate_cpp(input_file, output_file, var_name)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Reference in New Issue
Block a user