Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
- made the static portal state a struct inside the Renderer object
  • Loading branch information
coelckers committed Jun 23, 2018
1 parent 009acf3 commit 282fdac
Show file tree
Hide file tree
Showing 16 changed files with 420 additions and 430 deletions.
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Expand Up @@ -841,6 +841,7 @@ set( FASTMATH_SOURCES
hwrenderer/scene/hw_drawlist.cpp
hwrenderer/scene/hw_clipper.cpp
hwrenderer/scene/hw_flats.cpp
hwrenderer/scene/hw_portal.cpp
hwrenderer/scene/hw_renderhacks.cpp
hwrenderer/scene/hw_sky.cpp
hwrenderer/scene/hw_sprites.cpp
Expand Down
4 changes: 2 additions & 2 deletions src/gl/models/gl_models.cpp
Expand Up @@ -65,7 +65,7 @@ void FGLModelRenderer::BeginDrawModel(AActor *actor, FSpriteModelFrame *smf, con
if (!(actor->RenderStyle == LegacyRenderStyles[STYLE_Normal]) && !(smf->flags & MDL_DONTCULLBACKFACES))
{
glEnable(GL_CULL_FACE);
glFrontFace((mirrored ^ GLPortal::isMirrored()) ? GL_CCW : GL_CW);
glFrontFace((mirrored ^ GLRenderer->mPortalState.isMirrored()) ? GL_CCW : GL_CW);
}

gl_RenderState.mModelMatrix = objectToWorldMatrix;
Expand All @@ -91,7 +91,7 @@ void FGLModelRenderer::BeginDrawHUDModel(AActor *actor, const VSMatrix &objectTo
if (!(actor->RenderStyle == LegacyRenderStyles[STYLE_Normal]))
{
glEnable(GL_CULL_FACE);
glFrontFace((mirrored ^ GLPortal::isMirrored()) ? GL_CW : GL_CCW);
glFrontFace((mirrored ^ GLRenderer->mPortalState.isMirrored()) ? GL_CW : GL_CCW);
}

gl_RenderState.mModelMatrix = objectToWorldMatrix;
Expand Down
2 changes: 1 addition & 1 deletion src/gl/renderer/gl_lightdata.cpp
Expand Up @@ -173,7 +173,7 @@ void gl_SetFog(int lightlevel, int rellight, bool fullbright, const FColormap *c
}

// Make fog a little denser when inside a skybox
if (GLPortal::inskybox) fogdensity+=fogdensity/2;
if (GLRenderer->mPortalState.inskybox) fogdensity+=fogdensity/2;


// no fog in enhanced vision modes!
Expand Down
8 changes: 4 additions & 4 deletions src/gl/renderer/gl_renderer.cpp
Expand Up @@ -150,6 +150,8 @@ void FGLRenderer::Initialize(int width, int height)
mCustomPostProcessShaders = new FCustomPostProcessShaders();

// needed for the core profile, because someone decided it was a good idea to remove the default VAO.
glGenQueries(1, &PortalQueryObject);

glGenVertexArrays(1, &mVAOID);
glBindVertexArray(mVAOID);
FGLDebug::LabelObject(GL_VERTEX_ARRAY, mVAOID, "FGLRenderer.mVAOID");
Expand All @@ -164,14 +166,10 @@ void FGLRenderer::Initialize(int width, int height)
SetupLevel();
mShaderManager = new FShaderManager;
mSamplerManager = new FSamplerManager;

GLPortal::Initialize();
}

FGLRenderer::~FGLRenderer()
{
GLPortal::Shutdown();

FlushModels();
AActor::DeleteAllAttachedLights();
FMaterial::FlushAll();
Expand All @@ -186,6 +184,8 @@ FGLRenderer::~FGLRenderer()
glBindVertexArray(0);
glDeleteVertexArrays(1, &mVAOID);
}
if (PortalQueryObject != 0) glDeleteQueries(1, &PortalQueryObject);

if (swdrawer) delete swdrawer;
if (mBuffers) delete mBuffers;
if (mPresentShader) delete mPresentShader;
Expand Down
5 changes: 5 additions & 0 deletions src/gl/renderer/gl_renderer.h
Expand Up @@ -6,6 +6,7 @@
#include "vectors.h"
#include "r_renderer.h"
#include "r_data/matrix.h"
#include "hwrenderer/scene/hw_portal.h"
#include "gl/dynlights/gl_shadowmap.h"
#include <functional>

Expand Down Expand Up @@ -73,6 +74,8 @@ class FGLRenderer
FSamplerManager *mSamplerManager;
unsigned int mFBID;
unsigned int mVAOID;
unsigned int PortalQueryObject;

int mOldFBID;

FGLRenderBuffers *mBuffers;
Expand Down Expand Up @@ -110,6 +113,8 @@ class FGLRenderer
FLightBuffer *mLights;
SWSceneDrawer *swdrawer = nullptr;

FPortalSceneState mPortalState;

bool buffersActive = false;

float mSceneClearColor[3];
Expand Down
4 changes: 2 additions & 2 deletions src/gl/scene/gl_drawinfo.cpp
Expand Up @@ -265,7 +265,7 @@ FDrawInfo *FDrawInfo::EndDrawInfo()

void FDrawInfo::SetupFloodStencil(wallseg * ws)
{
int recursion = GLPortal::GetRecursion();
int recursion = GLRenderer->mPortalState.GetRecursion();

// Create stencil
glStencilFunc(GL_EQUAL, recursion, ~0); // create stencil
Expand Down Expand Up @@ -297,7 +297,7 @@ void FDrawInfo::SetupFloodStencil(wallseg * ws)

void FDrawInfo::ClearFloodStencil(wallseg * ws)
{
int recursion = GLPortal::GetRecursion();
int recursion = GLRenderer->mPortalState.GetRecursion();

glStencilOp(GL_KEEP,GL_KEEP,GL_DECR);
gl_RenderState.EnableTexture(false);
Expand Down
5 changes: 0 additions & 5 deletions src/gl/scene/gl_drawinfo.h
Expand Up @@ -112,11 +112,6 @@ struct FDrawInfo : public HWDrawInfo
void EndDrawScene(sector_t * viewsector);
void DrawEndScene2D(sector_t * viewsector);

// These should go into hwrenderer later.
void SetViewMatrix(const FRotator &angles, float vx, float vy, float vz, bool mirror, bool planemirror);
void SetupView(float vx, float vy, float vz, bool mirror, bool planemirror);


static FDrawInfo *StartDrawInfo(FRenderViewpoint &parentvp, HWViewpointUniforms *uniforms);
FDrawInfo *EndDrawInfo();

Expand Down

0 comments on commit 282fdac

Please sign in to comment.