| 1523 | } |
| 1524 | |
| 1525 | void EveSpaceScene::PrepareRaytracedShadows( Tr2RenderContext& renderContext ) |
| 1526 | { |
| 1527 | if( m_objects.empty() ) |
| 1528 | { |
| 1529 | return; |
| 1530 | } |
| 1531 | |
| 1532 | if( !m_rtManager ) |
| 1533 | { |
| 1534 | return; |
| 1535 | } |
| 1536 | |
| 1537 | CCP_STATS_SCOPED_TIME( raytracedShadowsTime ); |
| 1538 | m_rtManager->GetGeometry().BeginSceneUpdate(); |
| 1539 | |
| 1540 | ProcessOutdatedRTAnimations( renderContext ); |
| 1541 | |
| 1542 | auto& shadowCasters = m_componentRegistry->GetComponents<IEveShadowCaster>(); |
| 1543 | Tr2ParallelDo( begin( shadowCasters ), end( shadowCasters ), [&]( auto caster ) { |
| 1544 | caster->PushRtGeometry( *m_rtManager ); |
| 1545 | } ); |
| 1546 | |
| 1547 | Tr2RtShaderTableDescriptionAL* shaderTableDescs[3]; |
| 1548 | Tr2RaytracingPipelineStateManager* pipelineManagers[3]; |
| 1549 | shaderTableDescs[0] = &m_rtManager->m_shaderTableDesc; |
| 1550 | pipelineManagers[0] = &m_rtManager->m_pipelineManager; |
| 1551 | int i = 1; |
| 1552 | if( auto lightManager = Tr2LightManager::GetInstance() ) |
| 1553 | { |
| 1554 | shaderTableDescs[i] = lightManager->GetRaytracingShaderTableDesc(); |
| 1555 | pipelineManagers[i] = lightManager->GetRaytracingPipelineManager(); |
| 1556 | i++; |
| 1557 | } |
| 1558 | if( m_volumetricsRenderer ) |
| 1559 | { |
| 1560 | shaderTableDescs[i] = &m_volumetricsRenderer->m_shaderTableDesc; |
| 1561 | pipelineManagers[i] = &m_volumetricsRenderer->m_pipelineManager; |
| 1562 | i++; |
| 1563 | } |
| 1564 | m_rtManager->GetGeometry().EndSceneUpdate( renderContext, i, shaderTableDescs, pipelineManagers ); |
| 1565 | } |
| 1566 | |
| 1567 | void EveSpaceScene::UpdateImpostors( Tr2RenderContext& renderContext ) |
| 1568 | { |
nothing calls this directly
no test coverage detected