Added object fade parameters to shape pipeline locations

This commit is contained in:
Olivier Prat 2018-07-10 12:26:51 +02:00
parent 777ca7e010
commit 50d16eca80
3 changed files with 8 additions and 8 deletions

View file

@ -41,14 +41,12 @@ render::ShapePipeline::BatchSetter FadeEffect::getBatchSetter() const {
render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() const { render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() const {
return [](const render::ShapePipeline& shapePipeline, render::Args* args, const render::Item& item) { return [](const render::ShapePipeline& shapePipeline, render::Args* args, const render::Item& item) {
if (!render::TransitionStage::isIndexInvalid(item.getTransitionId())) { if (!render::TransitionStage::isIndexInvalid(item.getTransitionId())) {
auto scene = args->_scene; if (shapePipeline.locations->fadeObjectParameterBufferUnit >= 0) {
auto batch = args->_batch; auto scene = args->_scene;
auto transitionStage = scene->getStage<render::TransitionStage>(render::TransitionStage::getName()); auto batch = args->_batch;
auto& transitionState = transitionStage->getTransition(item.getTransitionId()); auto transitionStage = scene->getStage<render::TransitionStage>(render::TransitionStage::getName());
auto program = shapePipeline.pipeline->getProgram(); auto& transitionState = transitionStage->getTransition(item.getTransitionId());
auto objectParamBufferLocation = program->getUniformBuffers().findLocation("fadeObjectParametersBuffer");
if (objectParamBufferLocation >= 0) {
if (transitionState.paramsBuffer._size != sizeof(gpu::StructBuffer<FadeObjectParams>)) { if (transitionState.paramsBuffer._size != sizeof(gpu::StructBuffer<FadeObjectParams>)) {
static_assert(sizeof(transitionState.paramsBuffer) == sizeof(gpu::StructBuffer<FadeObjectParams>), "Assuming gpu::StructBuffer is a helper class for gpu::BufferView"); static_assert(sizeof(transitionState.paramsBuffer) == sizeof(gpu::StructBuffer<FadeObjectParams>), "Assuming gpu::StructBuffer is a helper class for gpu::BufferView");
transitionState.paramsBuffer = gpu::StructBuffer<FadeObjectParams>(); transitionState.paramsBuffer = gpu::StructBuffer<FadeObjectParams>();
@ -70,7 +68,7 @@ render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() const {
params.noiseOffset = glm::vec4(transitionState.noiseOffset, 0.0f); params.noiseOffset = glm::vec4(transitionState.noiseOffset, 0.0f);
params.baseOffset = glm::vec4(transitionState.baseOffset, 0.0f); params.baseOffset = glm::vec4(transitionState.baseOffset, 0.0f);
} }
batch->setUniformBuffer(objectParamBufferLocation, transitionState.paramsBuffer); batch->setUniformBuffer(shapePipeline.locations->fadeObjectParameterBufferUnit, transitionState.paramsBuffer);
} }
} }
}; };

View file

@ -124,6 +124,7 @@ void ShapePlumber::addPipeline(const Filter& filter, const gpu::ShaderPointer& p
locations->lightAmbientMapUnit = program->getTextures().findLocation("skyboxMap"); locations->lightAmbientMapUnit = program->getTextures().findLocation("skyboxMap");
locations->fadeMaskTextureUnit = program->getTextures().findLocation("fadeMaskMap"); locations->fadeMaskTextureUnit = program->getTextures().findLocation("fadeMaskMap");
locations->fadeParameterBufferUnit = program->getUniformBuffers().findLocation("fadeParametersBuffer"); locations->fadeParameterBufferUnit = program->getUniformBuffers().findLocation("fadeParametersBuffer");
locations->fadeObjectParameterBufferUnit = program->getUniformBuffers().findLocation("fadeObjectParametersBuffer");
locations->hazeParameterBufferUnit = program->getUniformBuffers().findLocation("hazeBuffer"); locations->hazeParameterBufferUnit = program->getUniformBuffers().findLocation("hazeBuffer");
if (key.isTranslucent()) { if (key.isTranslucent()) {
locations->lightClusterGridBufferUnit = program->getUniformBuffers().findLocation("clusterGridBuffer"); locations->lightClusterGridBufferUnit = program->getUniformBuffers().findLocation("clusterGridBuffer");

View file

@ -278,6 +278,7 @@ public:
int lightAmbientMapUnit; int lightAmbientMapUnit;
int fadeMaskTextureUnit; int fadeMaskTextureUnit;
int fadeParameterBufferUnit; int fadeParameterBufferUnit;
int fadeObjectParameterBufferUnit;
int hazeParameterBufferUnit; int hazeParameterBufferUnit;
int lightClusterGridBufferUnit; int lightClusterGridBufferUnit;
int lightClusterContentBufferUnit; int lightClusterContentBufferUnit;