diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3962a9d05f..d65573c011 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1073,9 +1073,6 @@ set (PCH_SOURCES rendering/hwrenderer/postprocessing/hw_postprocess.cpp rendering/hwrenderer/postprocessing/hw_postprocess_cvars.cpp rendering/hwrenderer/postprocessing/hw_postprocessshader.cpp - rendering/hwrenderer/postprocessing/hw_shadowmapshader.cpp - rendering/hwrenderer/postprocessing/hw_presentshader.cpp - rendering/hwrenderer/postprocessing/hw_present3dRowshader.cpp rendering/hwrenderer/textures/hw_material.cpp rendering/hwrenderer/textures/hw_precache.cpp rendering/hwrenderer/utility/hw_clock.cpp diff --git a/src/rendering/gl/renderer/gl_postprocess.cpp b/src/rendering/gl/renderer/gl_postprocess.cpp index 0b2f72909d..d276290917 100644 --- a/src/rendering/gl/renderer/gl_postprocess.cpp +++ b/src/rendering/gl/renderer/gl_postprocess.cpp @@ -38,7 +38,7 @@ #include "gl/renderer/gl_renderbuffers.h" #include "gl/renderer/gl_renderer.h" #include "gl/renderer/gl_postprocessstate.h" -#include "hwrenderer/postprocessing/hw_presentshader.h" +#include "gl/shaders/gl_shaderprogram.h" #include "hwrenderer/postprocessing/hw_postprocess.h" #include "hwrenderer/postprocessing/hw_postprocess_cvars.h" #include "hwrenderer/utility/hw_vrmodes.h" @@ -220,7 +220,7 @@ void FGLRenderer::DrawPresentTexture(const IntRect &box, bool applyGamma) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); } - mPresentShader->Bind(NOQUEUE); + mPresentShader->Bind(); if (!applyGamma || framebuffer->IsHWGammaActive()) { mPresentShader->Uniforms->InvGamma = 1.0f; diff --git a/src/rendering/gl/renderer/gl_renderbuffers.cpp b/src/rendering/gl/renderer/gl_renderbuffers.cpp index 73c33e961a..421e1769a5 100644 --- a/src/rendering/gl/renderer/gl_renderbuffers.cpp +++ b/src/rendering/gl/renderer/gl_renderbuffers.cpp @@ -861,8 +861,8 @@ void FGLRenderBuffers::CompileEffectShaders() prolog = UniformBlockDecl::Create("Uniforms", desc.Uniforms, POSTPROCESS_BINDINGPOINT); prolog += desc.Defines; - glshader->Compile(IShaderProgram::Vertex, desc.VertexShader, "", desc.Version); - glshader->Compile(IShaderProgram::Fragment, desc.FragmentShader, prolog, desc.Version); + glshader->Compile(FShaderProgram::Vertex, desc.VertexShader, "", desc.Version); + glshader->Compile(FShaderProgram::Fragment, desc.FragmentShader, prolog, desc.Version); glshader->Link(pair->Key.GetChars()); if (!desc.Uniforms.empty()) glshader->SetUniformBufferLocation(POSTPROCESS_BINDINGPOINT, "Uniforms"); @@ -987,7 +987,7 @@ void FGLRenderBuffers::RenderEffect(const FString &name) } // Set shader - shader->Bind(NOQUEUE); + shader->Bind(); // Draw the screen quad GLRenderer->RenderScreenQuad(); diff --git a/src/rendering/gl/renderer/gl_renderer.cpp b/src/rendering/gl/renderer/gl_renderer.cpp index 662365724f..0de84e6dad 100644 --- a/src/rendering/gl/renderer/gl_renderer.cpp +++ b/src/rendering/gl/renderer/gl_renderer.cpp @@ -47,10 +47,8 @@ #include "gl/renderer/gl_renderer.h" #include "gl/renderer/gl_renderstate.h" #include "gl/renderer/gl_renderbuffers.h" +#include "gl/shaders/gl_shaderprogram.h" #include "hwrenderer/utility/hw_vrmodes.h" -#include "hwrenderer/postprocessing/hw_presentshader.h" -#include "hwrenderer/postprocessing/hw_present3dRowshader.h" -#include "hwrenderer/postprocessing/hw_shadowmapshader.h" #include "hwrenderer/data/flatvertices.h" #include "hwrenderer/scene/hw_skydome.h" #include "hwrenderer/scene/hw_fakeflat.h" @@ -198,7 +196,7 @@ void FGLRenderer::UpdateShadowMap() mBuffers->BindShadowMapFB(); - mShadowMapShader->Bind(NOQUEUE); + mShadowMapShader->Bind(); mShadowMapShader->Uniforms->ShadowmapQuality = gl_shadowmap_quality; mShadowMapShader->Uniforms.Set(); diff --git a/src/rendering/gl/renderer/gl_renderer.h b/src/rendering/gl/renderer/gl_renderer.h index f3765d3825..0514a48663 100644 --- a/src/rendering/gl/renderer/gl_renderer.h +++ b/src/rendering/gl/renderer/gl_renderer.h @@ -24,25 +24,23 @@ class HWPortal; class FLightBuffer; class DPSprite; class FGLRenderBuffers; -class FPresentShader; -class FPresent3DCheckerShader; -class FPresent3DColumnShader; -class FPresent3DRowShader; class FGL2DDrawer; class FHardwareTexture; -class FShadowMapShader; class SWSceneDrawer; class GLViewpointBuffer; struct FRenderViewpoint; -class FPresentShaderBase; namespace OpenGLRenderer { class FSamplerManager; class FCustomPostProcessShaders; class OpenGLFrameBuffer; - -#define NOQUEUE nullptr // just some token to be used as a placeholder + class FPresentShaderBase; + class FPresentShader; + class FPresent3DCheckerShader; + class FPresent3DColumnShader; + class FPresent3DRowShader; + class FShadowMapShader; class FGLRenderer { diff --git a/src/rendering/gl/renderer/gl_stereo3d.cpp b/src/rendering/gl/renderer/gl_stereo3d.cpp index 4f0a632162..d2bceaeaa9 100644 --- a/src/rendering/gl/renderer/gl_stereo3d.cpp +++ b/src/rendering/gl/renderer/gl_stereo3d.cpp @@ -32,8 +32,7 @@ #include "gl/system/gl_framebuffer.h" #include "gl/renderer/gl_postprocessstate.h" #include "gl/system/gl_framebuffer.h" -#include "hwrenderer/postprocessing/hw_presentshader.h" -#include "hwrenderer/postprocessing/hw_present3dRowshader.h" +#include "gl/shaders/gl_shaderprogram.h" #include "menu/menu.h" EXTERN_CVAR(Int, vr_mode) @@ -151,7 +150,7 @@ void FGLRenderer::prepareInterleavedPresent(FPresentShaderBase& shader) const IntRect& box = screen->mOutputLetterbox; glViewport(box.left, box.top, box.width, box.height); - shader.Bind(NOQUEUE); + shader.Bind(); if (framebuffer->IsHWGammaActive()) { diff --git a/src/rendering/gl/shaders/gl_postprocessshader.cpp b/src/rendering/gl/shaders/gl_postprocessshader.cpp index 0e87275e00..4f73e75b26 100644 --- a/src/rendering/gl/shaders/gl_postprocessshader.cpp +++ b/src/rendering/gl/shaders/gl_postprocessshader.cpp @@ -59,7 +59,7 @@ void FCustomPostProcessShaders::Run(FString target) { if (shader->Desc->Target == target) { - shader->Run(NOQUEUE); + shader->Run(); } } } @@ -72,7 +72,7 @@ PostProcessShaderInstance::~PostProcessShaderInstance() glDeleteTextures(1, (GLuint*)&it.second); } -void PostProcessShaderInstance::Run(IRenderQueue *q) +void PostProcessShaderInstance::Run() { if (!IsShaderSupported()) return; @@ -92,7 +92,7 @@ void PostProcessShaderInstance::Run(IRenderQueue *q) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - mProgram.Bind(q); + mProgram.Bind(); UpdateUniforms(); BindTextures(); @@ -168,8 +168,8 @@ void PostProcessShaderInstance::CompileShader() prolog += uniformTextures; prolog += pipelineInOut; - mProgram.Compile(IShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", Desc->ShaderVersion); - mProgram.Compile(IShaderProgram::Fragment, lumpName, code, prolog.GetChars(), Desc->ShaderVersion); + mProgram.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", Desc->ShaderVersion); + mProgram.Compile(FShaderProgram::Fragment, lumpName, code, prolog.GetChars(), Desc->ShaderVersion); mProgram.Link(Desc->ShaderLumpName.GetChars()); mInputTexture.Init(mProgram.Handle(), "InputTexture"); } diff --git a/src/rendering/gl/shaders/gl_postprocessshaderinstance.h b/src/rendering/gl/shaders/gl_postprocessshaderinstance.h index 02613a3736..0861467382 100644 --- a/src/rendering/gl/shaders/gl_postprocessshaderinstance.h +++ b/src/rendering/gl/shaders/gl_postprocessshaderinstance.h @@ -15,7 +15,7 @@ public: PostProcessShaderInstance(PostProcessShader *desc) : Desc(desc) { } ~PostProcessShaderInstance(); - void Run(IRenderQueue *q); + void Run(); PostProcessShader *Desc; diff --git a/src/rendering/gl/shaders/gl_shaderprogram.cpp b/src/rendering/gl/shaders/gl_shaderprogram.cpp index 83b9ee2278..d7c49f3213 100644 --- a/src/rendering/gl/shaders/gl_shaderprogram.cpp +++ b/src/rendering/gl/shaders/gl_shaderprogram.cpp @@ -221,7 +221,7 @@ void FShaderProgram::SetUniformBufferLocation(int index, const char *name) // //========================================================================== -void FShaderProgram::Bind(IRenderQueue *) +void FShaderProgram::Bind() { glUseProgram(mProgram); } @@ -295,4 +295,74 @@ FString FShaderProgram::PatchShader(ShaderType type, const FString &code, const return patchedCode; } +///////////////////////////////////////////////////////////////////////////// + +void FPresentShaderBase::Init(const char * vtx_shader_name, const char * program_name) +{ + FString prolog = Uniforms.CreateDeclaration("Uniforms", PresentUniforms::Desc()); + + mShader.reset(new FShaderProgram()); + mShader->Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", prolog, 330); + mShader->Compile(FShaderProgram::Fragment, vtx_shader_name, prolog, 330); + mShader->Link(program_name); + mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); + Uniforms.Init(); +} + +void FPresentShader::Bind() +{ + if (!mShader) + { + Init("shaders/glsl/present.fp", "shaders/glsl/present"); + } + mShader->Bind(); +} + +///////////////////////////////////////////////////////////////////////////// + +void FPresent3DCheckerShader::Bind() +{ + if (!mShader) + { + Init("shaders/glsl/present_checker3d.fp", "shaders/glsl/presentChecker3d"); + } + mShader->Bind(); +} + +void FPresent3DColumnShader::Bind() +{ + if (!mShader) + { + Init("shaders/glsl/present_column3d.fp", "shaders/glsl/presentColumn3d"); + } + mShader->Bind(); +} + +void FPresent3DRowShader::Bind() +{ + if (!mShader) + { + Init("shaders/glsl/present_row3d.fp", "shaders/glsl/presentRow3d"); + } + mShader->Bind(); +} + +///////////////////////////////////////////////////////////////////////////// + +void FShadowMapShader::Bind() +{ + if (!mShader) + { + FString prolog = Uniforms.CreateDeclaration("Uniforms", ShadowMapUniforms::Desc()); + + mShader.reset(new FShaderProgram()); + mShader->Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 430); + mShader->Compile(FShaderProgram::Fragment, "shaders/glsl/shadowmap.fp", prolog, 430); + mShader->Link("shaders/glsl/shadowmap"); + mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); + Uniforms.Init(); + } + mShader->Bind(); +} + } \ No newline at end of file diff --git a/src/rendering/gl/shaders/gl_shaderprogram.h b/src/rendering/gl/shaders/gl_shaderprogram.h index 0167618e13..87ecaae870 100644 --- a/src/rendering/gl/shaders/gl_shaderprogram.h +++ b/src/rendering/gl/shaders/gl_shaderprogram.h @@ -3,23 +3,30 @@ #include "gl_load/gl_system.h" #include "gl_shader.h" -#include "hwrenderer/postprocessing/hw_shaderprogram.h" +#include "hwrenderer/postprocessing/hw_postprocess.h" namespace OpenGLRenderer { -class FShaderProgram : public IShaderProgram +class FShaderProgram { public: FShaderProgram(); ~FShaderProgram(); - void Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion) override; - void Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion) override; + enum ShaderType + { + Vertex, + Fragment, + NumShaderTypes + }; + + void Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion); + void Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion); void Link(const char *name); void SetUniformBufferLocation(int index, const char *name); - void Bind(IRenderQueue *q) override; // the parameter here is just a preparation for Vulkan + void Bind(); GLuint Handle() { return mProgram; } //explicit operator bool() const { return mProgram != 0; } @@ -44,4 +51,53 @@ private: TArray> samplerstobind; }; +class FPresentShaderBase +{ +public: + virtual ~FPresentShaderBase() {} + virtual void Bind() = 0; + + ShaderUniforms Uniforms; + +protected: + virtual void Init(const char * vtx_shader_name, const char * program_name); + std::unique_ptr mShader; +}; + +class FPresentShader : public FPresentShaderBase +{ +public: + void Bind() override; + +}; + +class FPresent3DCheckerShader : public FPresentShaderBase +{ +public: + void Bind() override; +}; + +class FPresent3DColumnShader : public FPresentShaderBase +{ +public: + void Bind() override; +}; + +class FPresent3DRowShader : public FPresentShaderBase +{ +public: + void Bind() override; +}; + +class FShadowMapShader +{ +public: + void Bind(); + + ShaderUniforms Uniforms; + +private: + std::unique_ptr mShader; +}; + } \ No newline at end of file diff --git a/src/rendering/gl/system/gl_framebuffer.cpp b/src/rendering/gl/system/gl_framebuffer.cpp index 6697c89d5e..8ad6e60c02 100644 --- a/src/rendering/gl/system/gl_framebuffer.cpp +++ b/src/rendering/gl/system/gl_framebuffer.cpp @@ -325,11 +325,6 @@ FModelRenderer *OpenGLFrameBuffer::CreateModelRenderer(int mli) return new FGLModelRenderer(nullptr, gl_RenderState, mli); } -IShaderProgram *OpenGLFrameBuffer::CreateShaderProgram() -{ - return new FShaderProgram; -} - IVertexBuffer *OpenGLFrameBuffer::CreateVertexBuffer() { return new GLVertexBuffer; diff --git a/src/rendering/gl/system/gl_framebuffer.h b/src/rendering/gl/system/gl_framebuffer.h index 97e328678d..19bc192d12 100644 --- a/src/rendering/gl/system/gl_framebuffer.h +++ b/src/rendering/gl/system/gl_framebuffer.h @@ -37,7 +37,6 @@ public: void BeginFrame() override; void SetViewportRects(IntRect *bounds) override; void BlurScene(float amount) override; - IShaderProgram *CreateShaderProgram() override; IVertexBuffer *CreateVertexBuffer() override; IIndexBuffer *CreateIndexBuffer() override; IDataBuffer *CreateDataBuffer(int bindingpoint, bool ssbo) override; diff --git a/src/rendering/hwrenderer/postprocessing/hw_present3dRowshader.cpp b/src/rendering/hwrenderer/postprocessing/hw_present3dRowshader.cpp deleted file mode 100644 index 30575d85cd..0000000000 --- a/src/rendering/hwrenderer/postprocessing/hw_present3dRowshader.cpp +++ /dev/null @@ -1,57 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2016 Christopher Bruns -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// -/* -** gl_3dRowshader.cpp -** Copy rendered texture to back buffer, possibly with gamma correction -** while interleaving rows from two independent viewpoint textures, -** representing the left-eye and right-eye views. -** -*/ - -#include "hw_present3dRowshader.h" - -void FPresent3DCheckerShader::Bind(IRenderQueue *q) -{ - if (!mShader) - { - Init("shaders/glsl/present_checker3d.fp", "shaders/glsl/presentChecker3d"); - } - mShader->Bind(q); -} - -void FPresent3DColumnShader::Bind(IRenderQueue *q) -{ - if (!mShader) - { - Init("shaders/glsl/present_column3d.fp", "shaders/glsl/presentColumn3d"); - } - mShader->Bind(q); -} - -void FPresent3DRowShader::Bind(IRenderQueue *q) -{ - if (!mShader) - { - Init("shaders/glsl/present_row3d.fp", "shaders/glsl/presentRow3d"); - } - mShader->Bind(q); -} diff --git a/src/rendering/hwrenderer/postprocessing/hw_present3dRowshader.h b/src/rendering/hwrenderer/postprocessing/hw_present3dRowshader.h deleted file mode 100644 index faf5c117bc..0000000000 --- a/src/rendering/hwrenderer/postprocessing/hw_present3dRowshader.h +++ /dev/null @@ -1,53 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2015 Christopher Bruns -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// -/* -** gl_present3dRowshader.h -** Final composition and present shader for row-interleaved stereoscopic 3D mode -** -*/ - -#ifndef GL_PRESENT3DROWSHADER_H_ -#define GL_PRESENT3DROWSHADER_H_ - -#include "hw_shaderprogram.h" -#include "hw_presentshader.h" - -class FPresent3DCheckerShader : public FPresentShaderBase -{ -public: - void Bind(IRenderQueue *q) override; -}; - -class FPresent3DColumnShader : public FPresentShaderBase -{ -public: - void Bind(IRenderQueue *q) override; -}; - -class FPresent3DRowShader : public FPresentShaderBase -{ -public: - void Bind(IRenderQueue *q) override; -}; - -// GL_PRESENT3DROWSHADER_H_ -#endif \ No newline at end of file diff --git a/src/rendering/hwrenderer/postprocessing/hw_presentshader.cpp b/src/rendering/hwrenderer/postprocessing/hw_presentshader.cpp deleted file mode 100644 index 733f3e97dc..0000000000 --- a/src/rendering/hwrenderer/postprocessing/hw_presentshader.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2016 Magnus Norddahl -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// -/* -** gl_presentshader.cpp -** Copy rendered texture to back buffer, possibly with gamma correction -** -*/ - -#include "v_video.h" -#include "hw_presentshader.h" - -void FPresentShaderBase::Init(const char * vtx_shader_name, const char * program_name) -{ - FString prolog = Uniforms.CreateDeclaration("Uniforms", PresentUniforms::Desc()); - - mShader.reset(screen->CreateShaderProgram()); - mShader->Compile(IShaderProgram::Vertex, "shaders/glsl/screenquad.vp", prolog, 330); - mShader->Compile(IShaderProgram::Fragment, vtx_shader_name, prolog, 330); - mShader->Link(program_name); - mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); - Uniforms.Init(); -} - -void FPresentShader::Bind(IRenderQueue *q) -{ - if (!mShader) - { - Init("shaders/glsl/present.fp", "shaders/glsl/present"); - } - mShader->Bind(q); -} diff --git a/src/rendering/hwrenderer/postprocessing/hw_presentshader.h b/src/rendering/hwrenderer/postprocessing/hw_presentshader.h deleted file mode 100644 index f8dc15a7ad..0000000000 --- a/src/rendering/hwrenderer/postprocessing/hw_presentshader.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef __GL_PRESENTSHADER_H -#define __GL_PRESENTSHADER_H - -#include "hwrenderer/postprocessing/hw_shaderprogram.h" -#include "hwrenderer/postprocessing/hw_postprocess.h" - -class FPresentShaderBase -{ -public: - virtual ~FPresentShaderBase() {} - virtual void Bind(IRenderQueue *q) = 0; - - ShaderUniforms Uniforms; - -protected: - virtual void Init(const char * vtx_shader_name, const char * program_name); - std::unique_ptr mShader; -}; - -class FPresentShader : public FPresentShaderBase -{ -public: - void Bind(IRenderQueue *q) override; - -}; - -#endif diff --git a/src/rendering/hwrenderer/postprocessing/hw_shaderprogram.h b/src/rendering/hwrenderer/postprocessing/hw_shaderprogram.h deleted file mode 100644 index c5808e4035..0000000000 --- a/src/rendering/hwrenderer/postprocessing/hw_shaderprogram.h +++ /dev/null @@ -1,33 +0,0 @@ - -#pragma once - -#include - -#include "hwrenderer/data/shaderuniforms.h" - -class IRenderQueue; - -class IShaderProgram -{ -public: - IShaderProgram() {} - virtual ~IShaderProgram() {} - - enum ShaderType - { - Vertex, - Fragment, - NumShaderTypes - }; - - virtual void Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion) = 0; - virtual void Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion) = 0; - virtual void Link(const char *name) = 0; - virtual void SetUniformBufferLocation(int index, const char *name) = 0; - - virtual void Bind(IRenderQueue *q) = 0; // the parameter here is just a preparation for Vulkan - -private: - IShaderProgram(const IShaderProgram &) = delete; - IShaderProgram &operator=(const IShaderProgram &) = delete; -}; diff --git a/src/rendering/hwrenderer/postprocessing/hw_shadowmapshader.cpp b/src/rendering/hwrenderer/postprocessing/hw_shadowmapshader.cpp deleted file mode 100644 index 199993d466..0000000000 --- a/src/rendering/hwrenderer/postprocessing/hw_shadowmapshader.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// -//--------------------------------------------------------------------------- -// -// Copyright(C) 2016 Magnus Norddahl -// All rights reserved. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with this program. If not, see http://www.gnu.org/licenses/ -// -//-------------------------------------------------------------------------- -// - -#include "files.h" -#include "hw_shadowmapshader.h" - -void FShadowMapShader::Bind(IRenderQueue *q) -{ - if (!mShader) - { - FString prolog = Uniforms.CreateDeclaration("Uniforms", ShadowMapUniforms::Desc()); - - mShader.reset(screen->CreateShaderProgram()); - mShader->Compile(IShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 430); - mShader->Compile(IShaderProgram::Fragment, "shaders/glsl/shadowmap.fp", prolog, 430); - mShader->Link("shaders/glsl/shadowmap"); - mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); - Uniforms.Init(); - } - mShader->Bind(q); -} diff --git a/src/rendering/hwrenderer/postprocessing/hw_shadowmapshader.h b/src/rendering/hwrenderer/postprocessing/hw_shadowmapshader.h deleted file mode 100644 index 2b1b3204a7..0000000000 --- a/src/rendering/hwrenderer/postprocessing/hw_shadowmapshader.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __GL_SHADOWMAPSHADER_H -#define __GL_SHADOWMAPSHADER_H - -#include "hwrenderer/postprocessing/hw_shaderprogram.h" -#include "hwrenderer/postprocessing/hw_postprocess.h" - -class FShadowMapShader -{ -public: - void Bind(IRenderQueue *q); - - ShaderUniforms Uniforms; - -private: - std::unique_ptr mShader; -}; - -#endif \ No newline at end of file diff --git a/src/rendering/vulkan/renderer/vk_postprocess.cpp b/src/rendering/vulkan/renderer/vk_postprocess.cpp index 5fe545ac83..5d037da696 100644 --- a/src/rendering/vulkan/renderer/vk_postprocess.cpp +++ b/src/rendering/vulkan/renderer/vk_postprocess.cpp @@ -8,7 +8,6 @@ #include "vulkan/system/vk_swapchain.h" #include "vulkan/renderer/vk_renderstate.h" #include "hwrenderer/utility/hw_cvars.h" -#include "hwrenderer/postprocessing/hw_presentshader.h" #include "hwrenderer/postprocessing/hw_postprocess.h" #include "hwrenderer/postprocessing/hw_postprocess_cvars.h" #include "hwrenderer/utility/hw_vrmodes.h" diff --git a/src/rendering/vulkan/system/vk_framebuffer.cpp b/src/rendering/vulkan/system/vk_framebuffer.cpp index 698cf21c89..aeda4c1aab 100644 --- a/src/rendering/vulkan/system/vk_framebuffer.cpp +++ b/src/rendering/vulkan/system/vk_framebuffer.cpp @@ -498,12 +498,6 @@ FModelRenderer *VulkanFrameBuffer::CreateModelRenderer(int mli) return new FGLModelRenderer(nullptr, *GetRenderState(), mli); } -IShaderProgram *VulkanFrameBuffer::CreateShaderProgram() -{ - I_FatalError("VulkanFrameBuffer::CreateShaderProgram not implemented\n"); - return nullptr; -} - IVertexBuffer *VulkanFrameBuffer::CreateVertexBuffer() { return new VKVertexBuffer(); diff --git a/src/rendering/vulkan/system/vk_framebuffer.h b/src/rendering/vulkan/system/vk_framebuffer.h index fe9a7c5cb1..07f84cbe02 100644 --- a/src/rendering/vulkan/system/vk_framebuffer.h +++ b/src/rendering/vulkan/system/vk_framebuffer.h @@ -68,7 +68,6 @@ public: IHardwareTexture *CreateHardwareTexture() override; FModelRenderer *CreateModelRenderer(int mli) override; - IShaderProgram *CreateShaderProgram() override; IVertexBuffer *CreateVertexBuffer() override; IIndexBuffer *CreateIndexBuffer() override; IDataBuffer *CreateDataBuffer(int bindingpoint, bool ssbo) override; diff --git a/src/v_video.h b/src/v_video.h index 06295b1a82..6fca24afd3 100644 --- a/src/v_video.h +++ b/src/v_video.h @@ -47,7 +47,6 @@ #include "hwrenderer/dynlights/hw_shadowmap.h" struct sector_t; -class IShaderProgram; class FTexture; struct FPortalSceneState; class FSkyVertexBuffer; @@ -431,7 +430,6 @@ public: virtual void BlurScene(float amount) {} // Interface to hardware rendering resources - virtual IShaderProgram *CreateShaderProgram() { return nullptr; } virtual IVertexBuffer *CreateVertexBuffer() { return nullptr; } virtual IIndexBuffer *CreateIndexBuffer() { return nullptr; } virtual IDataBuffer *CreateDataBuffer(int bindingpoint, bool ssbo) { return nullptr; }