- use a uniform buffer for per-scene data like rotation matrices.
This commit is contained in:
parent
4571aa52f0
commit
5e39890118
14 changed files with 278 additions and 167 deletions
|
|
@ -57,6 +57,7 @@
|
|||
#include "gl/shaders/gl_postprocessshaderinstance.h"
|
||||
#include "gl/textures/gl_samplers.h"
|
||||
#include "gl/dynlights/gl_lightbuffer.h"
|
||||
#include "gl/data/gl_viewpointbuffer.h"
|
||||
#include "r_videoscale.h"
|
||||
|
||||
EXTERN_CVAR(Int, screenblocks)
|
||||
|
|
@ -79,21 +80,6 @@ extern bool NoInterpolateView;
|
|||
FGLRenderer::FGLRenderer(OpenGLFrameBuffer *fb)
|
||||
{
|
||||
framebuffer = fb;
|
||||
mMirrorCount = 0;
|
||||
mPlaneMirrorCount = 0;
|
||||
mVBO = nullptr;
|
||||
mSkyVBO = nullptr;
|
||||
mShaderManager = nullptr;
|
||||
mLights = nullptr;
|
||||
mBuffers = nullptr;
|
||||
mScreenBuffers = nullptr;
|
||||
mSaveBuffers = nullptr;
|
||||
mPresentShader = nullptr;
|
||||
mPresent3dCheckerShader = nullptr;
|
||||
mPresent3dColumnShader = nullptr;
|
||||
mPresent3dRowShader = nullptr;
|
||||
mShadowMapShader = nullptr;
|
||||
mCustomPostProcessShaders = nullptr;
|
||||
}
|
||||
|
||||
void FGLRenderer::Initialize(int width, int height)
|
||||
|
|
@ -118,6 +104,7 @@ void FGLRenderer::Initialize(int width, int height)
|
|||
mVBO = new FFlatVertexBuffer(width, height);
|
||||
mSkyVBO = new FSkyVertexBuffer;
|
||||
mLights = new FLightBuffer();
|
||||
mViewpoints = new GLViewpointBuffer;
|
||||
gl_RenderState.SetVertexBuffer(mVBO);
|
||||
mFBID = 0;
|
||||
mOldFBID = 0;
|
||||
|
|
@ -132,11 +119,12 @@ FGLRenderer::~FGLRenderer()
|
|||
FlushModels();
|
||||
AActor::DeleteAllAttachedLights();
|
||||
FMaterial::FlushAll();
|
||||
if (mShaderManager != NULL) delete mShaderManager;
|
||||
if (mSamplerManager != NULL) delete mSamplerManager;
|
||||
if (mVBO != NULL) delete mVBO;
|
||||
if (mSkyVBO != NULL) delete mSkyVBO;
|
||||
if (mLights != NULL) delete mLights;
|
||||
if (mShaderManager != nullptr) delete mShaderManager;
|
||||
if (mSamplerManager != nullptr) delete mSamplerManager;
|
||||
if (mVBO != nullptr) delete mVBO;
|
||||
if (mSkyVBO != nullptr) delete mSkyVBO;
|
||||
if (mLights != nullptr) delete mLights;
|
||||
if (mViewpoints != nullptr) delete mViewpoints;
|
||||
if (mFBID != 0) glDeleteFramebuffers(1, &mFBID);
|
||||
if (mVAOID != 0)
|
||||
{
|
||||
|
|
@ -427,12 +415,7 @@ void FGLRenderer::Draw2D(F2DDrawer *drawer)
|
|||
mBuffers->BindCurrentFB();
|
||||
const auto &mScreenViewport = screen->mScreenViewport;
|
||||
glViewport(mScreenViewport.left, mScreenViewport.top, mScreenViewport.width, mScreenViewport.height);
|
||||
|
||||
HWViewpointUniforms matrices;
|
||||
matrices.SetDefaults();
|
||||
matrices.mProjectionMatrix.ortho(0, screen->GetWidth(), screen->GetHeight(), 0, -1.0f, 1.0f);
|
||||
matrices.CalcDependencies();
|
||||
GLRenderer->mShaderManager->ApplyMatrices(&matrices, NORMAL_PASS);
|
||||
GLRenderer->mViewpoints->Set2D(screen->GetWidth(), screen->GetHeight());
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue