History

Merged with master

Olivier Prat committed 8 years ago

Commit fa58cf22 parents 6611b28 9ff454172 files · +2549 −1257Browse files

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

Unified · Split

libraries/render-utils/src/RenderDeferredTask.cpp+28−17
@@ -35,16 +35,18 @@ · 34 unmodified lines
3535 #include "TextureCache.h"
3636 #include "ZoneRenderer.h"
3737 #include "FadeEffect.h"
38+#include "RenderUtilsLogging.h"
3839
3940 #include "AmbientOcclusionEffect.h"
4041 #include "AntialiasingEffect.h"
4142 #include "ToneMappingEffect.h"
4243 #include "SubsurfaceScattering.h"
4344 #include "DrawHaze.h"
44−#include "OutlineEffect.h"
45+#include "HighlightEffect.h"
4546
4647 #include <gpu/StandardShaderLib.h>
4748
49+#include <sstream>
4850
4951 using namespace render;
5052 extern void initOverlay3DPipelines(render::ShapePlumber& plumber, bool depthTest = false);
@@ -58,6 +60,18 @@ void RenderDeferredTask::configure(const Config& config) · 7 unmodified lines
5860 {
5961 }
6062
63+const render::Varying RenderDeferredTask::addSelectItemJobs(JobModel& task, const char* selectionName,
64+ const render::Varying& metas,
65+ const render::Varying& opaques,
66+ const render::Varying& transparents) {
67+ const auto selectMetaInput = SelectItems::Inputs(metas, Varying(), std::string()).asVarying();
68+ const auto selectedMetas = task.addJob<SelectItems>("MetaSelection", selectMetaInput, selectionName);
69+ const auto selectMetaAndOpaqueInput = SelectItems::Inputs(opaques, selectedMetas, std::string()).asVarying();
70+ const auto selectedMetasAndOpaques = task.addJob<SelectItems>("OpaqueSelection", selectMetaAndOpaqueInput, selectionName);
71+ const auto selectItemInput = SelectItems::Inputs(transparents, selectedMetasAndOpaques, std::string()).asVarying();
72+ return task.addJob<SelectItems>("TransparentSelection", selectItemInput, selectionName);
73+}
74+
6175 void RenderDeferredTask::build(JobModel& task, const render::Varying& input, render::Varying& output) {
6276 const auto& items = input.get<Input>();
6377 auto fadeEffect = DependencyManager::get<FadeEffect>();
@@ -95,15 +109,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 31 unmodified lines
95109 // draw a stencil mask in hidden regions of the framebuffer.
96110 task.addJob<PrepareStencil>("PrepareStencil", primaryFramebuffer);
97111
98− // Select items that need to be outlined
99− const auto selectionName = "contextOverlayHighlightList";
100− const auto selectMetaInput = SelectItems::Inputs(metas, Varying()).asVarying();
101− const auto selectedMetas = task.addJob<SelectItems>("PassTestMetaSelection", selectMetaInput, selectionName);
102− const auto selectMetaAndOpaqueInput = SelectItems::Inputs(opaques, selectedMetas).asVarying();
103− const auto selectedMetasAndOpaques = task.addJob<SelectItems>("PassTestOpaqueSelection", selectMetaAndOpaqueInput, selectionName);
104− const auto selectItemInput = SelectItems::Inputs(transparents, selectedMetasAndOpaques).asVarying();
105− const auto selectedItems = task.addJob<SelectItems>("PassTestTransparentSelection", selectItemInput, selectionName);
106−
107112 // Render opaque objects in DeferredBuffer
108113 const auto opaqueInputs = DrawStateSortDeferred::Inputs(opaques, lightingModel).asVarying();
109114 task.addJob<DrawStateSortDeferred>("DrawOpaqueDeferred", opaqueInputs, shapePlumber);
@@ -178,10 +183,15 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 68 unmodified lines
178183 const auto toneMappingInputs = ToneMappingDeferred::Inputs(lightingFramebuffer, primaryFramebuffer).asVarying();
179184 task.addJob<ToneMappingDeferred>("ToneMapping", toneMappingInputs);
180185
181− const auto outlineRangeTimer = task.addJob<BeginGPURangeTimer>("BeginOutlineRangeTimer", "Outline");
182− const auto outlineInputs = DrawOutlineTask::Inputs(selectedItems, shapePlumber, deferredFramebuffer, primaryFramebuffer, deferredFrameTransform).asVarying();
183− task.addJob<DrawOutlineTask>("DrawOutline", outlineInputs);
184− task.addJob<EndGPURangeTimer>("EndOutlineRangeTimer", outlineRangeTimer);
186+ const auto outlineRangeTimer = task.addJob<BeginGPURangeTimer>("BeginHighlightRangeTimer", "Highlight");
187+ // Select items that need to be outlined
188+ const auto selectionBaseName = "contextOverlayHighlightList";
189+ const auto selectedItems = addSelectItemJobs(task, selectionBaseName, metas, opaques, transparents);
190+
191+ const auto outlineInputs = DrawHighlightTask::Inputs(items.get0(), deferredFramebuffer, primaryFramebuffer, deferredFrameTransform).asVarying();
192+ task.addJob<DrawHighlightTask>("DrawHighlight", outlineInputs);
193+
194+ task.addJob<EndGPURangeTimer>("HighlightRangeTimer", outlineRangeTimer);
185195
186196 { // DEbug the bounds of the rendered items, still look at the zbuffer
187197 task.addJob<DrawBounds>("DrawMetaBounds", metas);
@@ -191,6 +201,9 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 3 unmodified lines
191201 task.addJob<DrawBounds>("DrawLightBounds", lights);
192202 task.addJob<DrawBounds>("DrawZones", zones);
193203 task.addJob<DrawFrustums>("DrawFrustums");
204+
205+ // Render.getConfig("RenderMainView.DrawSelectionBounds").enabled = true
206+ task.addJob<DrawBounds>("DrawSelectionBounds", selectedItems);
194207 }
195208
196209 // Layered Overlays
@@ -237,9 +250,6 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 40 unmodified lines
237250 }
238251
239252 task.addJob<DebugZoneLighting>("DrawZoneStack", deferredFrameTransform);
240−
241− // Render.getConfig("RenderMainView.DrawSelectionBounds").enabled = true
242− task.addJob<DrawBounds>("DrawSelectionBounds", selectedItems);
243253 }
244254
245255 // AA job to be revisited
@@ -455,6 +465,7 @@ void Blit::run(const RenderContextPointer& renderContext, const gpu::Framebuffer · 209 unmodified lines
455465 auto blitFbo = renderArgs->_blitFramebuffer;
456466
457467 if (!blitFbo) {
468+ qCWarning(renderutils) << "Blit::run - no blit frame buffer.";
458469 return;
459470 }
460471