using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Renderer { public abstract class RendererBackedRenderPipelineAsset : ScriptableRenderPipelineAsset { protected RendererBackedRenderPipelineAsset() { } protected internal override ScriptableRenderPipeline CreatePipeline() { ScriptableRendererData rendererData = ResolveRendererData(); return rendererData != null ? new RendererDrivenRenderPipeline(rendererData) : null; } protected internal override void ConfigureCameraRenderRequest( ScriptableRenderPipelineCameraRequestContext context) { ScriptableRendererData rendererData = ResolveRendererData(); if (rendererData != null) { rendererData.ConfigureCameraRenderRequestInstance( context); } } protected internal override void ConfigureCameraFramePlan( ScriptableRenderPipelinePlanningContext context) { ScriptableRendererData rendererData = ResolveRendererData(); if (rendererData != null) { rendererData.ConfigureCameraFramePlanInstance( context); } } protected abstract ScriptableRendererData GetRendererData(); private ScriptableRendererData ResolveRendererData() { return GetRendererData(); } } }