History

Added multiple selections but still only first linked to outline

Olivier Prat committed 9 years ago

Commit e42699c1 parent 8d793136 files · +55 −20Browse files

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

Unified · Split

libraries/render-utils/src/RenderDeferredTask.cpp+30−13
@@ -44,6 +44,7 @@ · 43 unmodified lines
44 44
45#include <gpu/StandardShaderLib.h>45#include <gpu/StandardShaderLib.h>
46 46
47#include <sstream>
47 48
48using namespace render;49using namespace render;
49extern void initOverlay3DPipelines(render::ShapePlumber& plumber, bool depthTest = false);50extern void initOverlay3DPipelines(render::ShapePlumber& plumber, bool depthTest = false);
@@ -57,6 +58,18 @@ void RenderDeferredTask::configure(const Config& config) · 7 unmodified lines
57{58{
58}59}
59 60
61const render::Varying RenderDeferredTask::addSelectItemJobs(JobModel& task, const char* selectionName,
62 const render::Varying& metas,
63 const render::Varying& opaques,
64 const render::Varying& transparents) {
65 const auto selectMetaInput = SelectItems::Inputs(metas, Varying()).asVarying();
66 const auto selectedMetas = task.addJob<SelectItems>("MetaSelection", selectMetaInput, selectionName);
67 const auto selectMetaAndOpaqueInput = SelectItems::Inputs(opaques, selectedMetas).asVarying();
68 const auto selectedMetasAndOpaques = task.addJob<SelectItems>("OpaqueSelection", selectMetaAndOpaqueInput, selectionName);
69 const auto selectItemInput = SelectItems::Inputs(transparents, selectedMetasAndOpaques).asVarying();
70 return task.addJob<SelectItems>("TransparentSelection", selectItemInput, selectionName);
71}
72
60void RenderDeferredTask::build(JobModel& task, const render::Varying& input, render::Varying& output) {73void RenderDeferredTask::build(JobModel& task, const render::Varying& input, render::Varying& output) {
61 const auto& items = input.get<Input>();74 const auto& items = input.get<Input>();
62 auto fadeEffect = DependencyManager::get<FadeEffect>();75 auto fadeEffect = DependencyManager::get<FadeEffect>();
@@ -94,15 +107,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 31 unmodified lines
94 // draw a stencil mask in hidden regions of the framebuffer.107 // draw a stencil mask in hidden regions of the framebuffer.
95 task.addJob<PrepareStencil>("PrepareStencil", primaryFramebuffer);108 task.addJob<PrepareStencil>("PrepareStencil", primaryFramebuffer);
96 109
97 // Select items that need to be outlined
98 const auto selectionName = "contextOverlayHighlightList";
99 const auto selectMetaInput = SelectItems::Inputs(metas, Varying()).asVarying();
100 const auto selectedMetas = task.addJob<SelectItems>("PassTestMetaSelection", selectMetaInput, selectionName);
101 const auto selectMetaAndOpaqueInput = SelectItems::Inputs(opaques, selectedMetas).asVarying();
102 const auto selectedMetasAndOpaques = task.addJob<SelectItems>("PassTestOpaqueSelection", selectMetaAndOpaqueInput, selectionName);
103 const auto selectItemInput = SelectItems::Inputs(transparents, selectedMetasAndOpaques).asVarying();
104 const auto selectedItems = task.addJob<SelectItems>("PassTestTransparentSelection", selectItemInput, selectionName);
105
106 // Render opaque objects in DeferredBuffer110 // Render opaque objects in DeferredBuffer
107 const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel).asVarying();111 const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel).asVarying();
108 task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);112 task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);
@@ -172,9 +176,22 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 63 unmodified lines
172 const auto toneMappingInputs = ToneMappingDeferred::Inputs(lightingFramebuffer, primaryFramebuffer).asVarying();176 const auto toneMappingInputs = ToneMappingDeferred::Inputs(lightingFramebuffer, primaryFramebuffer).asVarying();
173 task.addJob<ToneMappingDeferred>("ToneMapping", toneMappingInputs);177 task.addJob<ToneMappingDeferred>("ToneMapping", toneMappingInputs);
174 178
179 // Select items that need to be outlined
180 const auto selectionBaseName = "contextOverlayHighlightList";
181 const auto selectedItems = addSelectItemJobs(task, selectionBaseName, metas, opaques, transparents);
182 DrawOutlineTask::Groups outlineGroups;
183 outlineGroups[0] = selectedItems;
184 for (auto i = 1; i < DrawOutlineTask::MAX_GROUP_COUNT; i++) {
185 std::ostringstream selectionName;
186 selectionName << selectionBaseName;
187 selectionName << i;
188 outlineGroups[i] = addSelectItemJobs(task, selectionName.str().c_str(), metas, opaques, transparents);
189 }
175 const auto outlineRangeTimer = task.addJob<BeginGPURangeTimer>("BeginOutlineRangeTimer", "Outline");190 const auto outlineRangeTimer = task.addJob<BeginGPURangeTimer>("BeginOutlineRangeTimer", "Outline");
176 const auto outlineInputs = DrawOutlineTask::Inputs(selectedItems, deferredFramebuffer, primaryFramebuffer, deferredFrameTransform).asVarying();191
192 const auto outlineInputs = DrawOutlineTask::Inputs(outlineGroups, deferredFramebuffer, primaryFramebuffer, deferredFrameTransform).asVarying();
177 task.addJob<DrawOutlineTask>("DrawOutline", outlineInputs);193 task.addJob<DrawOutlineTask>("DrawOutline", outlineInputs);
194
178 task.addJob<EndGPURangeTimer>("EndOutlineRangeTimer", outlineRangeTimer);195 task.addJob<EndGPURangeTimer>("EndOutlineRangeTimer", outlineRangeTimer);
179 196
180 { // DEbug the bounds of the rendered items, still look at the zbuffer197 { // DEbug the bounds of the rendered items, still look at the zbuffer
@@ -184,6 +201,9 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 3 unmodified lines
184 201
185 task.addJob<DrawBounds>("DrawLightBounds", lights);202 task.addJob<DrawBounds>("DrawLightBounds", lights);
186 task.addJob<DrawBounds>("DrawZones", zones);203 task.addJob<DrawBounds>("DrawZones", zones);
204
205 // Render.getConfig("RenderMainView.DrawSelectionBounds").enabled = true
206 task.addJob<DrawBounds>("DrawSelectionBounds", selectedItems);
187 }207 }
188 208
189 // Layered Overlays209 // Layered Overlays
@@ -230,9 +250,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 40 unmodified lines
230 }250 }
231 251
232 task.addJob<DebugZoneLighting>("DrawZoneStack", deferredFrameTransform);252 task.addJob<DebugZoneLighting>("DrawZoneStack", deferredFrameTransform);
233
234 // Render.getConfig("RenderMainView.DrawSelectionBounds").enabled = true
235 task.addJob<DrawBounds>("DrawSelectionBounds", selectedItems);
236 }253 }
237 254
238 // AA job to be revisited255 // AA job to be revisited

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