From 89878f55a25d60d6cb4826c69cd2ecc07b64cef9 Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Wed, 12 Apr 2023 23:24:01 -0400 Subject: [PATCH] Fix alpost --- indra/newview/alrenderutils.cpp | 16 ++++++++++------ indra/newview/alrenderutils.h | 4 ++-- indra/newview/pipeline.cpp | 24 ++++++++++++++++++++++-- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/indra/newview/alrenderutils.cpp b/indra/newview/alrenderutils.cpp index 809fa98c1cc..50d7d7affc2 100644 --- a/indra/newview/alrenderutils.cpp +++ b/indra/newview/alrenderutils.cpp @@ -513,9 +513,9 @@ bool ALRenderUtil::setupColorGrade() return true; } -void ALRenderUtil::renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure) +void ALRenderUtil::renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure, LLRenderTarget* dst) { - LLGLDepthTest depth(GL_FALSE, GL_FALSE); + dst->bindTarget(); LLGLSLShader* tone_shader = (mCGLut != 0 ) ? &gDeferredPostColorGradeLUTProgram[mTonemapType] : &gDeferredPostTonemapProgram[mTonemapType]; @@ -578,6 +578,8 @@ void ALRenderUtil::renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure) tone_shader->unbindTexture(LLShaderMgr::DEFERRED_DIFFUSE, src->getUsage()); tone_shader->unbindTexture(LLShaderMgr::EXPOSURE_MAP, exposure->getUsage()); tone_shader->unbind(); + + dst->flush(); } bool ALRenderUtil::setupSharpen() @@ -625,13 +627,16 @@ bool ALRenderUtil::setupSharpen() return true; } -void ALRenderUtil::renderSharpen(LLRenderTarget* src) +void ALRenderUtil::renderSharpen(LLRenderTarget* src, LLRenderTarget* dst) { if (mSharpenMethod == ALSharpen::SHARPEN_NONE) { + gPipeline.copyRenderTarget(src, dst); return; } + dst->bindTarget(); + LLGLSLShader* sharpen_shader = nullptr; switch (mSharpenMethod) { @@ -646,8 +651,6 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src) break; } - LLGLDepthTest depth(GL_FALSE, GL_FALSE); - // Bind setup: sharpen_shader->bind(); @@ -657,6 +660,7 @@ void ALRenderUtil::renderSharpen(LLRenderTarget* src) mRenderBuffer->setBuffer(); mRenderBuffer->drawArrays(LLRender::TRIANGLES, 0, 3); - sharpen_shader->unbindTexture(LLShaderMgr::DEFERRED_DIFFUSE, src->getUsage()); sharpen_shader->unbind(); + + dst->flush(); } diff --git a/indra/newview/alrenderutils.h b/indra/newview/alrenderutils.h index 3008416ee84..1363c9bc99f 100644 --- a/indra/newview/alrenderutils.h +++ b/indra/newview/alrenderutils.h @@ -62,7 +62,7 @@ class ALRenderUtil }; bool setupTonemap(); bool setupColorGrade(); - void renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure); + void renderTonemap(LLRenderTarget* src, LLRenderTarget* exposure, LLRenderTarget* dst); enum ALSharpen : uint32_t { @@ -73,7 +73,7 @@ class ALRenderUtil }; bool setupSharpen(); - void renderSharpen(LLRenderTarget* src); + void renderSharpen(LLRenderTarget* src, LLRenderTarget* dst); // End Deferred Only U32 getSharpenMethod() { return mSharpenMethod; }; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 078323efa99..7f3cb7f40c4 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7304,7 +7304,25 @@ void LLPipeline::applyFXAA(LLRenderTarget* src, LLRenderTarget* dst) { mRT->fxaaBuffer.flush(); dst->bindTarget(); - shader = &gFXAAProgram; + + U32 fsaa_quality = 0; + switch (RenderFSAASamples) + { + case 2: + fsaa_quality = 0; + break; + case 4: + fsaa_quality = 1; + break; + default: + case 8: + fsaa_quality = 2; + break; + case 16: + fsaa_quality = 3; + break; + } + shader = &gFXAAProgram[fsaa_quality]; shader->bind(); channel = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP, mRT->fxaaBuffer.getUsage()); @@ -7618,7 +7636,9 @@ void LLPipeline::renderFinalize() generateExposure(&mLuminanceMap, &mExposureMap); - gammaCorrect(&mRT->screen, &mPostMap); + mALRenderUtil->renderTonemap(&mRT->screen, &mExposureMap, &mPostFXMap); + mALRenderUtil->renderSharpen(&mPostFXMap, &mPostMap); + //gammaCorrect(&mRT->screen, &mPostMap); LLVertexBuffer::unbind(); } -- GitLab