refactor(srp): collapse universal pipeline wrappers

This commit is contained in:
2026-04-19 15:33:03 +08:00
parent 237a628e2a
commit dc13b56cf3
9 changed files with 127 additions and 96 deletions

View File

@@ -1,42 +0,0 @@
using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public abstract class RendererBackedRenderPipelineAsset
: ScriptableRenderPipelineAsset
{
protected RendererBackedRenderPipelineAsset()
{
}
protected override ScriptableRenderPipeline CreatePipeline()
{
ScriptableRendererData rendererData =
ResolveRendererData();
return rendererData != null
? new RendererDrivenRenderPipeline(rendererData)
: null;
}
protected override void ConfigureCameraRenderRequest(
CameraRenderRequestContext context)
{
ScriptableRendererData rendererData =
ResolveRendererData();
if (rendererData != null)
{
rendererData.ConfigureCameraRenderRequestInstance(
context);
}
}
protected abstract ScriptableRendererData GetRendererData();
private ScriptableRendererData ResolveRendererData()
{
return GetRendererData();
}
}
}

View File

@@ -1,25 +0,0 @@
using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public class RendererDrivenRenderPipeline
: RendererBackedRenderPipeline
{
private readonly ScriptableRendererData m_rendererData;
public RendererDrivenRenderPipeline(
ScriptableRendererData rendererData)
{
m_rendererData = rendererData;
}
protected internal override ScriptableRenderer CreateRenderer()
{
return m_rendererData != null
? m_rendererData.CreateRendererInstance()
: null;
}
}
}

View File

@@ -53,7 +53,7 @@ namespace XCEngine.Rendering.Universal
{
}
internal bool SupportsStageRenderGraph(
public bool SupportsStageRenderGraph(
CameraFrameStage stage)
{
RenderingData renderingData = new RenderingData(stage);
@@ -71,7 +71,7 @@ namespace XCEngine.Rendering.Universal
return false;
}
internal bool RecordStageRenderGraph(
public bool RecordStageRenderGraph(
ScriptableRenderContext context)
{
if (context == null)

View File

@@ -3,18 +3,16 @@ using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public abstract class RendererBackedRenderPipeline
internal sealed class UniversalRenderPipeline
: ScriptableRenderPipeline
{
private readonly ScriptableRendererData m_rendererData;
private ScriptableRenderer m_renderer;
protected RendererBackedRenderPipeline()
public UniversalRenderPipeline(
ScriptableRendererData rendererData)
{
}
protected internal virtual ScriptableRenderer CreateRenderer()
{
return null;
m_rendererData = rendererData;
}
protected override bool SupportsStageRenderGraph(
@@ -33,18 +31,16 @@ namespace XCEngine.Rendering.Universal
renderer.RecordStageRenderGraph(context);
}
protected ScriptableRenderer renderer =>
GetOrCreateRenderer();
private ScriptableRenderer GetOrCreateRenderer()
{
if (m_renderer == null)
if (m_renderer == null &&
m_rendererData != null)
{
m_renderer = CreateRenderer();
m_renderer =
m_rendererData.CreateRendererInstance();
}
return m_renderer;
}
}
}

View File

@@ -4,12 +4,33 @@ using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public class UniversalRenderPipelineAsset
: RendererBackedRenderPipelineAsset
: ScriptableRenderPipelineAsset
{
public UniversalRendererData rendererData =
new UniversalRendererData();
protected override ScriptableRendererData GetRendererData()
protected override ScriptableRenderPipeline CreatePipeline()
{
ScriptableRendererData resolvedRendererData =
ResolveRendererData();
return resolvedRendererData != null
? new UniversalRenderPipeline(resolvedRendererData)
: null;
}
protected override void ConfigureCameraRenderRequest(
CameraRenderRequestContext context)
{
ScriptableRendererData resolvedRendererData =
ResolveRendererData();
if (resolvedRendererData != null)
{
resolvedRendererData.ConfigureCameraRenderRequestInstance(
context);
}
}
private ScriptableRendererData ResolveRendererData()
{
if (rendererData == null)
{