2026-04-15 20:14:48 +08:00
|
|
|
namespace XCEngine
|
|
|
|
|
{
|
|
|
|
|
public abstract class ScriptableRenderPipeline : Object
|
|
|
|
|
{
|
2026-04-19 00:05:29 +08:00
|
|
|
private ScriptableRenderer m_renderer;
|
|
|
|
|
|
2026-04-15 20:14:48 +08:00
|
|
|
protected ScriptableRenderPipeline()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-19 00:05:29 +08:00
|
|
|
protected internal virtual ScriptableRenderer CreateRenderer()
|
|
|
|
|
{
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-15 20:14:48 +08:00
|
|
|
protected internal virtual bool SupportsStageRenderGraph(
|
|
|
|
|
CameraFrameStage stage)
|
|
|
|
|
{
|
2026-04-19 00:05:29 +08:00
|
|
|
ScriptableRenderer renderer = GetOrCreateRenderer();
|
|
|
|
|
return renderer != null &&
|
|
|
|
|
renderer.SupportsStageRenderGraph(stage);
|
2026-04-15 20:14:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected internal virtual bool RecordStageRenderGraph(
|
2026-04-17 21:53:52 +08:00
|
|
|
ScriptableRenderContext context)
|
2026-04-15 20:14:48 +08:00
|
|
|
{
|
2026-04-19 00:05:29 +08:00
|
|
|
ScriptableRenderer renderer = GetOrCreateRenderer();
|
|
|
|
|
return renderer != null &&
|
|
|
|
|
renderer.RecordStageRenderGraph(context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected ScriptableRenderer renderer =>
|
|
|
|
|
GetOrCreateRenderer();
|
|
|
|
|
|
|
|
|
|
private ScriptableRenderer GetOrCreateRenderer()
|
|
|
|
|
{
|
|
|
|
|
if (m_renderer == null)
|
|
|
|
|
{
|
|
|
|
|
m_renderer = CreateRenderer();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return m_renderer;
|
2026-04-15 20:14:48 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|