HifiExperimentsfix fade on text payload17973cb9 months agoHistory
51 lines · 1.9 KB · C++
RawDownload
////  FadeEffect.cpp //  Created by Olivier Prat on 17/07/2017.//  Copyright 2017 High Fidelity, Inc.//  Copyright 2024 Overte e.V.////  Distributed under the Apache License, Version 2.0.//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html//#include "FadeEffect.h"#include "FadeEffectJobs.h"#include "TextureCache.h" #include "render/TransitionStage.h" #include "render-utils/ShaderConstants.h"#include <PathUtils.h> gpu::TexturePointer FadeEffect::_maskMap; FadeEffect::FadeEffect() {    std::once_flag once;    std::call_once(once, [] {        auto texturePath = PathUtils::resourcesPath() + "images/fadeMask.png";        _maskMap = DependencyManager::get<TextureCache>()->getImageTexture(texturePath, image::TextureUsage::STRICT_TEXTURE);    });} void FadeEffect::build(JobModel& task, const render::Varying& inputs, render::Varying& outputs) {    const auto editedItem = task.addJob<FadeEditJob>("FadeEdit");    task.addJob<FadeJob>("Fade", editedItem);} render::ShapePipeline::BatchSetter FadeEffect::getBatchSetter() {    return [](const render::ShapePipeline*, gpu::Batch& batch, render::Args*) {        batch.setResourceTexture(render_utils::slot::texture::FadeMask, _maskMap);    };} render::ShapePipeline::ItemSetter FadeEffect::getItemUniformSetter() {    return [](const render::ShapePipeline*, render::Args* args, const render::Item& item) {        if (!render::TransitionStage::isIndexInvalid(item.getTransitionId())) {            const auto& scene = args->_scene;            const auto& batch = args->_batch;            auto transitionStage = scene->getStage<render::TransitionStage>();            auto& transitionState = transitionStage->getElement(item.getTransitionId());            batch->setUniformBuffer(render_utils::slot::buffer::FadeObjectParameters, transitionState.paramsBuffer);        }    };}