| 586 | } |
| 587 | |
| 588 | void BakingLab::Render(const Timer& timer) |
| 589 | { |
| 590 | if(AppSettings::MSAAMode.Changed()) |
| 591 | CreateRenderTargets(); |
| 592 | |
| 593 | ID3D11DeviceContextPtr context = deviceManager.ImmediateContext(); |
| 594 | |
| 595 | MeshBakerStatus status = meshBaker.Update(unJitteredCamera, colorTargetMSAA.Width, colorTargetMSAA.Height, |
| 596 | context, &sceneModels[AppSettings::CurrentScene]); |
| 597 | |
| 598 | if(AppSettings::ShowGroundTruth) |
| 599 | { |
| 600 | ID3D11RenderTargetView* rtvs[1] = { colorTargetMSAA.RTView }; |
| 601 | context->OMSetRenderTargets(1, rtvs, nullptr); |
| 602 | |
| 603 | SetViewport(context, colorTargetMSAA.Width, colorTargetMSAA.Height); |
| 604 | |
| 605 | spriteRenderer.Begin(context, SpriteRenderer::Point, SpriteRenderer::OpaqueBlend); |
| 606 | spriteRenderer.Render(status.GroundTruth, Float4x4()); |
| 607 | spriteRenderer.End(); |
| 608 | |
| 609 | rtvs[0] = nullptr; |
| 610 | context->OMSetRenderTargets(1, rtvs, nullptr); |
| 611 | |
| 612 | float clearColor[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; |
| 613 | context->ClearRenderTargetView(velocityTargetMSAA.RTView, clearColor); |
| 614 | } |
| 615 | else |
| 616 | { |
| 617 | RenderMainPass(status); |
| 618 | RenderBackgroundVelocity(); |
| 619 | } |
| 620 | |
| 621 | RenderAA(); |
| 622 | |
| 623 | if(AppSettings::SaveEXRScreenshot) |
| 624 | SaveEXRScreenshot(window.GetHwnd(), colorResolveTarget.SRView); |
| 625 | |
| 626 | { |
| 627 | // Kick off post-processing |
| 628 | PIXEvent ppEvent(L"Post Processing"); |
| 629 | postProcessor.Render(context, colorResolveTarget.SRView, depthBuffer.SRView, camera, |
| 630 | deviceManager.BackBuffer(), timer.DeltaSecondsF()); |
| 631 | } |
| 632 | |
| 633 | ID3D11RenderTargetView* renderTargets[1] = { deviceManager.BackBuffer() }; |
| 634 | context->OMSetRenderTargets(1, renderTargets, NULL); |
| 635 | |
| 636 | SetViewport(context, deviceManager.BackBufferWidth(), deviceManager.BackBufferHeight()); |
| 637 | |
| 638 | RenderHUD(timer, status.GroundTruthProgress, status.BakeProgress, status.GroundTruthSampleCount); |
| 639 | |
| 640 | ++frameCount; |
| 641 | } |
| 642 | |
| 643 | void BakingLab::RenderMainPass(const MeshBakerStatus& status) |
| 644 | { |
nothing calls this directly
no test coverage detected