refactor(srp): formalize universal renderer selection and caching
This commit is contained in:
@@ -6,19 +6,18 @@ namespace XCEngine.Rendering.Universal
|
||||
internal sealed class UniversalRenderPipeline
|
||||
: ScriptableRenderPipeline
|
||||
{
|
||||
private readonly ScriptableRendererData m_rendererData;
|
||||
private ScriptableRenderer m_renderer;
|
||||
private readonly UniversalRenderPipelineAsset m_asset;
|
||||
|
||||
public UniversalRenderPipeline(
|
||||
ScriptableRendererData rendererData)
|
||||
UniversalRenderPipelineAsset asset)
|
||||
{
|
||||
m_rendererData = rendererData;
|
||||
m_asset = asset;
|
||||
}
|
||||
|
||||
protected override bool SupportsStageRenderGraph(
|
||||
CameraFrameStage stage)
|
||||
{
|
||||
ScriptableRenderer renderer = GetOrCreateRenderer();
|
||||
ScriptableRenderer renderer = GetDefaultRenderer();
|
||||
return renderer != null &&
|
||||
renderer.SupportsStageRenderGraph(stage);
|
||||
}
|
||||
@@ -26,21 +25,16 @@ namespace XCEngine.Rendering.Universal
|
||||
protected override bool RecordStageRenderGraph(
|
||||
ScriptableRenderContext context)
|
||||
{
|
||||
ScriptableRenderer renderer = GetOrCreateRenderer();
|
||||
ScriptableRenderer renderer = GetDefaultRenderer();
|
||||
return renderer != null &&
|
||||
renderer.RecordStageRenderGraph(context);
|
||||
}
|
||||
|
||||
private ScriptableRenderer GetOrCreateRenderer()
|
||||
private ScriptableRenderer GetDefaultRenderer()
|
||||
{
|
||||
if (m_renderer == null &&
|
||||
m_rendererData != null)
|
||||
{
|
||||
m_renderer =
|
||||
m_rendererData.CreateRendererInstance();
|
||||
}
|
||||
|
||||
return m_renderer;
|
||||
return m_asset != null
|
||||
? m_asset.GetDefaultRenderer()
|
||||
: null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user