History

mirrors wip

HifiExperiments committed 4 years ago

Commit 89e6cbb1 parent fb5b07740 files · +699 −54Browse files

Showing the changes to libraries/render-utils/src/RenderDeferredTask.cpp (1 of 40 files). Show all

Unified · Split

libraries/render-utils/src/RenderDeferredTask.cpp+21−9
@@ -100,11 +100,14 @@ void RenderDeferredTask::configure(const Config& config) { · 99 unmodified lines
100100 preparePrimaryBufferConfig->setResolutionScale(config.resolutionScale);
101101 }
102102
103−void RenderDeferredTask::build(JobModel& task, const render::Varying& input, render::Varying& output) {
104− auto fadeEffect = DependencyManager::get<FadeEffect>();
103+void RenderDeferredTask::build(JobModel& task, const render::Varying& input, render::Varying& output, render::CullFunctor cullFunctor, size_t depth) {
104+ static auto fadeEffect = DependencyManager::get<FadeEffect>();
105105 // Prepare the ShapePipelines
106− ShapePlumberPointer shapePlumber = std::make_shared<ShapePlumber>();
107− initDeferredPipelines(*shapePlumber, fadeEffect->getBatchSetter(), fadeEffect->getItemUniformSetter());
106+ static ShapePlumberPointer shapePlumber = std::make_shared<ShapePlumber>();
107+ static std::once_flag once;
108+ std::call_once(once, [] {
109+ initDeferredPipelines(*shapePlumber, fadeEffect->getBatchSetter(), fadeEffect->getItemUniformSetter());
110+ });
108111
109112 const auto& inputs = input.get<Input>();
110113
@@ -116,6 +119,7 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 5 unmodified lines
116119 // Extract opaques / transparents / lights / metas / layered / background
117120 const auto& opaques = items[RenderFetchCullSortTask::OPAQUE_SHAPE];
118121 const auto& transparents = items[RenderFetchCullSortTask::TRANSPARENT_SHAPE];
122+ const auto& mirrors = items[RenderFetchCullSortTask::MIRROR];
119123 const auto& inFrontOpaque = items[RenderFetchCullSortTask::LAYER_FRONT_OPAQUE_SHAPE];
120124 const auto& inFrontTransparent = items[RenderFetchCullSortTask::LAYER_FRONT_TRANSPARENT_SHAPE];
121125 const auto& hudOpaque = items[RenderFetchCullSortTask::LAYER_HUD_OPAQUE_SHAPE];
@@ -139,7 +143,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 17 unmodified lines
139143 // Shadow Stage Frame
140144 const auto shadowFrame = shadowTaskOutputs[1];
141145
142−
143146 fadeEffect->build(task, opaques);
144147
145148 const auto jitter = task.addJob<JitterSample>("JitterCam");
@@ -162,6 +165,13 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 16 unmodified lines
162165 const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel, jitter).asVarying();
163166 task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);
164167
168+ if (depth < RenderMirrorTask::MAX_MIRROR_DEPTH) {
169+ const auto mirrorInputs = RenderMirrorTask::Inputs(mirrors, scaledPrimaryFramebuffer, jitter).asVarying();
170+ for (size_t i = 0; i < RenderMirrorTask::MAX_MIRRORS_PER_LEVEL; i++) {
171+ task.addJob<RenderMirrorTask>("RenderMirrorTask" + std::to_string(i) + "Depth" + std::to_string(depth), mirrorInputs, i, cullFunctor, depth);
172+ }
173+ }
174+
165175 // Opaque all rendered
166176
167177 // Linear Depth Pass
@@ -398,8 +408,12 @@ void RenderDeferredTaskDebug::build(JobModel& task, const render::Varying& input · 230 unmodified lines
398408 // Status icon rendering job
399409 {
400410 // Grab a texture map representing the different status icons and assign that to the drawStatusJob
401− auto iconMapPath = PathUtils::resourcesPath() + "icons/statusIconAtlas.svg";
402− auto statusIconMap = DependencyManager::get<TextureCache>()->getImageTexture(iconMapPath, image::TextureUsage::STRICT_TEXTURE);
411+ static gpu::TexturePointer statusIconMap;
412+ static std::once_flag once;
413+ std::call_once(once, [] {
414+ auto iconMapPath = PathUtils::resourcesPath() + "icons/statusIconAtlas.svg";
415+ statusIconMap = DependencyManager::get<TextureCache>()->getImageTexture(iconMapPath, image::TextureUsage::STRICT_TEXTURE);
416+ });
403417 const auto drawStatusInputs = DrawStatus::Input(opaques, jitter).asVarying();
404418 task.addJob<DrawStatus>("DrawStatus", drawStatusInputs, DrawStatus(statusIconMap));
405419 }
@@ -407,8 +421,6 @@ void RenderDeferredTaskDebug::build(JobModel& task, const render::Varying& input · 1 unmodified line
407421 const auto debugZoneInputs = DebugZoneLighting::Inputs(deferredFrameTransform, lightFrame, backgroundFrame).asVarying();
408422 task.addJob<DebugZoneLighting>("DrawZoneStack", debugZoneInputs);
409423 }
410−
411−
412424 }
413425
414426 gpu::FramebufferPointer PreparePrimaryFramebuffer::createFramebuffer(const char* name, const glm::uvec2& frameSize) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t