From 50d16eca80c88add4b3174433044f352cb4a84e7 Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Tue, 10 Jul 2018 12:26:51 +0200 Subject: [PATCH] Added object fade parameters to shape pipeline locations --- libraries/render-utils/src/FadeEffect.cpp | 14 ++++++-------- libraries/render/src/render/ShapePipeline.cpp | 1 + libraries/render/src/render/ShapePipeline.h | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libraries/render-utils/src/FadeEffect.cpp b/libraries/render-utils/src/FadeEffect.cpp index 4efdaa0bfc..ef1277a520 100644 --- a/libraries/render-utils/src/FadeEffect.cpp +++ b/libraries/render-utils/src/FadeEffect.cpp @@ -41,14 +41,12 @@ render::ShapePipeline::BatchSetter FadeEffect::getBatchSetter() const { render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() const { return [](const render::ShapePipeline& shapePipeline, render::Args* args, const render::Item& item) { if (!render::TransitionStage::isIndexInvalid(item.getTransitionId())) { - auto scene = args->_scene; - auto batch = args->_batch; - auto transitionStage = scene->getStage(render::TransitionStage::getName()); - auto& transitionState = transitionStage->getTransition(item.getTransitionId()); - auto program = shapePipeline.pipeline->getProgram(); - auto objectParamBufferLocation = program->getUniformBuffers().findLocation("fadeObjectParametersBuffer"); + if (shapePipeline.locations->fadeObjectParameterBufferUnit >= 0) { + auto scene = args->_scene; + auto batch = args->_batch; + auto transitionStage = scene->getStage(render::TransitionStage::getName()); + auto& transitionState = transitionStage->getTransition(item.getTransitionId()); - if (objectParamBufferLocation >= 0) { if (transitionState.paramsBuffer._size != sizeof(gpu::StructBuffer)) { static_assert(sizeof(transitionState.paramsBuffer) == sizeof(gpu::StructBuffer), "Assuming gpu::StructBuffer is a helper class for gpu::BufferView"); transitionState.paramsBuffer = gpu::StructBuffer(); @@ -70,7 +68,7 @@ render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() const { params.noiseOffset = glm::vec4(transitionState.noiseOffset, 0.0f); params.baseOffset = glm::vec4(transitionState.baseOffset, 0.0f); } - batch->setUniformBuffer(objectParamBufferLocation, transitionState.paramsBuffer); + batch->setUniformBuffer(shapePipeline.locations->fadeObjectParameterBufferUnit, transitionState.paramsBuffer); } } }; diff --git a/libraries/render/src/render/ShapePipeline.cpp b/libraries/render/src/render/ShapePipeline.cpp index 1ce58c49ae..e42daab1dc 100644 --- a/libraries/render/src/render/ShapePipeline.cpp +++ b/libraries/render/src/render/ShapePipeline.cpp @@ -124,6 +124,7 @@ void ShapePlumber::addPipeline(const Filter& filter, const gpu::ShaderPointer& p locations->lightAmbientMapUnit = program->getTextures().findLocation("skyboxMap"); locations->fadeMaskTextureUnit = program->getTextures().findLocation("fadeMaskMap"); locations->fadeParameterBufferUnit = program->getUniformBuffers().findLocation("fadeParametersBuffer"); + locations->fadeObjectParameterBufferUnit = program->getUniformBuffers().findLocation("fadeObjectParametersBuffer"); locations->hazeParameterBufferUnit = program->getUniformBuffers().findLocation("hazeBuffer"); if (key.isTranslucent()) { locations->lightClusterGridBufferUnit = program->getUniformBuffers().findLocation("clusterGridBuffer"); diff --git a/libraries/render/src/render/ShapePipeline.h b/libraries/render/src/render/ShapePipeline.h index 7d87d98deb..1379b21a85 100644 --- a/libraries/render/src/render/ShapePipeline.h +++ b/libraries/render/src/render/ShapePipeline.h @@ -278,6 +278,7 @@ public: int lightAmbientMapUnit; int fadeMaskTextureUnit; int fadeParameterBufferUnit; + int fadeObjectParameterBufferUnit; int hazeParameterBufferUnit; int lightClusterGridBufferUnit; int lightClusterContentBufferUnit;