diff --git a/pcsx2/GS/Renderers/Common/GSDevice.cpp b/pcsx2/GS/Renderers/Common/GSDevice.cpp index f4d50a6923..bf93117798 100644 --- a/pcsx2/GS/Renderers/Common/GSDevice.cpp +++ b/pcsx2/GS/Renderers/Common/GSDevice.cpp @@ -395,24 +395,6 @@ void GSDevice::Interlace(const GSVector2i& ds, int field, int mode, float yoffse } } -#ifndef PCSX2_CORE - -void GSDevice::ExternalFX() -{ - const GSVector2i s = m_current->GetSize(); - - if (ResizeTarget(&m_target_tmp)) - { - const GSVector4 sRect(0, 0, 1, 1); - const GSVector4 dRect(0, 0, s.x, s.y); - - StretchRect(m_current, sRect, m_target_tmp, dRect, ShaderConvert::TRANSPARENCY_FILTER, false); - DoExternalFX(m_target_tmp, m_current); - } -} - -#endif - void GSDevice::FXAA() { const GSVector2i s = m_current->GetSize(); diff --git a/pcsx2/GS/Renderers/Common/GSDevice.h b/pcsx2/GS/Renderers/Common/GSDevice.h index 8c3c2d38b5..01d297a7a4 100644 --- a/pcsx2/GS/Renderers/Common/GSDevice.h +++ b/pcsx2/GS/Renderers/Common/GSDevice.h @@ -195,16 +195,6 @@ public: InterlaceConstantBuffer() { memset(this, 0, sizeof(*this)); } }; -class ExternalFXConstantBuffer -{ -public: - GSVector2 xyFrame; - GSVector4 rcpFrame; - GSVector4 rcpFrameOpt; - - ExternalFXConstantBuffer() { memset(this, 0, sizeof(*this)); } -}; - #pragma pack(pop) enum HWBlendFlags @@ -771,9 +761,6 @@ protected: virtual void DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool linear, float yoffset, int bufIdx) = 0; virtual void DoFXAA(GSTexture* sTex, GSTexture* dTex) {} virtual void DoShadeBoost(GSTexture* sTex, GSTexture* dTex, const float params[4]) {} -#ifndef PCSX2_CORE - virtual void DoExternalFX(GSTexture* sTex, GSTexture* dTex) {} -#endif /// Resolves CAS shader includes for the specified source. static bool GetCASShaderSource(std::string* source); @@ -864,10 +851,6 @@ public: void ShadeBoost(); void Resize(int width, int height); -#ifndef PCSX2_CORE - void ExternalFX(); -#endif - void CAS(GSTexture*& tex, GSVector4i& src_rect, GSVector4& src_uv, const GSVector4& draw_rect, bool sharpen_only); bool ResizeTexture(GSTexture** t, GSTexture::Type type, int w, int h, bool clear = true, bool prefer_reuse = false); diff --git a/pcsx2/GS/Renderers/Common/GSRenderer.cpp b/pcsx2/GS/Renderers/Common/GSRenderer.cpp index 9bc9dd4ec0..197e978e14 100644 --- a/pcsx2/GS/Renderers/Common/GSRenderer.cpp +++ b/pcsx2/GS/Renderers/Common/GSRenderer.cpp @@ -395,11 +395,6 @@ bool GSRenderer::Merge(int field) if (GSConfig.ShadeBoost) g_gs_device->ShadeBoost(); -#ifndef PCSX2_CORE - if (GSConfig.ShaderFX) - g_gs_device->ExternalFX(); -#endif - if (GSConfig.FXAA) g_gs_device->FXAA(); diff --git a/pcsx2/GS/Renderers/DX11/GSDevice11.cpp b/pcsx2/GS/Renderers/DX11/GSDevice11.cpp index 875d0f3dfb..1bd583310f 100644 --- a/pcsx2/GS/Renderers/DX11/GSDevice11.cpp +++ b/pcsx2/GS/Renderers/DX11/GSDevice11.cpp @@ -267,16 +267,6 @@ bool GSDevice11::Create() if (!m_shadeboost.ps) return false; - // External fx shader - - memset(&bd, 0, sizeof(bd)); - - bd.ByteWidth = sizeof(ExternalFXConstantBuffer); - bd.Usage = D3D11_USAGE_DEFAULT; - bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER; - - m_dev->CreateBuffer(&bd, nullptr, m_shaderfx.cb.put()); - // memset(&rd, 0, sizeof(rd)); @@ -844,56 +834,6 @@ void GSDevice11::DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool StretchRect(sTex, sRect, dTex, dRect, m_interlace.ps[shader].get(), m_interlace.cb.get(), linear); } -#ifndef PCSX2_CORE - -void GSDevice11::DoExternalFX(GSTexture* sTex, GSTexture* dTex) -{ - const GSVector2i s = dTex->GetSize(); - - const GSVector4 sRect(0, 0, 1, 1); - const GSVector4 dRect(0, 0, s.x, s.y); - - ExternalFXConstantBuffer cb; - - if (!m_shaderfx.ps) - { - std::string config_name(theApp.GetConfigS("shaderfx_conf")); - std::ifstream fconfig(config_name); - std::stringstream shader; - if (fconfig.good()) - shader << fconfig.rdbuf() << "\n"; - else - fprintf(stderr, "GS: External shader config '%s' not loaded.\n", config_name.c_str()); - - std::string shader_name(theApp.GetConfigS("shaderfx_glsl")); - std::ifstream fshader(shader_name); - if (!fshader.good()) - { - fprintf(stderr, "GS: External shader '%s' not loaded and will be disabled!\n", shader_name.c_str()); - return; - } - - shader << fshader.rdbuf(); - ShaderMacro sm(m_shader_cache.GetFeatureLevel()); - m_shaderfx.ps = m_shader_cache.GetPixelShader(m_dev.get(), shader.str(), sm.GetPtr(), "ps_main"); - if (!m_shaderfx.ps) - { - printf("GS: Failed to compile external post-processing shader.\n"); - return; - } - } - - cb.xyFrame = GSVector2((float)s.x, (float)s.y); - cb.rcpFrame = GSVector4(1.0f / (float)s.x, 1.0f / (float)s.y, 0.0f, 0.0f); - cb.rcpFrameOpt = GSVector4::zero(); - - m_ctx->UpdateSubresource(m_shaderfx.cb.get(), 0, nullptr, &cb, 0, 0); - - StretchRect(sTex, sRect, dTex, dRect, m_shaderfx.ps.get(), m_shaderfx.cb.get(), true); -} - -#endif - void GSDevice11::DoFXAA(GSTexture* sTex, GSTexture* dTex) { const GSVector2i s = dTex->GetSize(); diff --git a/pcsx2/GS/Renderers/DX11/GSDevice11.h b/pcsx2/GS/Renderers/DX11/GSDevice11.h index 66b88214f8..e155c681bf 100644 --- a/pcsx2/GS/Renderers/DX11/GSDevice11.h +++ b/pcsx2/GS/Renderers/DX11/GSDevice11.h @@ -122,9 +122,6 @@ private: void DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool linear, float yoffset = 0, int bufIdx = 0) final; void DoFXAA(GSTexture* sTex, GSTexture* dTex) final; void DoShadeBoost(GSTexture* sTex, GSTexture* dTex, const float params[4]) final; -#ifndef PCSX2_CORE - void DoExternalFX(GSTexture* sTex, GSTexture* dTex) final; -#endif bool CreateCASShaders(); bool DoCAS(GSTexture* sTex, GSTexture* dTex, bool sharpen_only, const std::array& constants) final; @@ -194,12 +191,6 @@ private: wil::com_ptr_nothrow cb; } m_interlace; - struct - { - wil::com_ptr_nothrow ps; - wil::com_ptr_nothrow cb; - } m_shaderfx; - wil::com_ptr_nothrow m_fxaa_ps; struct diff --git a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h index 7e3dd775e8..0e65fe2842 100644 --- a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h +++ b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.h @@ -352,10 +352,6 @@ public: void DoFXAA(GSTexture* sTex, GSTexture* dTex) override; void DoShadeBoost(GSTexture* sTex, GSTexture* dTex, const float params[4]) override; -#ifndef PCSX2_CORE - void DoExternalFX(GSTexture* sTex, GSTexture* dTex) override; -#endif - bool DoCAS(GSTexture* sTex, GSTexture* dTex, bool sharpen_only, const std::array& constants) override; MRCOwned> LoadShader(NSString* name); diff --git a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm index 5a412cf06f..76f6443cd1 100644 --- a/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm +++ b/pcsx2/GS/Renderers/Metal/GSDeviceMTL.mm @@ -618,15 +618,6 @@ void GSDeviceMTL::DoShadeBoost(GSTexture* sTex, GSTexture* dTex, const float par RenderCopy(sTex, m_shadeboost_pipeline, GSVector4i(0, 0, dTex->GetSize().x, dTex->GetSize().y)); } -#ifndef PCSX2_CORE - -void GSDeviceMTL::DoExternalFX(GSTexture* sTex, GSTexture* dTex) -{ - // TODO: Implement -} - -#endif - bool GSDeviceMTL::DoCAS(GSTexture* sTex, GSTexture* dTex, bool sharpen_only, const std::array& constants) { @autoreleasepool { static constexpr int threadGroupWorkRegionDim = 16; diff --git a/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp b/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp index 8c78b95c11..c7bc65a984 100644 --- a/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp +++ b/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.cpp @@ -1432,66 +1432,6 @@ void GSDeviceOGL::DoFXAA(GSTexture* sTex, GSTexture* dTex) StretchRect(sTex, sRect, dTex, dRect, m_fxaa.ps, true); } -#ifndef PCSX2_CORE - -void GSDeviceOGL::DoExternalFX(GSTexture* sTex, GSTexture* dTex) -{ - // Lazy compile - if (!m_shaderfx.ps.IsValid()) - { - if (!GLLoader::found_GL_ARB_gpu_shader5) // GL4.0 extension - { - return; - } - - std::string config_name(theApp.GetConfigS("shaderfx_conf")); - std::ifstream fconfig(config_name); - std::stringstream config; - config << "#extension GL_ARB_gpu_shader5 : require\n"; - if (fconfig.good()) - config << fconfig.rdbuf(); - else - fprintf(stderr, "GS: External shader config '%s' not loaded.\n", config_name.c_str()); - - std::string shader_name(theApp.GetConfigS("shaderfx_glsl")); - std::ifstream fshader(shader_name); - std::stringstream shader; - if (!fshader.good()) - { - fprintf(stderr, "GS: External shader '%s' not loaded and will be disabled!\n", shader_name.c_str()); - return; - } - shader << fshader.rdbuf(); - - - const std::string ps(GetShaderSource("ps_main", GL_FRAGMENT_SHADER, m_shader_common_header, shader.str(), config.str())); - if (!m_shaderfx.ps.Compile(m_convert.vs, {}, ps) || !m_shaderfx.ps.Link()) - return; - - m_shaderfx.ps.RegisterUniform("_xyFrame"); - m_shaderfx.ps.RegisterUniform("_rcpFrame"); - m_shaderfx.ps.RegisterUniform("_rcpFrameOpt"); - } - - GL_PUSH("DoExternalFX"); - - OMSetColorMaskState(); - - const GSVector2i s = dTex->GetSize(); - - const GSVector4 sRect(0, 0, 1, 1); - const GSVector4 dRect(0, 0, s.x, s.y); - - m_shaderfx.ps.Bind(); - m_shaderfx.ps.Uniform2f(0, (float)s.x, (float)s.y); - m_shaderfx.ps.Uniform4f(1, 1.0f / s.x, 1.0f / s.y, 0.0f, 0.0f); - m_shaderfx.ps.Uniform4f(2, 0.0f, 0.0f, 0.0f, 0.0f); - - StretchRect(sTex, sRect, dTex, dRect, m_shaderfx.ps, true); -} - -#endif - void GSDeviceOGL::DoShadeBoost(GSTexture* sTex, GSTexture* dTex, const float params[4]) { GL_PUSH("DoShadeBoost"); diff --git a/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.h b/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.h index b3d01f10d8..6c608ae79f 100644 --- a/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.h +++ b/pcsx2/GS/Renderers/OpenGL/GSDeviceOGL.h @@ -257,13 +257,6 @@ private: GL::Program ps; } m_fxaa; -#ifndef PCSX2_CORE - struct - { - GL::Program ps; - } m_shaderfx; -#endif - struct { GSDepthStencilOGL* dss = nullptr; @@ -307,9 +300,6 @@ private: void DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool linear, float yoffset = 0, int bufIdx = 0) final; void DoFXAA(GSTexture* sTex, GSTexture* dTex) final; void DoShadeBoost(GSTexture* sTex, GSTexture* dTex, const float params[4]) final; -#ifndef PCSX2_CORE - void DoExternalFX(GSTexture* sTex, GSTexture* dTex) final; -#endif bool CreateCASPrograms(); bool DoCAS(GSTexture* sTex, GSTexture* dTex, bool sharpen_only, const std::array& constants) final;