Showing the changes to libraries/render-utils/src/RenderDeferredTask.cpp (1 of 244 files). Show all
Unified · Split
| @@ -214,38 +214,27 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 213 unmodified lines | |||
| 214 | task.addJob<DrawBounds>("DrawZones", zones); | 214 | task.addJob<DrawBounds>("DrawZones", zones); |
| 215 | const auto frustums = task.addJob<ExtractFrustums>("ExtractFrustums"); | 215 | const auto frustums = task.addJob<ExtractFrustums>("ExtractFrustums"); |
| 216 | const auto viewFrustum = frustums.getN<ExtractFrustums::Output>(ExtractFrustums::VIEW_FRUSTUM); | 216 | const auto viewFrustum = frustums.getN<ExtractFrustums::Output>(ExtractFrustums::VIEW_FRUSTUM); |
| 217 | const auto shadowFrustum = frustums.getN<ExtractFrustums::Output>(ExtractFrustums::SHADOW_FRUSTUM); | ||
| 218 | task.addJob<DrawFrustum>("DrawViewFrustum", viewFrustum, glm::vec3(1.0f, 1.0f, 0.0f)); | 217 | task.addJob<DrawFrustum>("DrawViewFrustum", viewFrustum, glm::vec3(1.0f, 1.0f, 0.0f)); |
| 219 | task.addJob<DrawFrustum>("DrawShadowFrustum", shadowFrustum, glm::vec3(0.0f, 0.0f, 1.0f)); | 218 | for (auto i = 0; i < ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT; i++) { |
| 219 | const auto shadowFrustum = frustums.getN<ExtractFrustums::Output>(ExtractFrustums::SHADOW_CASCADE0_FRUSTUM+i); | ||
| 220 | float tint = 1.0f - i / float(ExtractFrustums::SHADOW_CASCADE_FRUSTUM_COUNT - 1); | ||
| 221 | char jobName[64]; | ||
| 222 | sprintf(jobName, "DrawShadowFrustum%d", i); | ||
| 223 | task.addJob<DrawFrustum>(jobName, shadowFrustum, glm::vec3(0.0f, tint, 1.0f)); | ||
| 224 | } | ||
| 220 | 225 | ||
| 221 | // Render.getConfig("RenderMainView.DrawSelectionBounds").enabled = true | 226 | // Render.getConfig("RenderMainView.DrawSelectionBounds").enabled = true |
| 222 | task.addJob<DrawBounds>("DrawSelectionBounds", selectedItems); | 227 | task.addJob<DrawBounds>("DrawSelectionBounds", selectedItems); |
| 223 | } | 228 | } |
| 224 | 229 | ||
| 225 | // Layered Overlays | ||
| 226 | const auto filteredOverlaysOpaque = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredOpaque", overlayOpaques, Item::LAYER_3D_FRONT); | ||
| 227 | const auto filteredOverlaysTransparent = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredTransparent", overlayTransparents, Item::LAYER_3D_FRONT); | ||
| 228 | const auto overlaysInFrontOpaque = filteredOverlaysOpaque.getN<FilterLayeredItems::Outputs>(0); | ||
| 229 | const auto overlaysInFrontTransparent = filteredOverlaysTransparent.getN<FilterLayeredItems::Outputs>(0); | ||
| 230 | |||
| 231 | const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel).asVarying(); | ||
| 232 | const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel).asVarying(); | ||
| 233 | task.addJob<DrawOverlay3D>("DrawOverlayInFrontOpaque", overlayInFrontOpaquesInputs, true); | ||
| 234 | task.addJob<DrawOverlay3D>("DrawOverlayInFrontTransparent", overlayInFrontTransparentsInputs, false); | ||
| 235 | |||
| 236 | { // Debug the bounds of the rendered Overlay items that are marked drawInFront, still look at the zbuffer | ||
| 237 | task.addJob<DrawBounds>("DrawOverlayInFrontOpaqueBounds", overlaysInFrontOpaque); | ||
| 238 | task.addJob<DrawBounds>("DrawOverlayInFrontTransparentBounds", overlaysInFrontTransparent); | ||
| 239 | } | ||
| 240 | |||
| 241 | // AA job to be revisited | 230 | // AA job to be revisited |
| 242 | const auto antialiasingInputs = Antialiasing::Inputs(deferredFrameTransform, primaryFramebuffer, linearDepthTarget, velocityBuffer).asVarying(); | 231 | const auto antialiasingInputs = Antialiasing::Inputs(deferredFrameTransform, primaryFramebuffer, linearDepthTarget, velocityBuffer).asVarying(); |
| 243 | task.addJob<Antialiasing>("Antialiasing", antialiasingInputs); | 232 | task.addJob<Antialiasing>("Antialiasing", antialiasingInputs); |
| 244 | 233 | ||
| 245 | // Debugging stages | 234 | // Debugging stages |
| 246 | { | 235 | { |
| 247 | // Debugging Deferred buffer job | 236 | // Debugging Deferred buffer job |
| 248 | const auto debugFramebuffers = render::Varying(DebugDeferredBuffer::Inputs(deferredFramebuffer, linearDepthTarget, surfaceGeometryFramebuffer, ambientOcclusionFramebuffer, velocityBuffer)); | 237 | const auto debugFramebuffers = render::Varying(DebugDeferredBuffer::Inputs(deferredFramebuffer, linearDepthTarget, surfaceGeometryFramebuffer, ambientOcclusionFramebuffer, velocityBuffer, deferredFrameTransform)); |
| 249 | task.addJob<DebugDeferredBuffer>("DebugDeferredBuffer", debugFramebuffers); | 238 | task.addJob<DebugDeferredBuffer>("DebugDeferredBuffer", debugFramebuffers); |
| 250 | 239 | ||
| 251 | const auto debugSubsurfaceScatteringInputs = DebugSubsurfaceScattering::Inputs(deferredFrameTransform, deferredFramebuffer, lightingModel, | 240 | const auto debugSubsurfaceScatteringInputs = DebugSubsurfaceScattering::Inputs(deferredFrameTransform, deferredFramebuffer, lightingModel, |
| @@ -272,6 +261,22 @@ void RenderDeferredTask::build(JobModel& task, const render::Varying& input, ren · 20 unmodified lines | |||
| 272 | task.addJob<DebugZoneLighting>("DrawZoneStack", deferredFrameTransform); | 261 | task.addJob<DebugZoneLighting>("DrawZoneStack", deferredFrameTransform); |
| 273 | } | 262 | } |
| 274 | 263 | ||
| 264 | // Layered Overlays | ||
| 265 | const auto filteredOverlaysOpaque = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredOpaque", overlayOpaques, Item::LAYER_3D_FRONT); | ||
| 266 | const auto filteredOverlaysTransparent = task.addJob<FilterLayeredItems>("FilterOverlaysLayeredTransparent", overlayTransparents, Item::LAYER_3D_FRONT); | ||
| 267 | const auto overlaysInFrontOpaque = filteredOverlaysOpaque.getN<FilterLayeredItems::Outputs>(0); | ||
| 268 | const auto overlaysInFrontTransparent = filteredOverlaysTransparent.getN<FilterLayeredItems::Outputs>(0); | ||
| 269 | |||
| 270 | const auto overlayInFrontOpaquesInputs = DrawOverlay3D::Inputs(overlaysInFrontOpaque, lightingModel).asVarying(); | ||
| 271 | const auto overlayInFrontTransparentsInputs = DrawOverlay3D::Inputs(overlaysInFrontTransparent, lightingModel).asVarying(); | ||
| 272 | task.addJob<DrawOverlay3D>("DrawOverlayInFrontOpaque", overlayInFrontOpaquesInputs, true); | ||
| 273 | task.addJob<DrawOverlay3D>("DrawOverlayInFrontTransparent", overlayInFrontTransparentsInputs, false); | ||
| 274 | |||
| 275 | { // Debug the bounds of the rendered Overlay items that are marked drawInFront, still look at the zbuffer | ||
| 276 | task.addJob<DrawBounds>("DrawOverlayInFrontOpaqueBounds", overlaysInFrontOpaque); | ||
| 277 | task.addJob<DrawBounds>("DrawOverlayInFrontTransparentBounds", overlaysInFrontTransparent); | ||
| 278 | } | ||
| 279 | |||
| 275 | // Composite the HUD and HUD overlays | 280 | // Composite the HUD and HUD overlays |
| 276 | task.addJob<CompositeHUD>("HUD"); | 281 | task.addJob<CompositeHUD>("HUD"); |
| 277 | 282 | ||
| @@ -565,17 +570,20 @@ void ExtractFrustums::run(const render::RenderContextPointer& renderContext, Out · 287 unmodified lines | |||
| 565 | } | 570 | } |
| 566 | 571 | ||
| 567 | // Return shadow frustum | 572 | // Return shadow frustum |
| 568 | auto& shadowFrustum = output[SHADOW_FRUSTUM].edit<ViewFrustumPointer>(); | ||
| 569 | auto lightStage = args->_scene->getStage<LightStage>(LightStage::getName()); | 573 | auto lightStage = args->_scene->getStage<LightStage>(LightStage::getName()); |
| 570 | if (lightStage) { | 574 | for (auto i = 0; i < SHADOW_CASCADE_FRUSTUM_COUNT; i++) { |
| 571 | auto globalShadow = lightStage->getCurrentKeyShadow(); | 575 | auto& shadowFrustum = output[SHADOW_CASCADE0_FRUSTUM+i].edit<ViewFrustumPointer>(); |
| 572 | 576 | if (lightStage) { | |
| 573 | if (globalShadow) { | 577 | auto globalShadow = lightStage->getCurrentKeyShadow(); |
| 574 | shadowFrustum = globalShadow->getFrustum(); | 578 | |
| 579 | if (globalShadow && i<(int)globalShadow->getCascadeCount()) { | ||
| 580 | auto& cascade = globalShadow->getCascade(i); | ||
| 581 | shadowFrustum = cascade.getFrustum(); | ||
| 582 | } else { | ||
| 583 | shadowFrustum.reset(); | ||
| 584 | } | ||
| 575 | } else { | 585 | } else { |
| 576 | shadowFrustum.reset(); | 586 | shadowFrustum.reset(); |
| 577 | } | 587 | } |
| 578 | } else { | ||
| 579 | shadowFrustum.reset(); | ||
| 580 | } | 588 | } |
| 581 | } | 589 | } |