History

wip hud layering and fix crashes

SamGondelman committed 9 years ago

Commit 477dfdf1 parent fa838e413 files · +112 −48Browse files

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

Unified · Split

libraries/render-utils/src/RenderDeferredTask.cpp+27−9
@@ -187,14 +187,19 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 186 unmodified lines
187187 }
188188
189189 // Overlays
190− const auto overlayOpaquesInputs = DrawOverlay3D::Inputs(overlayOpaques, lightingModel).asVarying();
191− const auto overlayTransparentsInputs = DrawOverlay3D::Inputs(overlayTransparents, lightingModel).asVarying();
192− task.addJob<DrawOverlay3D>("DrawOverlay3DOpaque", overlayOpaquesInputs, true);
193− task.addJob<DrawOverlay3D>("DrawOverlay3DTransparent", overlayTransparentsInputs, false);
194−
195− { // Debug the bounds of the rendered Overlay items, still look at the zbuffer
196− task.addJob<DrawBounds>("DrawOverlayOpaqueBounds", overlayOpaques);
197− task.addJob<DrawBounds>("DrawOverlayTransparentBounds", overlayTransparents);
190+ const auto filteredOverlaysOpaque = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredOpaque", overlayOpaques, Item::LAYER_3D_FRONT);
191+ const auto filteredOverlaysTransparent = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredTransparent", overlayTransparents, Item::LAYER_3D_FRONT);
192+ const auto overlaysInFrontOpaque = filteredOverlaysOpaque.getN<FilterLayeredItems::Outputs>(0);
193+ const auto overlaysInFrontTransparent = filteredOverlaysTransparent.getN<FilterLayeredItems::Outputs>(0);
194+
195+ const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel).asVarying();
196+ const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel).asVarying();
197+ task.addJob<DrawOverlay3D>("DrawOverlayInFrontOpaque", overlayInFrontOpaquesInputs, true);
198+ task.addJob<DrawOverlay3D>("DrawOverlayInFrontTransparent", overlayInFrontTransparentsInputs, false);
199+
200+ { // Debug the bounds of the rendered Overlay items that are marked drawInFront, still look at the zbuffer
201+ task.addJob<DrawBounds>("DrawOverlayInFrontOpaqueBounds", overlaysInFrontOpaque);
202+ task.addJob<DrawBounds>("DrawOverlayInFrontTransparentBounds", overlaysInFrontTransparent);
198203 }
199204
200205 // Debugging stages
@@ -233,9 +238,22 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 32 unmodified lines
233238 // AA job to be revisited
234239 task.addJob<Antialiasing>("Antialiasing", primaryFramebuffer);
235240
236− // Composite the HUD
241+ // Composite the HUD and HUD overlays
237242 task.addJob<CompositeHUD>("HUD");
238243
244+ const auto overlaysHUDOpaque = filteredOverlaysOpaque.getN<FilterLayeredItems::Outputs>(1);
245+ const auto overlaysHUDTransparent = filteredOverlaysTransparent.getN<FilterLayeredItems::Outputs>(1);
246+
247+ const auto overlayHUDOpaquesInputs = DrawOverlay3D::Inputs(overlaysHUDOpaque, lightingModel).asVarying();
248+ const auto overlayHUDTransparentsInputs = DrawOverlay3D::Inputs(overlaysHUDTransparent, lightingModel).asVarying();
249+ task.addJob<DrawOverlay3D>("DrawOverlayHUDOpaque", overlayHUDOpaquesInputs, true);
250+ task.addJob<DrawOverlay3D>("DrawOverlayHUDTransparent", overlayHUDTransparentsInputs, false);
251+
252+ { // Debug the bounds of the rendered Overlay items that are marked drawHUDLayer, still look at the zbuffer
253+ task.addJob<DrawBounds>("DrawOverlayHUDOpaqueBounds", overlaysHUDOpaque);
254+ task.addJob<DrawBounds>("DrawOverlayHUDOpaqueBounds", overlaysHUDTransparent);
255+ }
256+
239257 task.addJob<EndGPURangeTimer>("ToneAndPostRangeTimer", toneAndPostRangeTimer);
240258
241259 // Blit!