Cleanup
parent
796886b717
commit
40f91d4666
|
@ -452,14 +452,14 @@ void Renderer::Shutdown() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::RenderGl() {
|
void Renderer::CheckRenderBuffers() {
|
||||||
mSceneAreaWidth = mSceneAreaWidth < 1 ? 1 : mSceneAreaWidth;
|
mSceneAreaWidth = mSceneAreaWidth < 1 ? 1 : mSceneAreaWidth;
|
||||||
mSceneAreaHeight = mSceneAreaHeight < 1 ? 1 : mSceneAreaHeight;
|
mSceneAreaHeight = mSceneAreaHeight < 1 ? 1 : mSceneAreaHeight;
|
||||||
|
|
||||||
// TODO: Refactor enabling/disabling buffers for SSAO
|
// TODO: Refactor enabling/disabling buffers for SSAO
|
||||||
int required_render_flags = RenderTarget::EnableColor
|
int required_render_flags = RenderTarget::EnableColor
|
||||||
| RenderTarget::EnableDepthTexture
|
| RenderTarget::EnableDepthTexture
|
||||||
| RenderTarget::EnableLinearizedDepthTexture;
|
| RenderTarget::EnableLinearizedDepthTexture;
|
||||||
|
|
||||||
if (mIsSSAOEnabled) {
|
if (mIsSSAOEnabled) {
|
||||||
required_render_flags = required_render_flags
|
required_render_flags = required_render_flags
|
||||||
|
@ -484,15 +484,21 @@ void Renderer::RenderGl() {
|
||||||
mRenderTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, required_render_flags);
|
mRenderTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, required_render_flags);
|
||||||
mPostprocessTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
|
mPostprocessTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
|
||||||
|
|
||||||
if (mIsSSAOEnabled) {
|
|
||||||
mSSAOTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mUseDeferred) {
|
if (mUseDeferred) {
|
||||||
mDeferredLightingTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
|
mDeferredLightingTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mIsSSAOEnabled
|
||||||
|
&& (mSSAOTarget.mWidth != mSceneAreaWidth
|
||||||
|
|| mSSAOTarget.mHeight != mSceneAreaHeight)) {
|
||||||
|
mSSAOTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Renderer::RenderGl() {
|
||||||
|
CheckRenderBuffers();
|
||||||
|
|
||||||
if (mCamera.mWidth != mSceneAreaWidth
|
if (mCamera.mWidth != mSceneAreaWidth
|
||||||
|| mCamera.mHeight != mSceneAreaHeight) {
|
|| mCamera.mHeight != mSceneAreaHeight) {
|
||||||
mCamera.mWidth = mSceneAreaWidth;
|
mCamera.mWidth = mSceneAreaWidth;
|
||||||
|
@ -556,7 +562,7 @@ void Renderer::RenderGl() {
|
||||||
// clear color and depth
|
// clear color and depth
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glEnable(GL_DEPTH_TEST);
|
glEnable(GL_DEPTH_TEST);
|
||||||
glEnable(GL_LINE_SMOOTH);
|
glDisable(GL_LINE_SMOOTH);
|
||||||
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
|
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
|
||||||
glEnable(GL_MULTISAMPLE);
|
glEnable(GL_MULTISAMPLE);
|
||||||
glEnable(GL_CULL_FACE);
|
glEnable(GL_CULL_FACE);
|
||||||
|
@ -594,10 +600,7 @@ void Renderer::RenderGl() {
|
||||||
mRenderTarget.RenderToLinearizedDepth(mCamera.mNear, mCamera.mFar, mCamera.mIsOrthographic);
|
mRenderTarget.RenderToLinearizedDepth(mCamera.mNear, mCamera.mFar, mCamera.mIsOrthographic);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mIsSSAOEnabled) {
|
if (mUseDeferred && mIsSSAOEnabled) {
|
||||||
GLenum buffers[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3 };
|
|
||||||
glDrawBuffers (3, buffers);
|
|
||||||
|
|
||||||
mSSAOTarget.Bind();
|
mSSAOTarget.Bind();
|
||||||
glViewport(0, 0, mCamera.mWidth, mCamera.mHeight);
|
glViewport(0, 0, mCamera.mWidth, mCamera.mHeight);
|
||||||
GLenum draw_attachment_0[] = {GL_COLOR_ATTACHMENT0 };
|
GLenum draw_attachment_0[] = {GL_COLOR_ATTACHMENT0 };
|
||||||
|
@ -656,6 +659,7 @@ void Renderer::RenderGl() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mUseDeferred) {
|
if (mUseDeferred) {
|
||||||
|
// Deferred: Lighting pass
|
||||||
GLenum buffers[] = { GL_COLOR_ATTACHMENT0};
|
GLenum buffers[] = { GL_COLOR_ATTACHMENT0};
|
||||||
glDrawBuffers (1, buffers);
|
glDrawBuffers (1, buffers);
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ struct Renderer {
|
||||||
|
|
||||||
void Initialize(int width, int height);
|
void Initialize(int width, int height);
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
void CheckRenderBuffers();
|
||||||
void RenderGl();
|
void RenderGl();
|
||||||
void RenderScene(RenderProgram &program, const Camera& camera);
|
void RenderScene(RenderProgram &program, const Camera& camera);
|
||||||
void DrawGui();
|
void DrawGui();
|
||||||
|
|
Loading…
Reference in New Issue