feat(srp): formalize renderer contracts and project feature bridge

This commit is contained in:
2026-04-20 15:03:45 +08:00
parent 10b092d467
commit a615f78e72
13 changed files with 1604 additions and 28 deletions

View File

@@ -0,0 +1,92 @@
using XCEngine;
using XCEngine.Rendering;
using XCEngine.Rendering.Universal;
namespace ProjectScripts
{
public sealed class ProjectPostProcessColorScalePass
: ScriptableRenderPass
{
public ProjectPostProcessColorScalePass()
{
renderPassEvent =
RenderPassEvent.BeforeRenderingPostProcessing;
}
protected override bool RecordRenderGraph(
ScriptableRenderContext context,
RenderingData renderingData)
{
return context != null &&
renderingData != null &&
renderingData.isPostProcessStage &&
RecordColorScaleFullscreenPass(
context,
new Vector4(1.15f, 0.95f, 1.05f, 1.0f));
}
}
public sealed class ProjectPostProcessColorScaleFeature
: ScriptableRendererFeature
{
private ProjectPostProcessColorScalePass m_pass;
public override void Create()
{
m_pass =
new ProjectPostProcessColorScalePass();
}
public override void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
if (context == null ||
context.IsStageRequested(
CameraFrameStage.PostProcess))
{
return;
}
context.RequestFullscreenStage(
CameraFrameStage.PostProcess,
CameraFrameColorSource.MainSceneColor);
}
public override void AddRenderPasses(
ScriptableRenderer renderer,
RenderingData renderingData)
{
if (renderer == null ||
renderingData == null ||
!renderingData.isPostProcessStage)
{
return;
}
if (m_pass == null)
{
Create();
}
renderer.EnqueuePass(m_pass);
}
}
public sealed class ProjectUniversalFeaturePipelineAsset
: UniversalRenderPipelineAsset
{
public ProjectUniversalFeaturePipelineAsset()
{
rendererDataList = new ScriptableRendererData[]
{
new UniversalRendererData
{
rendererFeatures = new ScriptableRendererFeature[]
{
new ProjectPostProcessColorScaleFeature()
}
}
};
}
}
}