History

Merge branch 'master' of git://github.com/highfidelity/hifi into bloom

Olivier Prat committed 9 years ago

Commit fcf1c302 parents 055270d ff36cbf454 files · +14270 −6319Browse files

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

Unified · Split

libraries/render-utils/src/RenderDeferredTask.cpp+51−12
@@ -40,6 +40,7 @@ · 39 unmodified lines
4040 #include "AntialiasingEffect.h"
4141 #include "ToneMappingEffect.h"
4242 #include "SubsurfaceScattering.h"
43+#include "DrawHaze.h"
4344 #include "OutlineEffect.h"
4445 #include "BloomEffect.h"
4546
@@ -146,11 +147,13 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 100 unmodified lines
146147 // Create the cluster grid of lights, cpu job for now
147148 const auto lightClusteringPassInputs = LightClusteringPass::Inputs(deferredFrameTransform, lightingModel, linearDepthTarget).asVarying();
148149 const auto lightClusters = task.addJob<LightClusteringPass>("LightClustering", lightClusteringPassInputs);
149−
150−
150+
151+ // Add haze model
152+ const auto hazeModel = task.addJob<FetchHazeStage>("HazeModel");
153+
151154 // DeferredBuffer is complete, now let's shade it into the LightingBuffer
152155 const auto deferredLightingInputs = RenderDeferred::Inputs(deferredFrameTransform, deferredFramebuffer, lightingModel,
153− surfaceGeometryFramebuffer, ambientOcclusionFramebuffer, scatteringResource, lightClusters).asVarying();
156+ surfaceGeometryFramebuffer, ambientOcclusionFramebuffer, scatteringResource, lightClusters, hazeModel).asVarying();
154157
155158 task.addJob<RenderDeferred>("RenderDeferred", deferredLightingInputs);
156159
@@ -166,7 +169,10 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 9 unmodified lines
166169 const auto debugLightClustersInputs = DebugLightClusters::Inputs(deferredFrameTransform, deferredFramebuffer, lightingModel, linearDepthTarget, lightClusters).asVarying();
167170 task.addJob<DebugLightClusters>("DebugLightClusters", debugLightClustersInputs);
168171 }
169−
172+
173+ const auto drawHazeInputs = render::Varying(DrawHaze::Inputs(hazeModel, lightingFramebuffer, linearDepthTarget, deferredFrameTransform, lightingFramebuffer));
174+ task.addJob<DrawHaze>("DrawHaze", drawHazeInputs);
175+
170176 const auto toneAndPostRangeTimer = task.addJob<BeginGPURangeTimer>("BeginToneAndPostRangeTimer", "PostToneOverlaysAntialiasing");
171177
172178 // Add bloom
@@ -191,15 +197,20 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 18 unmodified lines
191197 task.addJob<DrawBounds>("DrawZones", zones);
192198 }
193199
194− // Overlays
195− const auto overlayOpaquesInputs = DrawOverlay3D::Inputs(overlayOpaques, lightingModel).asVarying();
196− const auto overlayTransparentsInputs = DrawOverlay3D::Inputs(overlayTransparents, lightingModel).asVarying();
197− task.addJob<DrawOverlay3D>("DrawOverlay3DOpaque", overlayOpaquesInputs, true);
198− task.addJob<DrawOverlay3D>("DrawOverlay3DTransparent", overlayTransparentsInputs, false);
200+ // Layered Overlays
201+ const auto filteredOverlaysOpaque = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredOpaque", overlayOpaques, Item::LAYER_3D_FRONT);
202+ const auto filteredOverlaysTransparent = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredTransparent", overlayTransparents, Item::LAYER_3D_FRONT);
203+ const auto overlaysInFrontOpaque = filteredOverlaysOpaque.getN<FilterLayeredItems::Outputs>(0);
204+ const auto overlaysInFrontTransparent = filteredOverlaysTransparent.getN<FilterLayeredItems::Outputs>(0);
205+
206+ const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel).asVarying();
207+ const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel).asVarying();
208+ task.addJob<DrawOverlay3D>("DrawOverlayInFrontOpaque", overlayInFrontOpaquesInputs, true);
209+ task.addJob<DrawOverlay3D>("DrawOverlayInFrontTransparent", overlayInFrontTransparentsInputs, false);
199210
200− { // Debug the bounds of the rendered Overlay items, still look at the zbuffer
201− task.addJob<DrawBounds>("DrawOverlayOpaqueBounds", overlayOpaques);
202− task.addJob<DrawBounds>("DrawOverlayTransparentBounds", overlayTransparents);
211+ { // Debug the bounds of the rendered Overlay items that are marked drawInFront, still look at the zbuffer
212+ task.addJob<DrawBounds>("DrawOverlayInFrontOpaqueBounds", overlaysInFrontOpaque);
213+ task.addJob<DrawBounds>("DrawOverlayInFrontTransparentBounds", overlaysInFrontTransparent);
203214 }
204215
205216 // Debugging stages
@@ -238,6 +249,22 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 32 unmodified lines
238249 // AA job to be revisited
239250 task.addJob<Antialiasing>("Antialiasing", primaryFramebuffer);
240251
252+ // Composite the HUD and HUD overlays
253+ task.addJob<CompositeHUD>("HUD");
254+
255+ const auto overlaysHUDOpaque = filteredOverlaysOpaque.getN<FilterLayeredItems::Outputs>(1);
256+ const auto overlaysHUDTransparent = filteredOverlaysTransparent.getN<FilterLayeredItems::Outputs>(1);
257+
258+ const auto overlayHUDOpaquesInputs = DrawOverlay3D::Inputs(overlaysHUDOpaque, lightingModel).asVarying();
259+ const auto overlayHUDTransparentsInputs = DrawOverlay3D::Inputs(overlaysHUDTransparent, lightingModel).asVarying();
260+ task.addJob<DrawOverlay3D>("DrawOverlayHUDOpaque", overlayHUDOpaquesInputs, true);
261+ task.addJob<DrawOverlay3D>("DrawOverlayHUDTransparent", overlayHUDTransparentsInputs, false);
262+
263+ { // Debug the bounds of the rendered Overlay items that are marked drawHUDLayer, still look at the zbuffer
264+ task.addJob<DrawBounds>("DrawOverlayHUDOpaqueBounds", overlaysHUDOpaque);
265+ task.addJob<DrawBounds>("DrawOverlayHUDTransparentBounds", overlaysHUDTransparent);
266+ }
267+
241268 task.addJob<EndGPURangeTimer>("ToneAndPostRangeTimer", toneAndPostRangeTimer);
242269
243270 // Blit!
@@ -412,6 +439,18 @@ void DrawOverlay3D::run(const RenderContextPointer& renderContext, const Inputs& · 168 unmodified lines
412439 }
413440 }
414441
442+void CompositeHUD::run(const RenderContextPointer& renderContext) {
443+ assert(renderContext->args);
444+ assert(renderContext->args->_context);
445+
446+ // Grab the HUD texture
447+ gpu::doInBatch(renderContext->args->_context, [&](gpu::Batch& batch) {
448+ if (renderContext->args->_hudOperator) {
449+ renderContext->args->_hudOperator(batch, renderContext->args->_hudTexture, renderContext->args->_renderMode == RenderArgs::RenderMode::MIRROR_RENDER_MODE);
450+ }
451+ });
452+}
453+
415454 void Blit::run(const RenderContextPointer& renderContext, const gpu::FramebufferPointer& srcFramebuffer) {
416455 assert(renderContext->args);
417456 assert(renderContext->args->_context);