using Gameplay.Performance; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; namespace Gameplay.Vehicle.TireMark { // ReSharper disable once InconsistentNaming public class DrawTireMarkRPF : ScriptableRendererFeature { private CustomPass _pass; public override void Create() { _pass = new CustomPass(); _pass.renderPassEvent = RenderPassEvent.BeforeRendering; } public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { renderer.EnqueuePass(_pass); } class CustomPass : ScriptableRenderPass { public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { if (renderingData.cameraData.renderType != CameraRenderType.Base) { return; } if (TireMarkManager.instance == null) return; if (TireMarkManager.instance.drawDatas.Count == 0) return; if (!PerformanceManager.instance.data.enableTireMark) return; var cmd = CommandBufferPool.Get("DrawTireMark"); // using (new ProfilingScope(cmd, new ProfilingSampler("DrawTireMark"))) { TireMarkManager.instance.DrawDatas(cmd); } context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } } } }