using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { public sealed class DrawObjectsPass : ScriptableRenderPass { private SceneRenderPhase m_scenePhase = SceneRenderPhase.Opaque; private RendererListDesc m_rendererListDesc = RendererListDesc.CreateDefault( RendererListType.Opaque); private DrawingSettings m_drawingSettings = DrawingSettings.CreateDefault(); public DrawObjectsPass( RenderPassEvent passEvent, SceneRenderPhase scenePhase, RendererListDesc rendererListDesc) : this( passEvent, scenePhase, rendererListDesc, DrawingSettings.CreateDefault()) { } public DrawObjectsPass( RenderPassEvent passEvent, SceneRenderPhase scenePhase, RendererListDesc rendererListDesc, DrawingSettings drawingSettings) { Configure( passEvent, scenePhase, rendererListDesc, drawingSettings); } public void Configure( RenderPassEvent passEvent, SceneRenderPhase scenePhase, RendererListDesc rendererListDesc) { Configure( passEvent, scenePhase, rendererListDesc, DrawingSettings.CreateDefault()); } public void Configure( RenderPassEvent passEvent, SceneRenderPhase scenePhase, RendererListDesc rendererListDesc, DrawingSettings drawingSettings) { renderPassEvent = passEvent; m_scenePhase = scenePhase; m_rendererListDesc = rendererListDesc; m_drawingSettings = drawingSettings; } protected override bool RecordRenderGraph( ScriptableRenderContext context, RenderingData renderingData) { return context != null && renderingData != null && renderingData.isMainSceneStage && context.DrawRenderers( m_scenePhase, m_rendererListDesc, m_drawingSettings); } } }