using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { public abstract class RendererDrivenRenderPipeline : ScriptableRenderPipeline { protected RendererDrivenRenderPipeline() { } protected sealed override bool SupportsStageRenderGraph( CameraFrameStage stage) { return SupportsRendererRecording( new RendererRecordingContext(stage)); } protected sealed override bool RecordStageRenderGraph( ScriptableRenderContext context) { if (context == null) { return false; } return RecordRenderer( new RendererRecordingContext(context)); } protected virtual bool SupportsRendererRecording( RendererRecordingContext context) { ScriptableRenderer renderer = ResolveRenderer(context); return renderer != null && renderer.SupportsRendererRecording(context); } protected virtual bool RecordRenderer( RendererRecordingContext context) { ScriptableRenderer renderer = ResolveRenderer(context); return renderer != null && renderer.RecordRenderer(context); } protected abstract ScriptableRenderer ResolveRenderer( RendererRecordingContext context); } }