using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { internal sealed class UniversalRenderPipeline : ScriptableRenderPipeline { private readonly ScriptableRendererData m_rendererData; private ScriptableRenderer m_renderer; public UniversalRenderPipeline( ScriptableRendererData rendererData) { m_rendererData = rendererData; } protected override bool SupportsStageRenderGraph( CameraFrameStage stage) { ScriptableRenderer renderer = GetOrCreateRenderer(); return renderer != null && renderer.SupportsStageRenderGraph(stage); } protected override bool RecordStageRenderGraph( ScriptableRenderContext context) { ScriptableRenderer renderer = GetOrCreateRenderer(); return renderer != null && renderer.RecordStageRenderGraph(context); } private ScriptableRenderer GetOrCreateRenderer() { if (m_renderer == null && m_rendererData != null) { m_renderer = m_rendererData.CreateRendererInstance(); } return m_renderer; } } }