refactor(srp): remove managed frame planning hook

- derive fullscreen stage planning from pipeline render-graph support
- trim planning-only APIs from the managed SRP bridge and public surface
- update probes and tests to lock the slimmer SRP API boundary
This commit is contained in:
2026-04-19 13:47:20 +08:00
parent 08e2b38df2
commit 537d7d99fc
19 changed files with 179 additions and 517 deletions

View File

@@ -700,19 +700,6 @@ namespace XCEngine
Rendering_ScriptableRenderPipelineCameraRequestContext_ClearDirectionalShadow(
ulong nativeHandle);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void
Rendering_ScriptableRenderPipelinePlanningContext_ClearFullscreenStage(
ulong nativeHandle,
int stage);
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern bool
Rendering_ScriptableRenderPipelinePlanningContext_RequestFullscreenStage(
ulong nativeHandle,
int stage,
int source,
bool usesGraphManagedOutputColor);
}
}

View File

@@ -18,11 +18,6 @@ namespace XCEngine.Rendering
{
}
protected virtual void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
}
protected virtual FinalColorSettings GetDefaultFinalColorSettings()
{
return FinalColorSettings.CreateDefault();

View File

@@ -1,69 +0,0 @@
using System;
using XCEngine;
namespace XCEngine.Rendering
{
public sealed class ScriptableRenderPipelinePlanningContext
{
private readonly ulong m_nativeHandle;
internal ScriptableRenderPipelinePlanningContext(ulong nativeHandle)
{
m_nativeHandle = nativeHandle;
}
public void ClearFullscreenStage(
CameraFrameStage stage)
{
ValidateFullscreenStage(stage);
InternalCalls.Rendering_ScriptableRenderPipelinePlanningContext_ClearFullscreenStage(
m_nativeHandle,
(int)stage);
}
public void RequestFullscreenStage(
CameraFrameStage stage,
CameraFrameColorSource source,
bool usesGraphManagedOutputColor = false)
{
ValidateFullscreenStage(stage);
if (source == CameraFrameColorSource.ExplicitSurface)
{
throw new ArgumentException(
"Managed planning currently requires a graph-managed color source for fullscreen stages.",
nameof(source));
}
if (stage == CameraFrameStage.FinalOutput && usesGraphManagedOutputColor)
{
throw new ArgumentException(
"FinalOutput fullscreen stages cannot publish a graph-managed output color.",
nameof(usesGraphManagedOutputColor));
}
if (!InternalCalls
.Rendering_ScriptableRenderPipelinePlanningContext_RequestFullscreenStage(
m_nativeHandle,
(int)stage,
(int)source,
usesGraphManagedOutputColor))
{
throw new InvalidOperationException(
$"Failed to request the managed fullscreen stage '{stage}'.");
}
}
private static void ValidateFullscreenStage(
CameraFrameStage stage)
{
if (stage != CameraFrameStage.PostProcess &&
stage != CameraFrameStage.FinalOutput)
{
throw new ArgumentException(
"Managed planning currently supports only fullscreen sequence stages.",
nameof(stage));
}
}
}
}

View File

@@ -47,19 +47,6 @@ namespace XCEngine.Rendering.FirstParty
new ColorScalePostProcessPass(this);
}
public override void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
if (context == null)
{
return;
}
context.RequestFullscreenStage(
CameraFrameStage.PostProcess,
CameraFrameColorSource.MainSceneColor);
}
public override void AddRenderPasses(
ScriptableRenderer renderer,
RenderingData renderingData)

View File

@@ -31,18 +31,6 @@ namespace XCEngine.Rendering.Renderer
}
}
protected override void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
ScriptableRendererData rendererData =
ResolveRendererData();
if (rendererData != null)
{
rendererData.ConfigureCameraFramePlanInstance(
context);
}
}
protected abstract ScriptableRendererData GetRendererData();
private ScriptableRendererData ResolveRendererData()

View File

@@ -44,28 +44,6 @@ namespace XCEngine.Rendering.Renderer
}
}
internal void ConfigureCameraFramePlanInstance(
ScriptableRenderPipelinePlanningContext context)
{
ConfigureCameraFramePlan(context);
ScriptableRendererFeature[] rendererFeatures =
GetRendererFeatures();
for (int i = 0; i < rendererFeatures.Length; ++i)
{
ScriptableRendererFeature rendererFeature =
rendererFeatures[i];
if (rendererFeature == null ||
!rendererFeature.isActive)
{
continue;
}
rendererFeature.ConfigureCameraFramePlan(
context);
}
}
protected virtual ScriptableRenderer CreateRenderer()
{
return null;
@@ -76,11 +54,6 @@ namespace XCEngine.Rendering.Renderer
{
}
protected virtual void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
}
protected virtual ScriptableRendererFeature[] CreateRendererFeatures()
{
return Array.Empty<ScriptableRendererFeature>();

View File

@@ -20,11 +20,6 @@ namespace XCEngine.Rendering.Renderer
{
}
public virtual void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
}
public virtual void AddRenderPasses(
ScriptableRenderer renderer,
RenderingData renderingData)