Added SceneData texture as the second colorbuffer when rendering a scene and placed fog data into it

This commit is contained in:
Magnus Norddahl 2016-09-21 02:04:56 +02:00
commit d774136282
8 changed files with 115 additions and 24 deletions

View file

@ -158,7 +158,11 @@ void FGLRenderer::Set3DViewport(bool mainview)
{
if (mainview && mBuffers->Setup(mScreenViewport.width, mScreenViewport.height, mSceneViewport.width, mSceneViewport.height))
{
mBuffers->BindSceneFB();
mBuffers->BindSceneFB(gl_ssao);
GLenum buffers[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 };
glDrawBuffers(gl_ssao ? 2 : 1, buffers);
gl_RenderState.SetPassType(gl_ssao ? GBUFFER_PASS : NORMAL_PASS);
gl_RenderState.Apply();
}
// Always clear all buffers with scissor test disabled.
@ -491,7 +495,13 @@ void FGLRenderer::DrawScene(int drawmode)
RenderScene(recursion);
AmbientOccludeScene();
bool applySSAO = gl_ssao && FGLRenderBuffers::IsEnabled() && drawmode != DM_PORTAL;
if (applySSAO)
{
AmbientOccludeScene();
gl_RenderState.SetPassType(GBUFFER_PASS);
gl_RenderState.Apply();
}
// Handle all portals after rendering the opaque objects but before
// doing all translucent stuff
@ -499,6 +509,15 @@ void FGLRenderer::DrawScene(int drawmode)
GLPortal::EndFrame();
recursion--;
RenderTranslucent();
if (applySSAO)
{
mBuffers->BindSceneFB(true);
GLenum buffers[] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 };
glDrawBuffers(2, buffers);
gl_RenderState.SetPassType(NORMAL_PASS);
gl_RenderState.Apply();
}
}