using System.Collections.Generic; using Unity.Collections; using Unity.Mathematics; namespace UnityEngine.Rendering.Universal { internal class DecalDrawErrorSystem : DecalDrawSystem { private DecalTechnique m_Technique; public DecalDrawErrorSystem(DecalEntityManager entityManager, DecalTechnique technique) : base("DecalDrawErrorSystem.Execute", entityManager) { m_Technique = technique; } protected override int GetPassIndex(DecalCachedChunk decalCachedChunk) { switch (m_Technique) { case DecalTechnique.DBuffer: return ((decalCachedChunk.passIndexDBuffer == -1) && (decalCachedChunk.passIndexEmissive == -1)) ? 0 : -1; case DecalTechnique.ScreenSpace: return decalCachedChunk.passIndexScreenSpace == -1 ? 0 : -1; case DecalTechnique.GBuffer: return decalCachedChunk.passIndexGBuffer == -1 ? 0 : -1; case DecalTechnique.Invalid: return 0; default: return 0; } } protected override Material GetMaterial(DecalEntityChunk decalEntityChunk) => m_EntityManager.errorMaterial; } }