refactor(srp): close universal recording composition seam
This commit is contained in:
@@ -318,7 +318,7 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ProbeSceneRenderer : ScriptableRenderer
|
||||
internal class ProbeSceneRenderer : ScriptableRenderer
|
||||
{
|
||||
public ProbeSceneRenderer(
|
||||
Action onOpaqueRecorded = null)
|
||||
@@ -327,7 +327,7 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ProbePostProcessRenderer : ScriptableRenderer
|
||||
internal class ProbePostProcessRenderer : ScriptableRenderer
|
||||
{
|
||||
public ProbePostProcessRenderer(
|
||||
Vector4 firstVectorPayload,
|
||||
@@ -348,7 +348,7 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ProbeUniversalRenderer : ScriptableRenderer
|
||||
internal class ProbeUniversalRenderer : ScriptableRenderer
|
||||
{
|
||||
public ProbeUniversalRenderer(
|
||||
Vector4 postProcessScale,
|
||||
@@ -363,7 +363,7 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ProbePlannedFullscreenRenderer : ScriptableRenderer
|
||||
internal class ProbePlannedFullscreenRenderer : ScriptableRenderer
|
||||
{
|
||||
public ProbePlannedFullscreenRenderer()
|
||||
{
|
||||
@@ -709,7 +709,7 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class CameraDataObservationRenderer
|
||||
internal class CameraDataObservationRenderer
|
||||
: ScriptableRenderer
|
||||
{
|
||||
public CameraDataObservationRenderer()
|
||||
@@ -801,7 +801,7 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class StageColorObservationRenderer
|
||||
internal class StageColorObservationRenderer
|
||||
: ScriptableRenderer
|
||||
{
|
||||
public StageColorObservationRenderer()
|
||||
@@ -817,37 +817,77 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class ProbeRendererPipeline
|
||||
: ScriptableRenderPipeline
|
||||
internal abstract class ProbeRendererData
|
||||
: ScriptableRendererData
|
||||
{
|
||||
private ScriptableRenderer m_renderer;
|
||||
|
||||
protected abstract ScriptableRenderer CreateRenderer();
|
||||
|
||||
protected override bool SupportsStageRenderGraph(
|
||||
CameraFrameStage stage)
|
||||
protected sealed override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
ScriptableRenderer renderer = GetOrCreateRenderer();
|
||||
return renderer != null &&
|
||||
renderer.SupportsStageRenderGraph(stage);
|
||||
return CreateProbeRenderer();
|
||||
}
|
||||
|
||||
protected override bool RecordStageRenderGraph(
|
||||
ScriptableRenderContext context)
|
||||
protected abstract ScriptableRenderer CreateProbeRenderer();
|
||||
}
|
||||
|
||||
internal sealed class ManagedRenderPipelineProbeRendererData
|
||||
: ProbeRendererData
|
||||
{
|
||||
protected override ScriptableRenderer CreateProbeRenderer()
|
||||
{
|
||||
ScriptableRenderer renderer = GetOrCreateRenderer();
|
||||
return renderer != null &&
|
||||
renderer.RecordStageRenderGraph(context);
|
||||
return new ManagedRenderPipelineProbe();
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ManagedPostProcessRenderPipelineProbeRendererData
|
||||
: ProbeRendererData
|
||||
{
|
||||
protected override ScriptableRenderer CreateProbeRenderer()
|
||||
{
|
||||
return new ManagedPostProcessRenderPipelineProbe();
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ManagedUniversalRenderPipelineProbeRendererData
|
||||
: ProbeRendererData
|
||||
{
|
||||
private readonly Vector4 m_postProcessScale;
|
||||
|
||||
public ManagedUniversalRenderPipelineProbeRendererData(
|
||||
Vector4 postProcessScale)
|
||||
{
|
||||
m_postProcessScale = postProcessScale;
|
||||
}
|
||||
|
||||
private ScriptableRenderer GetOrCreateRenderer()
|
||||
protected override ScriptableRenderer CreateProbeRenderer()
|
||||
{
|
||||
if (m_renderer == null)
|
||||
{
|
||||
m_renderer = CreateRenderer();
|
||||
}
|
||||
return new ManagedUniversalRenderPipelineProbe(
|
||||
m_postProcessScale);
|
||||
}
|
||||
}
|
||||
|
||||
return m_renderer;
|
||||
internal sealed class ManagedPlannedFullscreenRenderPipelineProbeRendererData
|
||||
: ProbeRendererData
|
||||
{
|
||||
protected override ScriptableRenderer CreateProbeRenderer()
|
||||
{
|
||||
return new ManagedPlannedFullscreenRenderPipelineProbe();
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ManagedRenderContextCameraDataProbeRendererData
|
||||
: ProbeRendererData
|
||||
{
|
||||
protected override ScriptableRenderer CreateProbeRenderer()
|
||||
{
|
||||
return new ManagedRenderContextCameraDataProbe();
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ManagedRenderContextStageColorDataProbeRendererData
|
||||
: ProbeRendererData
|
||||
{
|
||||
protected override ScriptableRenderer CreateProbeRenderer()
|
||||
{
|
||||
return new ManagedRenderContextStageColorDataProbe();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -859,48 +899,66 @@ namespace Gameplay
|
||||
{
|
||||
}
|
||||
|
||||
public sealed class ManagedRenderPipelineProbeAsset : ScriptableRenderPipelineAsset
|
||||
public sealed class ManagedRenderPipelineProbeAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
public static int CreatePipelineCallCount;
|
||||
|
||||
public ManagedRenderPipelineProbeAsset()
|
||||
{
|
||||
rendererData = new ManagedRenderPipelineProbeRendererData();
|
||||
}
|
||||
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
{
|
||||
CreatePipelineCallCount++;
|
||||
return new ManagedRenderPipelineProbe();
|
||||
return base.CreatePipeline();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedPostProcessRenderPipelineProbeAsset : ScriptableRenderPipelineAsset
|
||||
public sealed class ManagedPostProcessRenderPipelineProbeAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
public ManagedPostProcessRenderPipelineProbeAsset()
|
||||
{
|
||||
return new ManagedPostProcessRenderPipelineProbe();
|
||||
rendererData =
|
||||
new ManagedPostProcessRenderPipelineProbeRendererData();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedUniversalRenderPipelineProbeAsset
|
||||
: ScriptableRenderPipelineAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
public static int CreatePipelineCallCount;
|
||||
public Vector4 postProcessScale = new Vector4(1.03f, 0.98f, 0.94f, 1.0f);
|
||||
|
||||
public ManagedUniversalRenderPipelineProbeAsset()
|
||||
{
|
||||
rendererData = CreateRendererData();
|
||||
}
|
||||
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
{
|
||||
CreatePipelineCallCount++;
|
||||
return new ManagedUniversalRenderPipelineProbe(
|
||||
postProcessScale);
|
||||
rendererData = CreateRendererData();
|
||||
return base.CreatePipeline();
|
||||
}
|
||||
|
||||
private ScriptableRendererData CreateRendererData()
|
||||
{
|
||||
return new ManagedUniversalRenderPipelineProbeRendererData(
|
||||
postProcessScale);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedPlannedFullscreenRenderPipelineProbeAsset
|
||||
: ScriptableRenderPipelineAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
public ManagedPlannedFullscreenRenderPipelineProbeAsset()
|
||||
{
|
||||
return new ManagedPlannedFullscreenRenderPipelineProbe();
|
||||
rendererData =
|
||||
new ManagedPlannedFullscreenRenderPipelineProbeRendererData();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
internal sealed class ManagedCameraRequestConfiguredRendererData
|
||||
@@ -921,15 +979,6 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class ManagedCameraRequestConfiguredRenderPipelineProbe
|
||||
: ProbeRendererPipeline
|
||||
{
|
||||
protected override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
return new ProbeSceneRenderer();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedCameraRequestConfiguredRenderPipelineProbeAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
@@ -940,20 +989,21 @@ namespace Gameplay
|
||||
}
|
||||
|
||||
public sealed class ManagedRenderContextCameraDataProbeAsset
|
||||
: ScriptableRenderPipelineAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
public ManagedRenderContextCameraDataProbeAsset()
|
||||
{
|
||||
return new ManagedRenderContextCameraDataProbe();
|
||||
rendererData =
|
||||
new ManagedRenderContextCameraDataProbeRendererData();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedFinalColorRenderPipelineProbeAsset
|
||||
: ScriptableRenderPipelineAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
public ManagedFinalColorRenderPipelineProbeAsset()
|
||||
{
|
||||
return new ManagedRenderPipelineProbe();
|
||||
rendererData = new ManagedRenderPipelineProbeRendererData();
|
||||
}
|
||||
|
||||
protected override FinalColorSettings GetDefaultFinalColorSettings()
|
||||
@@ -963,11 +1013,12 @@ namespace Gameplay
|
||||
}
|
||||
|
||||
public sealed class ManagedRenderContextFinalColorDataProbeAsset
|
||||
: ScriptableRenderPipelineAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
public ManagedRenderContextFinalColorDataProbeAsset()
|
||||
{
|
||||
return new ManagedRenderContextCameraDataProbe();
|
||||
rendererData =
|
||||
new ManagedRenderContextCameraDataProbeRendererData();
|
||||
}
|
||||
|
||||
protected override FinalColorSettings GetDefaultFinalColorSettings()
|
||||
@@ -977,26 +1028,21 @@ namespace Gameplay
|
||||
}
|
||||
|
||||
public sealed class ManagedRenderContextStageColorDataProbeAsset
|
||||
: ScriptableRenderPipelineAsset
|
||||
: UniversalRenderPipelineAsset
|
||||
{
|
||||
protected override ScriptableRenderPipeline CreatePipeline()
|
||||
public ManagedRenderContextStageColorDataProbeAsset()
|
||||
{
|
||||
return new ManagedRenderContextStageColorDataProbe();
|
||||
rendererData =
|
||||
new ManagedRenderContextStageColorDataProbeRendererData();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public sealed class ManagedRenderPipelineProbe
|
||||
: ProbeRendererPipeline
|
||||
internal sealed class ManagedRenderPipelineProbe
|
||||
: ProbeSceneRenderer
|
||||
{
|
||||
public static int SupportsStageCallCount;
|
||||
public static int RecordStageCallCount;
|
||||
|
||||
protected override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
return new ProbeSceneRenderer();
|
||||
}
|
||||
|
||||
protected override bool SupportsStageRenderGraph(
|
||||
CameraFrameStage stage)
|
||||
{
|
||||
@@ -1012,19 +1058,19 @@ namespace Gameplay
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedPostProcessRenderPipelineProbe
|
||||
: ProbeRendererPipeline
|
||||
internal sealed class ManagedPostProcessRenderPipelineProbe
|
||||
: ProbePostProcessRenderer
|
||||
{
|
||||
protected override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
return new ProbePostProcessRenderer(
|
||||
public ManagedPostProcessRenderPipelineProbe()
|
||||
: base(
|
||||
new Vector4(1.10f, 0.95f, 0.90f, 1.0f),
|
||||
new Vector4(0.95f, 1.05f, 1.10f, 1.0f));
|
||||
new Vector4(0.95f, 1.05f, 1.10f, 1.0f))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedUniversalRenderPipelineProbe
|
||||
: ProbeRendererPipeline
|
||||
internal sealed class ManagedUniversalRenderPipelineProbe
|
||||
: ProbeUniversalRenderer
|
||||
{
|
||||
public static int SupportsMainSceneCallCount;
|
||||
public static int SupportsPostProcessCallCount;
|
||||
@@ -1037,17 +1083,13 @@ namespace Gameplay
|
||||
|
||||
public ManagedUniversalRenderPipelineProbe(
|
||||
Vector4 postProcessScale)
|
||||
: base(
|
||||
postProcessScale,
|
||||
OnOpaqueRecorded)
|
||||
{
|
||||
m_postProcessScale = postProcessScale;
|
||||
}
|
||||
|
||||
protected override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
return new ProbeUniversalRenderer(
|
||||
m_postProcessScale,
|
||||
OnOpaqueRecorded);
|
||||
}
|
||||
|
||||
protected override bool SupportsStageRenderGraph(
|
||||
CameraFrameStage stage)
|
||||
{
|
||||
@@ -1084,37 +1126,25 @@ namespace Gameplay
|
||||
return base.RecordStageRenderGraph(context);
|
||||
}
|
||||
|
||||
private void OnOpaqueRecorded()
|
||||
private static void OnOpaqueRecorded()
|
||||
{
|
||||
RecordSceneCallCount++;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedPlannedFullscreenRenderPipelineProbe
|
||||
: ProbeRendererPipeline
|
||||
internal sealed class ManagedPlannedFullscreenRenderPipelineProbe
|
||||
: ProbePlannedFullscreenRenderer
|
||||
{
|
||||
protected override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
return new ProbePlannedFullscreenRenderer();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedRenderContextCameraDataProbe
|
||||
: ProbeRendererPipeline
|
||||
internal sealed class ManagedRenderContextCameraDataProbe
|
||||
: CameraDataObservationRenderer
|
||||
{
|
||||
protected override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
return new CameraDataObservationRenderer();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ManagedRenderContextStageColorDataProbe
|
||||
: ProbeRendererPipeline
|
||||
internal sealed class ManagedRenderContextStageColorDataProbe
|
||||
: StageColorObservationRenderer
|
||||
{
|
||||
protected override ScriptableRenderer CreateRenderer()
|
||||
{
|
||||
return new StageColorObservationRenderer();
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class RenderPipelineApiProbe : MonoBehaviour
|
||||
|
||||
@@ -34,6 +34,8 @@ namespace Gameplay
|
||||
public bool HasRendererBackedRenderPipelineAssetType;
|
||||
public bool HasRendererBackedRenderPipelineType;
|
||||
public bool HasRendererDrivenRenderPipelineType;
|
||||
public bool HasPublicRendererSupportsStageRenderGraph;
|
||||
public bool HasPublicRendererRecordStageRenderGraph;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
@@ -47,6 +49,8 @@ namespace Gameplay
|
||||
typeof(ScriptableRenderPipelineAsset);
|
||||
System.Type rendererFeatureType =
|
||||
typeof(ScriptableRendererFeature);
|
||||
System.Type rendererType =
|
||||
typeof(ScriptableRenderer);
|
||||
System.Type universalAssemblyType =
|
||||
typeof(ScriptableRendererFeature);
|
||||
System.Reflection.Assembly universalAssembly =
|
||||
@@ -166,6 +170,14 @@ namespace Gameplay
|
||||
HasRendererDrivenRenderPipelineType =
|
||||
System.Type.GetType(
|
||||
"XCEngine.Rendering.Universal.RendererDrivenRenderPipeline, XCEngine.RenderPipelines.Universal") != null;
|
||||
HasPublicRendererSupportsStageRenderGraph =
|
||||
rendererType.GetMethod(
|
||||
"SupportsStageRenderGraph",
|
||||
PublicInstanceMethodFlags) != null;
|
||||
HasPublicRendererRecordStageRenderGraph =
|
||||
rendererType.GetMethod(
|
||||
"RecordStageRenderGraph",
|
||||
PublicInstanceMethodFlags) != null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user