Files
PrinceOfGlory/Packages/Custom/com.unity.render-pipelines.universal@14.0.9/Runtime/Decal/DBuffer/DecalForwardEmissivePass.cs
kridoo 6e91a0c7f0 111
2025-09-15 17:32:08 +08:00

48 lines
2.0 KiB
C#

using System.Collections.Generic;
namespace UnityEngine.Rendering.Universal
{
internal class DecalDrawFowardEmissiveSystem : DecalDrawSystem
{
public DecalDrawFowardEmissiveSystem(DecalEntityManager entityManager) : base("DecalDrawFowardEmissiveSystem.Execute", entityManager) { }
protected override int GetPassIndex(DecalCachedChunk decalCachedChunk) => decalCachedChunk.passIndexEmissive;
}
internal class DecalForwardEmissivePass : ScriptableRenderPass
{
private FilteringSettings m_FilteringSettings;
private ProfilingSampler m_ProfilingSampler;
private List<ShaderTagId> m_ShaderTagIdList;
private DecalDrawFowardEmissiveSystem m_DrawSystem;
public DecalForwardEmissivePass(DecalDrawFowardEmissiveSystem drawSystem)
{
renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
ConfigureInput(ScriptableRenderPassInput.Depth); // Require depth
m_DrawSystem = drawSystem;
m_ProfilingSampler = new ProfilingSampler("Decal Forward Emissive Render");
m_FilteringSettings = new FilteringSettings(RenderQueueRange.opaque, -1);
m_ShaderTagIdList = new List<ShaderTagId>();
m_ShaderTagIdList.Add(new ShaderTagId(DecalShaderPassNames.DecalMeshForwardEmissive));
}
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
{
SortingCriteria sortingCriteria = renderingData.cameraData.defaultOpaqueSortFlags;
DrawingSettings drawingSettings = CreateDrawingSettings(m_ShaderTagIdList, ref renderingData, sortingCriteria);
var cmd = renderingData.commandBuffer;
using (new ProfilingScope(cmd, m_ProfilingSampler))
{
context.ExecuteCommandBuffer(cmd);
cmd.Clear();
m_DrawSystem.Execute(cmd);
context.DrawRenderers(renderingData.cullResults, ref drawingSettings, ref m_FilteringSettings);
}
}
}
}