Suspended ray tracing for DiffuseProbeGrids that are not visible, either off-screen or behind an occlusion culling plane
Added a culling flag that indicates if the cullable object is currently visible in any view Signed-off-by: dmcdiar <dmcdiar@amazon.com>
This commit is contained in:
+32
@@ -175,6 +175,27 @@ namespace AZ
|
||||
}
|
||||
}
|
||||
|
||||
void DiffuseProbeGridFeatureProcessor::OnBeginPrepareRender()
|
||||
{
|
||||
for (auto& diffuseProbeGrid : m_realTimeDiffuseProbeGrids)
|
||||
{
|
||||
diffuseProbeGrid->ResetCullingVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
void DiffuseProbeGridFeatureProcessor::OnEndPrepareRender()
|
||||
{
|
||||
// re-build the list of visible real-time diffuse probe grids
|
||||
m_visibleRealTimeDiffuseProbeGrids.clear();
|
||||
for (auto& diffuseProbeGrid : m_realTimeDiffuseProbeGrids)
|
||||
{
|
||||
if (diffuseProbeGrid->GetIsVisible())
|
||||
{
|
||||
m_visibleRealTimeDiffuseProbeGrids.push_back(diffuseProbeGrid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DiffuseProbeGridHandle DiffuseProbeGridFeatureProcessor::AddProbeGrid(const AZ::Transform& transform, const AZ::Vector3& extents, const AZ::Vector3& probeSpacing)
|
||||
{
|
||||
AZStd::shared_ptr<DiffuseProbeGrid> diffuseProbeGrid = AZStd::make_shared<DiffuseProbeGrid>();
|
||||
@@ -215,6 +236,17 @@ namespace AZ
|
||||
m_realTimeDiffuseProbeGrids.erase(itEntry);
|
||||
}
|
||||
|
||||
// remove from side list of visible real-time grids
|
||||
itEntry = AZStd::find_if(m_visibleRealTimeDiffuseProbeGrids.begin(), m_visibleRealTimeDiffuseProbeGrids.end(), [&](AZStd::shared_ptr<DiffuseProbeGrid> const& entry)
|
||||
{
|
||||
return (entry == probeGrid);
|
||||
});
|
||||
|
||||
if (itEntry != m_visibleRealTimeDiffuseProbeGrids.end())
|
||||
{
|
||||
m_visibleRealTimeDiffuseProbeGrids.erase(itEntry);
|
||||
}
|
||||
|
||||
probeGrid = nullptr;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user