From 118bc78fe33c4e483d5d8f58a5c4c75213b19e43 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 29 Oct 2018 13:56:17 +0100 Subject: [PATCH] - moved the entire OpenGL backend into a separate namespace. --- src/gl/renderer/gl_postprocess.cpp | 5 +++++ src/gl/renderer/gl_postprocessstate.cpp | 5 +++++ src/gl/renderer/gl_postprocessstate.h | 4 ++++ src/gl/renderer/gl_renderbuffers.cpp | 5 +++++ src/gl/renderer/gl_renderbuffers.h | 5 +++++ src/gl/renderer/gl_renderer.cpp | 4 ++++ src/gl/renderer/gl_renderer.h | 12 +++++++++--- src/gl/renderer/gl_renderstate.cpp | 4 ++++ src/gl/renderer/gl_renderstate.h | 5 +++++ src/gl/renderer/gl_scene.cpp | 4 ++++ src/gl/renderer/gl_stereo3d.cpp | 5 +++++ src/gl/shaders/gl_postprocessshader.cpp | 6 ++++++ src/gl/shaders/gl_postprocessshaderinstance.h | 7 +++++++ src/gl/shaders/gl_shader.cpp | 9 +++++++-- src/gl/shaders/gl_shader.h | 6 +++++- src/gl/shaders/gl_shaderprogram.cpp | 5 +++++ src/gl/shaders/gl_shaderprogram.h | 5 +++++ src/gl/system/gl_buffers.cpp | 5 +++++ src/gl/system/gl_buffers.h | 4 ++++ src/gl/system/gl_debug.cpp | 7 ++++++- src/gl/system/gl_debug.h | 4 ++++ src/gl/system/gl_framebuffer.cpp | 12 +++++++----- src/gl/system/gl_framebuffer.h | 5 ++++- src/gl/textures/gl_hwtexture.cpp | 4 ++++ src/gl/textures/gl_hwtexture.h | 4 ++++ src/gl/textures/gl_samplers.cpp | 4 ++++ src/gl/textures/gl_samplers.h | 5 ++++- src/r_data/gldefs.cpp | 2 +- src/r_data/models/models.cpp | 2 +- src/win32/gl_sysfb.cpp | 3 --- src/win32/win32glvideo.cpp | 2 +- 31 files changed, 139 insertions(+), 20 deletions(-) diff --git a/src/gl/renderer/gl_postprocess.cpp b/src/gl/renderer/gl_postprocess.cpp index ea0cfb1ca0..933af36a30 100644 --- a/src/gl/renderer/gl_postprocess.cpp +++ b/src/gl/renderer/gl_postprocess.cpp @@ -50,6 +50,10 @@ extern bool vid_hdr_active; CVAR(Int, gl_dither_bpc, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) +namespace OpenGLRenderer +{ + + void FGLRenderer::RenderScreenQuad() { screen->mVertexData->Bind(gl_RenderState); @@ -287,3 +291,4 @@ void FGLRenderer::ClearBorders() glDisable(GL_SCISSOR_TEST); } +} \ No newline at end of file diff --git a/src/gl/renderer/gl_postprocessstate.cpp b/src/gl/renderer/gl_postprocessstate.cpp index f213491827..e74041f9e9 100644 --- a/src/gl/renderer/gl_postprocessstate.cpp +++ b/src/gl/renderer/gl_postprocessstate.cpp @@ -30,6 +30,9 @@ #include "gl_load/gl_interface.h" #include "gl/renderer/gl_postprocessstate.h" +namespace OpenGLRenderer +{ + //----------------------------------------------------------------------------- // // Saves state modified by post processing shaders @@ -133,3 +136,5 @@ FGLPostProcessState::~FGLPostProcessState() glActiveTexture(activeTex); } + +} \ No newline at end of file diff --git a/src/gl/renderer/gl_postprocessstate.h b/src/gl/renderer/gl_postprocessstate.h index 6f2b39a033..7d41f65719 100644 --- a/src/gl/renderer/gl_postprocessstate.h +++ b/src/gl/renderer/gl_postprocessstate.h @@ -7,6 +7,9 @@ #include "c_cvars.h" #include "r_defs.h" +namespace OpenGLRenderer +{ + class FGLPostProcessState { public: @@ -35,4 +38,5 @@ private: GLint blendDestAlpha; }; +} #endif diff --git a/src/gl/renderer/gl_renderbuffers.cpp b/src/gl/renderer/gl_renderbuffers.cpp index 4946afca1f..d5c78f1160 100644 --- a/src/gl/renderer/gl_renderbuffers.cpp +++ b/src/gl/renderer/gl_renderbuffers.cpp @@ -38,6 +38,9 @@ CVAR(Int, gl_multisample, 1, CVAR_ARCHIVE|CVAR_GLOBALCONFIG); +namespace OpenGLRenderer +{ + //========================================================================== // // Initialize render buffers and textures used in rendering passes @@ -986,3 +989,5 @@ void FGLRenderBuffers::RenderEffect(const FString &name) FGLDebug::PopGroup(); } + +} \ No newline at end of file diff --git a/src/gl/renderer/gl_renderbuffers.h b/src/gl/renderer/gl_renderbuffers.h index a6b1488034..10c4e37ed3 100644 --- a/src/gl/renderer/gl_renderbuffers.h +++ b/src/gl/renderer/gl_renderbuffers.h @@ -4,6 +4,9 @@ #include "gl/shaders/gl_shader.h" #include "hwrenderer/postprocessing/hw_postprocess.h" +namespace OpenGLRenderer +{ + class PPGLTexture { public: @@ -168,3 +171,5 @@ private: static bool FailedCreate; }; + +} \ No newline at end of file diff --git a/src/gl/renderer/gl_renderer.cpp b/src/gl/renderer/gl_renderer.cpp index 64fdccf679..bc6fbe5151 100644 --- a/src/gl/renderer/gl_renderer.cpp +++ b/src/gl/renderer/gl_renderer.cpp @@ -66,6 +66,9 @@ EXTERN_CVAR(Bool, cl_capfps) extern bool NoInterpolateView; +namespace OpenGLRenderer +{ + //=========================================================================== // // Renderer interface @@ -378,3 +381,4 @@ void FGLRenderer::BeginFrame() mSaveBuffers->Setup(SAVEPICWIDTH, SAVEPICHEIGHT, SAVEPICWIDTH, SAVEPICHEIGHT); } +} \ No newline at end of file diff --git a/src/gl/renderer/gl_renderer.h b/src/gl/renderer/gl_renderer.h index b383537c6d..67d4fba283 100644 --- a/src/gl/renderer/gl_renderer.h +++ b/src/gl/renderer/gl_renderer.h @@ -6,6 +6,7 @@ #include "vectors.h" #include "r_renderer.h" #include "r_data/matrix.h" +#include "gl/renderer/gl_renderbuffers.h" #include "hwrenderer/scene/hw_portal.h" #include "hwrenderer/dynlights/hw_shadowmap.h" #include @@ -18,11 +19,9 @@ struct particle_t; class FCanvasTexture; class FFlatVertexBuffer; class FSkyVertexBuffer; -class OpenGLFrameBuffer; class FShaderManager; class HWPortal; class FLightBuffer; -class FSamplerManager; class DPSprite; class FGLRenderBuffers; class FPresentShader; @@ -32,11 +31,17 @@ class FPresent3DRowShader; class FGL2DDrawer; class FHardwareTexture; class FShadowMapShader; -class FCustomPostProcessShaders; 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 FGLRenderer @@ -129,4 +134,5 @@ struct TexFilter_s extern FGLRenderer *GLRenderer; +} #endif diff --git a/src/gl/renderer/gl_renderstate.cpp b/src/gl/renderer/gl_renderstate.cpp index 0ab59de0ec..9a3ea12e62 100644 --- a/src/gl/renderer/gl_renderstate.cpp +++ b/src/gl/renderer/gl_renderstate.cpp @@ -42,6 +42,9 @@ #include "hwrenderer/utility/hw_clock.h" #include "hwrenderer/data/hw_viewpointbuffer.h" +namespace OpenGLRenderer +{ + FGLRenderState gl_RenderState; static VSMatrix identityMatrix(1); @@ -575,3 +578,4 @@ bool FGLRenderState::SetDepthClamp(bool on) return res; } +} \ No newline at end of file diff --git a/src/gl/renderer/gl_renderstate.h b/src/gl/renderer/gl_renderstate.h index 6a3ec724c6..7f6ac8af1b 100644 --- a/src/gl/renderer/gl_renderstate.h +++ b/src/gl/renderer/gl_renderstate.h @@ -34,6 +34,9 @@ #include "r_data/r_translate.h" #include "g_levellocals.h" +namespace OpenGLRenderer +{ + class FShader; struct GLSectorPlane; extern TArray gl_MatrixStack; @@ -167,4 +170,6 @@ public: extern FGLRenderState gl_RenderState; +} + #endif diff --git a/src/gl/renderer/gl_scene.cpp b/src/gl/renderer/gl_scene.cpp index dcf83fe29f..5d54b57c9c 100644 --- a/src/gl/renderer/gl_scene.cpp +++ b/src/gl/renderer/gl_scene.cpp @@ -73,6 +73,9 @@ EXTERN_CVAR (Float, r_visibility) EXTERN_CVAR (Bool, r_drawvoxels) +namespace OpenGLRenderer +{ + //----------------------------------------------------------------------------- // // gl_drawscene - this function renders the scene from the current @@ -215,3 +218,4 @@ sector_t * FGLRenderer::RenderViewpoint (FRenderViewpoint &mainvp, AActor * came return mainvp.sector; } +} \ No newline at end of file diff --git a/src/gl/renderer/gl_stereo3d.cpp b/src/gl/renderer/gl_stereo3d.cpp index 5530e93934..6baaa801f6 100644 --- a/src/gl/renderer/gl_stereo3d.cpp +++ b/src/gl/renderer/gl_stereo3d.cpp @@ -31,6 +31,7 @@ #include "hwrenderer/utility/hw_vrmodes.h" #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" @@ -41,6 +42,9 @@ EXTERN_CVAR(Float, vid_contrast) EXTERN_CVAR(Int, gl_satformula) EXTERN_CVAR(Int, gl_dither_bpc) +namespace OpenGLRenderer +{ + //========================================================================== // // @@ -364,3 +368,4 @@ void FGLRenderer::PresentStereo() } } +} \ No newline at end of file diff --git a/src/gl/shaders/gl_postprocessshader.cpp b/src/gl/shaders/gl_postprocessshader.cpp index d47bd095db..9c33cfdc10 100644 --- a/src/gl/shaders/gl_postprocessshader.cpp +++ b/src/gl/shaders/gl_postprocessshader.cpp @@ -34,6 +34,10 @@ CVAR(Bool, gl_custompost, true, 0) +namespace OpenGLRenderer +{ + + FCustomPostProcessShaders::FCustomPostProcessShaders() { for (unsigned int i = 0; i < PostProcessShaders.Size(); i++) @@ -242,3 +246,5 @@ void PostProcessShaderInstance::BindTextures() } } } + +} \ No newline at end of file diff --git a/src/gl/shaders/gl_postprocessshaderinstance.h b/src/gl/shaders/gl_postprocessshaderinstance.h index 75b3e3e93f..02613a3736 100644 --- a/src/gl/shaders/gl_postprocessshaderinstance.h +++ b/src/gl/shaders/gl_postprocessshaderinstance.h @@ -5,6 +5,10 @@ struct PostProcessShader; +namespace OpenGLRenderer +{ + + class PostProcessShaderInstance { public: @@ -40,3 +44,6 @@ private: FCustomPostProcessShaders(const FCustomPostProcessShaders &) = delete; FCustomPostProcessShaders &operator=(const FCustomPostProcessShaders &) = delete; }; + + +} \ No newline at end of file diff --git a/src/gl/shaders/gl_shader.cpp b/src/gl/shaders/gl_shader.cpp index a2e6279892..a45b4cf50d 100644 --- a/src/gl/shaders/gl_shader.cpp +++ b/src/gl/shaders/gl_shader.cpp @@ -43,6 +43,12 @@ #include "gl/renderer/gl_renderer.h" #include "gl/shaders/gl_shader.h" +extern TArray usershaders; + +namespace OpenGLRenderer +{ + + bool FShader::Load(const char * name, const char * vert_prog_lump, const char * frag_prog_lump, const char * proc_prog_lump, const char * light_fragprog, const char * defines) { static char buffer[10000]; @@ -465,8 +471,6 @@ static const FDefaultShader defaultshaders[]= {nullptr,nullptr,nullptr,nullptr} }; -TArray usershaders; - struct FEffectShader { const char *ShaderName; @@ -667,3 +671,4 @@ void gl_DestroyUserShaders() // todo } +} \ No newline at end of file diff --git a/src/gl/shaders/gl_shader.h b/src/gl/shaders/gl_shader.h index 7e6b814503..732b5eaafa 100644 --- a/src/gl/shaders/gl_shader.h +++ b/src/gl/shaders/gl_shader.h @@ -28,9 +28,12 @@ extern bool gl_shaderactive; -class FShaderCollection; struct HWViewpointUniforms; +namespace OpenGLRenderer +{ + class FShaderCollection; + //========================================================================== // // @@ -341,5 +344,6 @@ public: } }; +} #endif diff --git a/src/gl/shaders/gl_shaderprogram.cpp b/src/gl/shaders/gl_shaderprogram.cpp index 858e24375e..c402bf77bd 100644 --- a/src/gl/shaders/gl_shaderprogram.cpp +++ b/src/gl/shaders/gl_shaderprogram.cpp @@ -34,6 +34,9 @@ #include "hwrenderer/utility/hw_shaderpatcher.h" #include "w_wad.h" +namespace OpenGLRenderer +{ + FShaderProgram::FShaderProgram() { for (int i = 0; i < NumShaderTypes; i++) @@ -249,3 +252,5 @@ FString FShaderProgram::PatchShader(ShaderType type, const FString &code, const return patchedCode; } + +} \ No newline at end of file diff --git a/src/gl/shaders/gl_shaderprogram.h b/src/gl/shaders/gl_shaderprogram.h index fb5a117ca3..f9853d5d38 100644 --- a/src/gl/shaders/gl_shaderprogram.h +++ b/src/gl/shaders/gl_shaderprogram.h @@ -5,6 +5,9 @@ #include "gl_shader.h" #include "hwrenderer/postprocessing/hw_shaderprogram.h" +namespace OpenGLRenderer +{ + class FShaderProgram : public IShaderProgram { public: @@ -37,3 +40,5 @@ private: GLuint mShaders[NumShaderTypes]; TArray> samplerstobind; }; + +} \ No newline at end of file diff --git a/src/gl/system/gl_buffers.cpp b/src/gl/system/gl_buffers.cpp index 6d313643d9..48e483985a 100644 --- a/src/gl/system/gl_buffers.cpp +++ b/src/gl/system/gl_buffers.cpp @@ -28,6 +28,9 @@ #include "gl_buffers.h" #include "gl/renderer/gl_renderstate.h" +namespace OpenGLRenderer +{ + //========================================================================== // // basic buffer implementation @@ -211,3 +214,5 @@ void GLDataBuffer::BindBase() { glBindBufferBase(mUseType, mBindingPoint, mBufferId); } + +} \ No newline at end of file diff --git a/src/gl/system/gl_buffers.h b/src/gl/system/gl_buffers.h index 7a3427f5f1..f2d636cf1f 100644 --- a/src/gl/system/gl_buffers.h +++ b/src/gl/system/gl_buffers.h @@ -8,6 +8,9 @@ #pragma warning(disable:4250) #endif +namespace OpenGLRenderer +{ + class GLBuffer : virtual public IBuffer { protected: @@ -66,3 +69,4 @@ public: void BindBase() override; }; +} \ No newline at end of file diff --git a/src/gl/system/gl_debug.cpp b/src/gl/system/gl_debug.cpp index 920550c9b5..56dcf37277 100644 --- a/src/gl/system/gl_debug.cpp +++ b/src/gl/system/gl_debug.cpp @@ -35,7 +35,7 @@ CUSTOM_CVAR(Int, gl_debug_level, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL) { - if (!FGLDebug::HasDebugApi()) + if (!OpenGLRenderer::FGLDebug::HasDebugApi()) { Printf("No OpenGL debug support detected.\n"); } @@ -43,6 +43,9 @@ CUSTOM_CVAR(Int, gl_debug_level, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOIN CVAR(Bool, gl_debug_breakpoint, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG); +namespace OpenGLRenderer +{ + namespace { bool gpuStatActive = false; @@ -368,3 +371,5 @@ FString FGLDebug::SeverityToString(GLenum severity) } return s; } + +} \ No newline at end of file diff --git a/src/gl/system/gl_debug.h b/src/gl/system/gl_debug.h index 191e027f50..a234a0879a 100644 --- a/src/gl/system/gl_debug.h +++ b/src/gl/system/gl_debug.h @@ -7,6 +7,9 @@ #include "r_defs.h" #include "v_video.h" +namespace OpenGLRenderer +{ + class FGLDebug { public: @@ -38,4 +41,5 @@ private: bool mBreakpointMode = false; }; +} #endif diff --git a/src/gl/system/gl_framebuffer.cpp b/src/gl/system/gl_framebuffer.cpp index bf073a9234..acf32492ed 100644 --- a/src/gl/system/gl_framebuffer.cpp +++ b/src/gl/system/gl_framebuffer.cpp @@ -50,8 +50,8 @@ #include "hwrenderer/data/flatvertices.h" EXTERN_CVAR (Bool, vid_vsync) - -FGLRenderer *GLRenderer; +EXTERN_CVAR(Bool, r_drawvoxels) +EXTERN_CVAR(Int, gl_tonemap) void gl_LoadExtensions(); void gl_PrintStartupLog(); @@ -64,6 +64,10 @@ CUSTOM_CVAR(Int, vid_hwgamma, 2, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITC if (screen != nullptr) screen->SetGamma(); } +namespace OpenGLRenderer +{ + FGLRenderer *GLRenderer; + //========================================================================== // // @@ -235,9 +239,6 @@ sector_t *OpenGLFrameBuffer::RenderView(player_t *player) // //=========================================================================== -EXTERN_CVAR(Bool, r_drawvoxels) -EXTERN_CVAR(Int, gl_tonemap) - uint32_t OpenGLFrameBuffer::GetCaps() { if (!V_IsHardwareRenderer()) @@ -537,3 +538,4 @@ FTexture *OpenGLFrameBuffer::WipeEndScreen() return tex; } +} \ No newline at end of file diff --git a/src/gl/system/gl_framebuffer.h b/src/gl/system/gl_framebuffer.h index 582e0ed700..c2a26650fb 100644 --- a/src/gl/system/gl_framebuffer.h +++ b/src/gl/system/gl_framebuffer.h @@ -5,8 +5,10 @@ #include +namespace OpenGLRenderer +{ + class FHardwareTexture; -class FSimpleVertexBuffer; class FGLDebug; class OpenGLFrameBuffer : public SystemGLFrameBuffer @@ -66,5 +68,6 @@ private: int camtexcount = 0; }; +} #endif //__GL_FRAMEBUFFER diff --git a/src/gl/textures/gl_hwtexture.cpp b/src/gl/textures/gl_hwtexture.cpp index 363ef87fc5..568c05be1d 100644 --- a/src/gl/textures/gl_hwtexture.cpp +++ b/src/gl/textures/gl_hwtexture.cpp @@ -39,6 +39,9 @@ #include "gl/renderer/gl_renderstate.h" #include "gl/textures/gl_samplers.h" +namespace OpenGLRenderer +{ + TexFilter_s TexFilter[]={ {GL_NEAREST, GL_NEAREST, false}, @@ -464,3 +467,4 @@ bool FHardwareTexture::BindOrCreate(FTexture *tex, int texunit, int clampmode, i return true; } +} \ No newline at end of file diff --git a/src/gl/textures/gl_hwtexture.h b/src/gl/textures/gl_hwtexture.h index a1e9f8740e..6c693a9983 100644 --- a/src/gl/textures/gl_hwtexture.h +++ b/src/gl/textures/gl_hwtexture.h @@ -16,6 +16,9 @@ class FCanvasTexture; class AActor; +namespace OpenGLRenderer +{ + // For error catching while changing parameters. enum EInvalid @@ -90,4 +93,5 @@ public: void CleanUnused(SpriteHits &usedtranslations); }; +} #endif diff --git a/src/gl/textures/gl_samplers.cpp b/src/gl/textures/gl_samplers.cpp index ed001ada9d..e5fd902818 100644 --- a/src/gl/textures/gl_samplers.cpp +++ b/src/gl/textures/gl_samplers.cpp @@ -30,6 +30,9 @@ #include "gl_samplers.h" #include "hwrenderer/textures/hw_material.h" +namespace OpenGLRenderer +{ + extern TexFilter_s TexFilter[]; @@ -98,3 +101,4 @@ void FSamplerManager::SetTextureFilterMode() } +} \ No newline at end of file diff --git a/src/gl/textures/gl_samplers.h b/src/gl/textures/gl_samplers.h index 0783e5aefe..93c8c74191 100644 --- a/src/gl/textures/gl_samplers.h +++ b/src/gl/textures/gl_samplers.h @@ -3,6 +3,9 @@ #include "gl_hwtexture.h" +namespace OpenGLRenderer +{ + class FSamplerManager { // We need 6 different samplers: 4 for the different clamping modes, @@ -22,6 +25,6 @@ public: }; - +} #endif diff --git a/src/r_data/gldefs.cpp b/src/r_data/gldefs.cpp index a25eb0c940..62f6f545d3 100644 --- a/src/r_data/gldefs.cpp +++ b/src/r_data/gldefs.cpp @@ -51,7 +51,7 @@ void AddLightDefaults(FLightDefaults *defaults, double attnFactor); void AddLightAssociation(const char *actor, const char *frame, const char *light); void InitializeActorLights(TArray &LightAssociations); -extern TArray usershaders; +TArray usershaders; extern TDeletingArray LightDefaults; diff --git a/src/r_data/models/models.cpp b/src/r_data/models/models.cpp index 69125991c7..95d1d53104 100644 --- a/src/r_data/models/models.cpp +++ b/src/r_data/models/models.cpp @@ -48,7 +48,7 @@ #endif CVAR(Bool, gl_interpolate_model_frames, true, CVAR_ARCHIVE) -EXTERN_CVAR(Bool, r_drawvoxels) +EXTERN_CVAR (Bool, r_drawvoxels) extern TDeletingArray Voxels; extern TDeletingArray VoxelDefs; diff --git a/src/win32/gl_sysfb.cpp b/src/win32/gl_sysfb.cpp index f966454e3a..bc704bd69f 100644 --- a/src/win32/gl_sysfb.cpp +++ b/src/win32/gl_sysfb.cpp @@ -52,9 +52,6 @@ #include "doomerrors.h" #include "win32glvideo.h" -#include "gl/renderer/gl_renderer.h" -#include "gl/system/gl_framebuffer.h" - extern HWND Window; PFNWGLSWAPINTERVALEXTPROC myWglSwapIntervalExtProc; diff --git a/src/win32/win32glvideo.cpp b/src/win32/win32glvideo.cpp index c3650a8079..2fb24b4640 100644 --- a/src/win32/win32glvideo.cpp +++ b/src/win32/win32glvideo.cpp @@ -90,7 +90,7 @@ DFrameBuffer *Win32GLVideo::CreateFrameBuffer() { SystemGLFrameBuffer *fb; - fb = new OpenGLFrameBuffer(m_hMonitor, fullscreen); + fb = new OpenGLRenderer::OpenGLFrameBuffer(m_hMonitor, fullscreen); return fb; }