refactor(srp): make universal renderer execution context-first

Promote ScriptableRenderer renderer-recording context methods to the primary Universal execution seam and route the renderer-driven pipeline through that seam.

Update managed probes and scripting expectations to cover the new non-public renderer recording contract, and archive the completed phase plan.
This commit is contained in:
2026-04-20 02:15:47 +08:00
parent cd29c8b2bc
commit 778913ddcb
6 changed files with 219 additions and 38 deletions

View File

@@ -77,32 +77,34 @@ namespace XCEngine.Rendering.Universal
{
}
internal bool SupportsRendererRecording(
internal bool SupportsRendererRecordingInstance(
RendererRecordingContext context)
{
return context != null &&
SupportsStageRenderGraph(context.stage);
return SupportsRendererRecording(context);
}
internal bool RecordRenderer(
internal bool RecordRendererInstance(
RendererRecordingContext context)
{
return context != null &&
context.renderContext != null &&
RecordStageRenderGraph(
context.renderContext);
return RecordRenderer(context);
}
protected internal virtual bool SupportsStageRenderGraph(
CameraFrameStage stage)
protected virtual bool SupportsRendererRecording(
RendererRecordingContext context)
{
RenderingData renderingData = new RenderingData(stage);
if (context == null)
{
return false;
}
RenderingData renderingData =
context.renderingData;
BuildPassQueue(renderingData);
for (int i = 0; i < m_activePassQueue.Count; ++i)
{
ScriptableRenderPass renderPass = m_activePassQueue[i];
if (renderPass != null &&
renderPass.SupportsStage(stage))
renderPass.SupportsStage(context.stage))
{
return true;
}
@@ -111,16 +113,17 @@ namespace XCEngine.Rendering.Universal
return false;
}
protected internal virtual bool RecordStageRenderGraph(
ScriptableRenderContext context)
protected virtual bool RecordRenderer(
RendererRecordingContext context)
{
if (context == null)
if (context == null ||
context.renderContext == null)
{
return false;
}
RenderingData renderingData =
new RenderingData(context);
context.renderingData;
BuildPassQueue(renderingData);
bool recordedAnyPass = false;
@@ -134,7 +137,7 @@ namespace XCEngine.Rendering.Universal
}
if (!renderPass.Record(
context,
context.renderContext,
renderingData))
{
return false;
@@ -146,6 +149,21 @@ namespace XCEngine.Rendering.Universal
return recordedAnyPass;
}
protected internal virtual bool SupportsStageRenderGraph(
CameraFrameStage stage)
{
return SupportsRendererRecording(
new RendererRecordingContext(stage));
}
protected internal virtual bool RecordStageRenderGraph(
ScriptableRenderContext context)
{
return context != null &&
RecordRenderer(
new RendererRecordingContext(context));
}
private void BuildPassQueue(
RenderingData renderingData)
{