forked from BilalY/Rasagar
39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
|
namespace UnityEngine.Rendering.Universal
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// Writes culling results into <see cref="DecalCulledChunk"/>.
|
||
|
/// </summary>
|
||
|
internal class DecalUpdateCulledSystem
|
||
|
{
|
||
|
private DecalEntityManager m_EntityManager;
|
||
|
private ProfilingSampler m_Sampler;
|
||
|
|
||
|
public DecalUpdateCulledSystem(DecalEntityManager entityManager)
|
||
|
{
|
||
|
m_EntityManager = entityManager;
|
||
|
m_Sampler = new ProfilingSampler("DecalUpdateCulledSystem.Execute");
|
||
|
}
|
||
|
|
||
|
public void Execute()
|
||
|
{
|
||
|
using (new ProfilingScope(m_Sampler))
|
||
|
{
|
||
|
for (int i = 0; i < m_EntityManager.chunkCount; ++i)
|
||
|
Execute(m_EntityManager.culledChunks[i], m_EntityManager.culledChunks[i].count);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void Execute(DecalCulledChunk culledChunk, int count)
|
||
|
{
|
||
|
if (count == 0)
|
||
|
return;
|
||
|
|
||
|
culledChunk.currentJobHandle.Complete();
|
||
|
|
||
|
CullingGroup cullingGroup = culledChunk.cullingGroups;
|
||
|
culledChunk.visibleDecalCount = cullingGroup.QueryIndices(true, culledChunk.visibleDecalIndexArray, 0);
|
||
|
culledChunk.visibleDecalIndices.CopyFrom(culledChunk.visibleDecalIndexArray);
|
||
|
}
|
||
|
}
|
||
|
}
|