| 1372 | } |
| 1373 | |
| 1374 | void Renderer::RenderFreezeMode(float interpFactor, bool staticBackground) |
| 1375 | { |
| 1376 | if (staticBackground) |
| 1377 | { |
| 1378 | // Set basic render states. |
| 1379 | SetBlendMode(BlendMode::Opaque); |
| 1380 | SetCullMode(CullMode::CounterClockwise); |
| 1381 | |
| 1382 | // Clear screen. |
| 1383 | _context->ClearRenderTargetView(_renderTarget.RenderTargetView.Get(), Colors::Black); |
| 1384 | _context->ClearRenderTargetView(_emissiveAndRoughnessRenderTarget.RenderTargetView.Get(), Colors::Transparent); |
| 1385 | _context->ClearDepthStencilView(_renderTarget.DepthStencilView.Get(), D3D11_CLEAR_STENCIL | D3D11_CLEAR_DEPTH, 1.0f, 0); |
| 1386 | |
| 1387 | // Bind and clear render target. |
| 1388 | ID3D11RenderTargetView* pRenderViewPtrs[2]; |
| 1389 | pRenderViewPtrs[0] = _renderTarget.RenderTargetView.Get(); |
| 1390 | pRenderViewPtrs[1] = _emissiveAndRoughnessRenderTarget.RenderTargetView.Get(); |
| 1391 | |
| 1392 | // Bind render target. |
| 1393 | _context->OMSetRenderTargets(2, &pRenderViewPtrs[0], _renderTarget.DepthStencilView.Get()); |
| 1394 | _context->RSSetViewports(1, &_viewport); |
| 1395 | ResetScissor(); |
| 1396 | |
| 1397 | // Draw full screen background. |
| 1398 | DrawFullScreenQuad(_dumpScreenRenderTarget.ShaderResourceView.Get(), Vector3::One); |
| 1399 | } |
| 1400 | else |
| 1401 | { |
| 1402 | InterpolateCamera(interpFactor); |
| 1403 | RenderScene(&_backBuffer, _gameCamera, SceneRenderMode::NoHud); |
| 1404 | } |
| 1405 | |
| 1406 | // Draw display sprites sorted by priority. |
| 1407 | CollectDisplaySprites(_gameCamera); |
| 1408 | DrawDisplaySprites(_gameCamera, false); |
| 1409 | DrawDisplayItems(); |
| 1410 | DrawDisplaySprites(_gameCamera, true); |
| 1411 | DrawAllStrings(); |
| 1412 | |
| 1413 | if (staticBackground) |
| 1414 | { |
| 1415 | BindConstantBufferVS(ConstantBufferRegister::PostProcess, _cbPostProcessBuffer.get()); |
| 1416 | BindConstantBufferPS(ConstantBufferRegister::PostProcess, _cbPostProcessBuffer.get()); |
| 1417 | |
| 1418 | ApplyGlow(&_renderTarget, _gameCamera); |
| 1419 | ApplyAntialiasing(&_renderTarget, _gameCamera); |
| 1420 | CopyRenderTarget(&_renderTarget, &_backBuffer, _gameCamera); |
| 1421 | } |
| 1422 | |
| 1423 | ClearScene(); |
| 1424 | |
| 1425 | _context->ClearState(); |
| 1426 | _swapChain->Present(1, 0); |
| 1427 | } |
| 1428 | |
| 1429 | void Renderer::RenderLoadingScreen(float percentage) |
| 1430 | { |