refactor(srp): move renderer request helpers out of core

This commit is contained in:
2026-04-19 05:34:43 +08:00
parent 9da85e9ad8
commit fe7e6dddf3
11 changed files with 240 additions and 24 deletions

View File

@@ -800,24 +800,38 @@ namespace Gameplay
}
}
public sealed class ManagedCameraRequestConfiguredRenderPipelineProbeAsset
: ScriptableRenderPipelineAsset
internal sealed class ManagedCameraRequestConfiguredRendererData
: ScriptableRendererData
{
protected override ScriptableRenderPipeline CreatePipeline()
protected override ScriptableRenderer CreateRenderer()
{
return new ManagedRenderPipelineProbe();
return new ProbeSceneRenderer();
}
protected override void ConfigureCameraRenderRequest(
ScriptableRenderPipelineCameraRequestContext context)
RendererCameraRequestContext context)
{
if (context != null && context.hasDirectionalShadow)
if (context != null &&
context.hasDirectionalShadow)
{
context.ClearDirectionalShadow();
}
}
}
public sealed class ManagedCameraRequestConfiguredRenderPipelineProbeAsset
: RendererBackedRenderPipelineAsset
{
private readonly ManagedCameraRequestConfiguredRendererData
m_rendererData =
new ManagedCameraRequestConfiguredRendererData();
protected override ScriptableRendererData GetRendererData()
{
return m_rendererData;
}
}
public sealed class ManagedRenderContextCameraDataProbeAsset
: ScriptableRenderPipelineAsset
{

View File

@@ -0,0 +1,77 @@
using System.Reflection;
using XCEngine;
using XCEngine.Rendering;
using XCEngine.Rendering.Renderer;
namespace Gameplay
{
public sealed class ScriptableRenderContextApiSurfaceProbe
: MonoBehaviour
{
public bool HasPublicContextRecordScene;
public bool HasPublicContextRecordOpaqueScenePhase;
public bool HasPublicContextRecordBeforeOpaqueInjection;
public bool HasPublicContextRecordShaderVectorFullscreenPass;
public bool HasPublicRendererRecordOpaqueScenePhase;
public bool HasPublicRendererRecordShaderVectorFullscreenPass;
public bool HasPublicCameraRequestContextHasDirectionalShadow;
public bool HasPublicCameraRequestContextClearDirectionalShadow;
public bool HasPublicRendererCameraRequestContextHasDirectionalShadow;
public bool HasPublicRendererCameraRequestContextClearDirectionalShadow;
public void Start()
{
const BindingFlags PublicInstanceMethodFlags =
BindingFlags.Instance | BindingFlags.Public;
System.Type contextType =
typeof(ScriptableRenderContext);
System.Type rendererContextType =
typeof(RendererRecordingContext);
System.Type cameraRequestContextType =
typeof(ScriptableRenderPipelineCameraRequestContext);
System.Type rendererCameraRequestContextType =
typeof(RendererCameraRequestContext);
HasPublicContextRecordScene =
contextType.GetMethod(
"RecordScene",
PublicInstanceMethodFlags) != null;
HasPublicContextRecordOpaqueScenePhase =
contextType.GetMethod(
"RecordOpaqueScenePhase",
PublicInstanceMethodFlags) != null;
HasPublicContextRecordBeforeOpaqueInjection =
contextType.GetMethod(
"RecordBeforeOpaqueInjection",
PublicInstanceMethodFlags) != null;
HasPublicContextRecordShaderVectorFullscreenPass =
contextType.GetMethod(
"RecordShaderVectorFullscreenPass",
PublicInstanceMethodFlags) != null;
HasPublicRendererRecordOpaqueScenePhase =
rendererContextType.GetMethod(
"RecordOpaqueScenePhase",
PublicInstanceMethodFlags) != null;
HasPublicRendererRecordShaderVectorFullscreenPass =
rendererContextType.GetMethod(
"RecordShaderVectorFullscreenPass",
PublicInstanceMethodFlags) != null;
HasPublicCameraRequestContextHasDirectionalShadow =
cameraRequestContextType.GetProperty(
"hasDirectionalShadow",
PublicInstanceMethodFlags) != null;
HasPublicCameraRequestContextClearDirectionalShadow =
cameraRequestContextType.GetMethod(
"ClearDirectionalShadow",
PublicInstanceMethodFlags) != null;
HasPublicRendererCameraRequestContextHasDirectionalShadow =
rendererCameraRequestContextType.GetProperty(
"hasDirectionalShadow",
PublicInstanceMethodFlags) != null;
HasPublicRendererCameraRequestContextClearDirectionalShadow =
rendererCameraRequestContextType.GetMethod(
"ClearDirectionalShadow",
PublicInstanceMethodFlags) != null;
}
}
}