Trying to copy the deferred result onto the main render target

simple_math_single_header
Martin Felis 2018-07-26 14:48:30 +02:00
parent 8694cddcdf
commit 54d67cdeac
2 changed files with 27 additions and 11 deletions

View File

@ -635,9 +635,6 @@ void Renderer::Initialize(int width, int height) {
mSSAOTarget.Initialize(width, height, RenderTarget::EnableColor);
mSSAOBlurTarget.Initialize(width, height, RenderTarget::EnableColor);
// Postprocess Target
mPostprocessTarget.Initialize(width, height, RenderTarget::EnableColor);
mDeferredLightingTarget.Initialize(width, height, RenderTarget::EnableColor);
// Light
@ -694,7 +691,6 @@ void Renderer::CheckRenderBuffers() {
|| mSceneAreaHeight != mRenderTarget.mHeight
|| mRenderTarget.mFlags != required_render_flags ) {
mRenderTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, required_render_flags);
mPostprocessTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
if (mUseDeferred) {
mDeferredLightingTarget.Resize(mSceneAreaWidth, mSceneAreaHeight, RenderTarget::EnableColor);
@ -787,9 +783,6 @@ void Renderer::RenderGl() {
glDrawBuffers(3, buffers);
glClear(GL_COLOR_BUFFER_BIT);
} else {
if (program->SetMat44("uViewProjectionMatrix", mLight.mLightSpaceMatrix) == -1) {
gLog ("Warning: Uniform %s not found!", "uLightSpaceMatrix");
}
GLenum buffers[] = { GL_COLOR_ATTACHMENT0};
glDrawBuffers (1, buffers);
}
@ -976,9 +969,31 @@ void Renderer::RenderGl() {
gScreenQuad.Draw(GL_TRIANGLES);
}
if (mDrawDebugCamera && mUseDeferred) {
if (mDrawDebugCamera) {
DebugDrawShadowCascades();
}
if (mUseDeferred) {
// Blit the deferred result onto the main render target
// glBindFramebuffer
glBindFramebuffer(GL_READ_FRAMEBUFFER, mDeferredLightingTarget.mFrameBufferId);
glReadBuffer(GL_COLOR_ATTACHMENT0);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, mRenderTarget.mFrameBufferId);
GLenum buffers[] = { GL_COLOR_ATTACHMENT0};
glDrawBuffers (1, buffers);
glBlitFramebuffer(
0, mDeferredLightingTarget.mWidth,
0, mDeferredLightingTarget.mHeight,
0, mRenderTarget.mWidth,
0, mRenderTarget.mHeight,
GL_COLOR_BUFFER_BIT,
GL_NEAREST
);
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
}
}
void Renderer::DebugDrawShadowCascades() {
@ -1125,8 +1140,10 @@ void Renderer::DrawGui() {
switch (sRendererSettings.RenderMode) {
case SceneRenderModeDefault:
mRenderTextureRef.mTextureIdPtr =
mUseDeferred ? &mDeferredLightingTarget.mColorTexture : &mPostprocessTarget.mColorTexture;
mRenderTextureRef.mTextureIdPtr =
&mRenderTarget.mColorTexture;
// &mDeferredLightingTarget.mColorTexture;
// mUseDeferred ? &mDeferredLightingTarget.mColorTexture : &mRenderTarget.mColorTexture;
break;
case SceneRenderModeColor:
mRenderTextureRef.mTextureIdPtr = &mRenderTarget.mColorTexture;

View File

@ -100,7 +100,6 @@ struct Renderer {
RenderTarget mDeferredLightingTarget;
RenderTarget mSSAOTarget;
RenderTarget mSSAOBlurTarget;
RenderTarget mPostprocessTarget;
GLTextureRef mRenderTextureRef = { (int)0xbadface };
GLTextureRef mPositionTextureRef = { (int)0xbadface };