From 3a437cf19013f1b147a8acfd24687debf825a175 Mon Sep 17 00:00:00 2001 From: Anna Date: Mon, 29 Jul 2019 14:59:15 -0700 Subject: [PATCH] fix on android, merge android and windows forward pipelines --- libraries/render-utils/src/RenderCommonTask.cpp | 10 ++-------- libraries/render-utils/src/RenderForwardTask.cpp | 13 +++---------- .../render-utils/src/ToneMapAndResampleTask.cpp | 15 ++++----------- .../render-utils/src/ToneMapAndResampleTask.h | 2 +- 4 files changed, 10 insertions(+), 30 deletions(-) diff --git a/libraries/render-utils/src/RenderCommonTask.cpp b/libraries/render-utils/src/RenderCommonTask.cpp index cddf1a6410..9338cefa82 100644 --- a/libraries/render-utils/src/RenderCommonTask.cpp +++ b/libraries/render-utils/src/RenderCommonTask.cpp @@ -154,19 +154,13 @@ void NewFramebuffer::run(const render::RenderContextPointer& renderContext, cons glm::uvec2 frameSize(args->_viewport.z, args->_viewport.w); output.reset(); - auto destBlitFbo = args->_blitFramebuffer; - if (destBlitFbo && destBlitFbo->getSize() == frameSize) { - output = destBlitFbo; - return; - } - // Else use the lodal Framebuffer if (_outputFramebuffer && _outputFramebuffer->getSize() != frameSize) { _outputFramebuffer.reset(); } if (!_outputFramebuffer) { - _outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer2.out")); + _outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer.out")); auto colorFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::R11G11B10); auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR); auto colorTexture = gpu::Texture::createRenderBuffer(colorFormat, frameSize.x, frameSize.y, gpu::Texture::SINGLE_MIP, defaultSampler); @@ -195,7 +189,7 @@ void NewOrDefaultFramebuffer::run(const render::RenderContextPointer& renderCont } if (!_outputFramebuffer) { - _outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newFramebuffer.out")); + _outputFramebuffer = gpu::FramebufferPointer(gpu::Framebuffer::create("newOrDefaultFramebuffer.out")); auto colorFormat = gpu::Element(gpu::SCALAR, gpu::FLOAT, gpu::R11G11B10); auto defaultSampler = gpu::Sampler(gpu::Sampler::FILTER_MIN_MAG_LINEAR); auto colorTexture = gpu::Texture::createRenderBuffer(colorFormat, frameSize.x, frameSize.y, gpu::Texture::SINGLE_MIP, defaultSampler); diff --git a/libraries/render-utils/src/RenderForwardTask.cpp b/libraries/render-utils/src/RenderForwardTask.cpp index 97d0bbbc2e..814c5a9080 100755 --- a/libraries/render-utils/src/RenderForwardTask.cpp +++ b/libraries/render-utils/src/RenderForwardTask.cpp @@ -140,22 +140,15 @@ void RenderForwardTask::build(JobModel& task, const render::Varying& input, rend task.addJob("DrawZoneStack", debugZoneInputs); } - //const auto newResolvedFramebuffer = task.addJob("MakeResolvingFramebuffer"); + const auto newResolvedFramebuffer = task.addJob("MakeResolvingFramebuffer"); - #if 1 - const auto resolveInputs = ResolveFramebuffer::Inputs(scaledPrimaryFramebuffer, static_cast(nullptr)).asVarying(); - #else const auto resolveInputs = ResolveFramebuffer::Inputs(scaledPrimaryFramebuffer, newResolvedFramebuffer).asVarying(); - #endif - const auto resolvedFramebuffer = task.addJob("Resolve", resolveInputs); - const auto toneMappedBuffer = resolvedFramebuffer; - //const auto toneMappingInputs = ToneMappingDeferred::Input(resolvedFramebuffer, args->blitFramebuffer).asVarying(); - const auto primaryFramebuffer = task.addJob("ToneMapAndResample", toneMappedBuffer); + const auto toneMappedBuffer = task.addJob("ToneMapAndResample", resolvedFramebuffer); // HUD Layer - const auto renderHUDLayerInputs = RenderHUDLayerTask::Input(primaryFramebuffer, lightingModel, hudOpaque, hudTransparent, hazeFrame).asVarying(); + const auto renderHUDLayerInputs = RenderHUDLayerTask::Input(toneMappedBuffer, lightingModel, hudOpaque, hudTransparent, hazeFrame).asVarying(); task.addJob("RenderHUDLayer", renderHUDLayerInputs); } diff --git a/libraries/render-utils/src/ToneMapAndResampleTask.cpp b/libraries/render-utils/src/ToneMapAndResampleTask.cpp index dbd735f098..45370d1dee 100644 --- a/libraries/render-utils/src/ToneMapAndResampleTask.cpp +++ b/libraries/render-utils/src/ToneMapAndResampleTask.cpp @@ -29,7 +29,7 @@ ToneMapAndResample::ToneMapAndResample() { Parameters parameters; _parametersBuffer = gpu::BufferView(std::make_shared(sizeof(Parameters), (const gpu::Byte*) ¶meters)); } -/* + void ToneMapAndResample::init() { // shared_ptr to gpu::State gpu::StatePointer blitState = gpu::StatePointer(new gpu::State()); @@ -40,7 +40,6 @@ void ToneMapAndResample::init() { _pipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping), blitState)); _mirrorPipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping_mirrored), blitState)); } - */ void ToneMapAndResample::setExposure(float exposure) { auto& params = _parametersBuffer.get(); @@ -72,21 +71,15 @@ void ToneMapAndResample::run(const RenderContextPointer& renderContext, const In auto lightingBuffer = input->getRenderBuffer(0); resampledFrameBuffer = args->_blitFramebuffer; -/* + if (!lightingBuffer || !resampledFrameBuffer) { return; - }*/ + } if (resampledFrameBuffer != sourceFramebuffer) { if (!_pipeline) { - gpu::StatePointer blitState = gpu::StatePointer(new gpu::State()); - - blitState->setDepthTest(gpu::State::DepthTest(false, false)); - blitState->setColorWriteMask(true, true, true, true); - - _pipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping), blitState)); - _mirrorPipeline = gpu::PipelinePointer(gpu::Pipeline::create(gpu::Shader::createProgram(toneMapping_mirrored), blitState)); + init(); } const auto bufferSize = resampledFrameBuffer->getSize(); diff --git a/libraries/render-utils/src/ToneMapAndResampleTask.h b/libraries/render-utils/src/ToneMapAndResampleTask.h index 659d06c433..6d7def5f85 100644 --- a/libraries/render-utils/src/ToneMapAndResampleTask.h +++ b/libraries/render-utils/src/ToneMapAndResampleTask.h @@ -96,7 +96,7 @@ private: typedef gpu::BufferView UniformBufferView; gpu::BufferView _parametersBuffer; - void init(RenderArgs* args); + void init(); }; #endif // hifi_ToneMapAndResample_h