test(rendering): prove managed forward pipeline scene render path

This commit is contained in:
2026-04-18 00:51:51 +08:00
parent b48760ca3d
commit afb2c1579c
3 changed files with 1147 additions and 0 deletions

View File

@@ -29,6 +29,27 @@ namespace Gameplay
}
}
public sealed class ManagedForwardRenderPipelineProbeAsset
: ScriptableRenderPipelineAsset
{
public static int CreatePipelineCallCount;
protected override ScriptableRenderPipeline CreatePipeline()
{
CreatePipelineCallCount++;
return new ManagedForwardRenderPipelineProbe();
}
protected override void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
context.ClearPostProcessStage();
context.RequestPostProcessStage(
CameraFrameColorSource.MainSceneColor,
false);
}
}
public sealed class ManagedPlannedFullscreenRenderPipelineProbeAsset
: ScriptableRenderPipelineAsset
{
@@ -124,6 +145,64 @@ namespace Gameplay
}
}
public sealed class ManagedForwardRenderPipelineProbe
: ScriptableRenderPipeline
{
public static int SupportsMainSceneCallCount;
public static int SupportsPostProcessCallCount;
public static int RecordMainSceneCallCount;
public static int RecordBuiltinForwardMainSceneCallCount;
public static int RecordPostProcessCallCount;
protected override bool SupportsStageRenderGraph(
CameraFrameStage stage)
{
if (stage == CameraFrameStage.MainScene)
{
SupportsMainSceneCallCount++;
return true;
}
if (stage == CameraFrameStage.PostProcess)
{
SupportsPostProcessCallCount++;
return true;
}
return false;
}
protected override bool RecordStageRenderGraph(
ScriptableRenderContext context)
{
if (context == null)
{
return false;
}
if (context.stage == CameraFrameStage.MainScene)
{
RecordMainSceneCallCount++;
bool recorded = context.RecordBuiltinForwardMainScene();
if (recorded)
{
RecordBuiltinForwardMainSceneCallCount++;
}
return recorded;
}
if (context.stage == CameraFrameStage.PostProcess)
{
RecordPostProcessCallCount++;
return context.RecordBuiltinColorScaleFullscreenPass(
new Vector4(1.03f, 0.98f, 0.94f, 1.0f));
}
return false;
}
}
public sealed class ManagedPlannedFullscreenRenderPipelineProbe
: ScriptableRenderPipeline
{
@@ -192,4 +271,43 @@ namespace Gameplay
typeof(ManagedRenderPipelineProbeAsset);
}
}
public sealed class ManagedForwardRenderPipelineRuntimeSelectionProbe
: MonoBehaviour
{
public int ObservedCreatePipelineCallCount;
public int ObservedSupportsMainSceneCallCount;
public int ObservedSupportsPostProcessCallCount;
public int ObservedRecordMainSceneCallCount;
public int ObservedRecordBuiltinForwardMainSceneCallCount;
public int ObservedRecordPostProcessCallCount;
public void Start()
{
ManagedForwardRenderPipelineProbeAsset.CreatePipelineCallCount = 0;
ManagedForwardRenderPipelineProbe.SupportsMainSceneCallCount = 0;
ManagedForwardRenderPipelineProbe.SupportsPostProcessCallCount = 0;
ManagedForwardRenderPipelineProbe.RecordMainSceneCallCount = 0;
ManagedForwardRenderPipelineProbe.RecordBuiltinForwardMainSceneCallCount = 0;
ManagedForwardRenderPipelineProbe.RecordPostProcessCallCount = 0;
GraphicsSettings.renderPipelineAssetType =
typeof(ManagedForwardRenderPipelineProbeAsset);
}
public void Update()
{
ObservedCreatePipelineCallCount =
ManagedForwardRenderPipelineProbeAsset.CreatePipelineCallCount;
ObservedSupportsMainSceneCallCount =
ManagedForwardRenderPipelineProbe.SupportsMainSceneCallCount;
ObservedSupportsPostProcessCallCount =
ManagedForwardRenderPipelineProbe.SupportsPostProcessCallCount;
ObservedRecordMainSceneCallCount =
ManagedForwardRenderPipelineProbe.RecordMainSceneCallCount;
ObservedRecordBuiltinForwardMainSceneCallCount =
ManagedForwardRenderPipelineProbe.RecordBuiltinForwardMainSceneCallCount;
ObservedRecordPostProcessCallCount =
ManagedForwardRenderPipelineProbe.RecordPostProcessCallCount;
}
}
}