summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/PostProcessing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/PostProcessing.cpp')
-rw-r--r--Source/Core/VideoCommon/PostProcessing.cpp86
1 files changed, 19 insertions, 67 deletions
diff --git a/Source/Core/VideoCommon/PostProcessing.cpp b/Source/Core/VideoCommon/PostProcessing.cpp
index d9f7a8e8c6..72ee15a776 100644
--- a/Source/Core/VideoCommon/PostProcessing.cpp
+++ b/Source/Core/VideoCommon/PostProcessing.cpp
@@ -441,10 +441,7 @@ std::string PostProcessing::GetUniformBufferHeader() const
{
std::ostringstream ss;
u32 unused_counter = 1;
- if (g_ActiveConfig.backend_info.api_type == APIType::D3D)
- ss << "cbuffer PSBlock : register(b0) {\n";
- else
- ss << "UBO_BINDING(std140, 1) uniform PSBlock {\n";
+ ss << "UBO_BINDING(std140, 1) uniform PSBlock {\n";
// Builtin uniforms
ss << " float4 resolution;\n";
@@ -499,42 +496,20 @@ std::string PostProcessing::GetHeader() const
{
std::ostringstream ss;
ss << GetUniformBufferHeader();
- if (g_ActiveConfig.backend_info.api_type == APIType::D3D)
+ ss << "SAMPLER_BINDING(0) uniform sampler2DArray samp0;\n";
+
+ if (g_ActiveConfig.backend_info.bSupportsGeometryShaders)
{
- ss << "Texture2DArray samp0 : register(t0);\n";
- ss << "SamplerState samp0_ss : register(s0);\n";
+ ss << "VARYING_LOCATION(0) in VertexData {\n";
+ ss << " float3 v_tex0;\n";
+ ss << "};\n";
}
else
{
- ss << "SAMPLER_BINDING(0) uniform sampler2DArray samp0;\n";
-
- if (g_ActiveConfig.backend_info.bSupportsGeometryShaders)
- {
- ss << "VARYING_LOCATION(0) in VertexData {\n";
- ss << " float3 v_tex0;\n";
- ss << "};\n";
- }
- else
- {
- ss << "VARYING_LOCATION(0) in float3 v_tex0;\n";
- }
-
- ss << "FRAGMENT_OUTPUT_LOCATION(0) out float4 ocol0;\n";
+ ss << "VARYING_LOCATION(0) in float3 v_tex0;\n";
}
- // Rename main, since we need to set up globals
- if (g_ActiveConfig.backend_info.api_type == APIType::D3D)
- {
- ss << R"(
-#define main real_main
-static float3 v_tex0;
-static float4 ocol0;
-
-// Wrappers for sampling functions.
-#define texture(sampler, coords) sampler.Sample(sampler##_ss, coords)
-#define textureOffset(sampler, coords, offset) sampler.Sample(sampler##_ss, coords, offset)
-)";
- }
+ ss << "FRAGMENT_OUTPUT_LOCATION(0) out float4 ocol0;\n";
ss << R"(
float4 Sample() { return texture(samp0, v_tex0); }
@@ -591,22 +566,7 @@ void SetOutput(float4 color)
std::string PostProcessing::GetFooter() const
{
- if (g_ActiveConfig.backend_info.api_type == APIType::D3D)
- {
- return R"(
-
-#undef main
-void main(in float3 v_tex0_ : TEXCOORD0, out float4 ocol0_ : SV_Target)
-{
- v_tex0 = v_tex0_;
- real_main();
- ocol0_ = ocol0;
-})";
- }
- else
- {
- return {};
- }
+ return {};
}
bool PostProcessing::CompileVertexShader()
@@ -614,28 +574,20 @@ bool PostProcessing::CompileVertexShader()
std::ostringstream ss;
ss << GetUniformBufferHeader();
- if (g_ActiveConfig.backend_info.api_type == APIType::D3D)
+ if (g_ActiveConfig.backend_info.bSupportsGeometryShaders)
{
- ss << "void main(in uint id : SV_VertexID, out float3 v_tex0 : TEXCOORD0,\n";
- ss << " out float4 opos : SV_Position) {\n";
+ ss << "VARYING_LOCATION(0) out VertexData {\n";
+ ss << " float3 v_tex0;\n";
+ ss << "};\n";
}
else
{
- if (g_ActiveConfig.backend_info.bSupportsGeometryShaders)
- {
- ss << "VARYING_LOCATION(0) out VertexData {\n";
- ss << " float3 v_tex0;\n";
- ss << "};\n";
- }
- else
- {
- ss << "VARYING_LOCATION(0) out float3 v_tex0;\n";
- }
-
- ss << "#define id gl_VertexID\n";
- ss << "#define opos gl_Position\n";
- ss << "void main() {\n";
+ ss << "VARYING_LOCATION(0) out float3 v_tex0;\n";
}
+
+ ss << "#define id gl_VertexID\n";
+ ss << "#define opos gl_Position\n";
+ ss << "void main() {\n";
ss << " v_tex0 = float3(float((id << 1) & 2), float(id & 2), 0.0f);\n";
ss << " opos = float4(v_tex0.xy * float2(2.0f, -2.0f) + float2(-1.0f, 1.0f), 0.0f, 1.0f);\n";
ss << " v_tex0 = float3(src_rect.xy + (src_rect.zw * v_tex0.xy), float(src_layer));\n";