refactor(srp): move recording helpers into universal extensions

This commit is contained in:
2026-04-19 14:42:57 +08:00
parent f4d4112e2f
commit 8edc68f02b
9 changed files with 309 additions and 167 deletions

View File

@@ -789,7 +789,7 @@ namespace Gameplay
ScriptableRenderPipelineCameraRequestContext context)
{
if (context != null &&
context.hasDirectionalShadow)
context.HasDirectionalShadow())
{
context.ClearDirectionalShadow();
}

View File

@@ -20,6 +20,12 @@ namespace Gameplay
public bool HasPublicContextStageColorData;
public bool HasPublicCameraRequestContextHasDirectionalShadow;
public bool HasPublicCameraRequestContextClearDirectionalShadow;
public bool HasUniversalContextRecordSceneExtension;
public bool HasUniversalContextRecordOpaqueScenePhaseExtension;
public bool HasUniversalContextRecordBeforeOpaqueInjectionExtension;
public bool HasUniversalContextRecordShaderVectorFullscreenPassExtension;
public bool HasUniversalCameraRequestContextHasDirectionalShadowExtension;
public bool HasUniversalCameraRequestContextClearDirectionalShadowExtension;
public bool HasPublicPipelineAssetConfigureCameraFramePlan;
public bool HasPlanningContextType;
public bool HasRendererFeatureConfigureCameraFramePlan;
@@ -38,6 +44,16 @@ namespace Gameplay
typeof(ScriptableRenderPipelineAsset);
System.Type rendererFeatureType =
typeof(ScriptableRendererFeature);
System.Type universalAssemblyType =
typeof(ScriptableRendererFeature);
System.Reflection.Assembly universalAssembly =
universalAssemblyType.Assembly;
System.Type renderContextExtensionsType =
universalAssembly.GetType(
"XCEngine.Rendering.Universal.ScriptableRenderContextExtensions");
System.Type cameraRequestContextExtensionsType =
universalAssembly.GetType(
"XCEngine.Rendering.Universal.ScriptableRenderPipelineCameraRequestContextExtensions");
HasPublicContextRecordScene =
contextType.GetMethod(
@@ -87,6 +103,36 @@ namespace Gameplay
cameraRequestContextType.GetMethod(
"ClearDirectionalShadow",
PublicInstanceMethodFlags) != null;
HasUniversalContextRecordSceneExtension =
renderContextExtensionsType != null &&
renderContextExtensionsType.GetMethod(
"RecordScene",
BindingFlags.Static | BindingFlags.Public) != null;
HasUniversalContextRecordOpaqueScenePhaseExtension =
renderContextExtensionsType != null &&
renderContextExtensionsType.GetMethod(
"RecordOpaqueScenePhase",
BindingFlags.Static | BindingFlags.Public) != null;
HasUniversalContextRecordBeforeOpaqueInjectionExtension =
renderContextExtensionsType != null &&
renderContextExtensionsType.GetMethod(
"RecordBeforeOpaqueInjection",
BindingFlags.Static | BindingFlags.Public) != null;
HasUniversalContextRecordShaderVectorFullscreenPassExtension =
renderContextExtensionsType != null &&
renderContextExtensionsType.GetMethod(
"RecordShaderVectorFullscreenPass",
BindingFlags.Static | BindingFlags.Public) != null;
HasUniversalCameraRequestContextHasDirectionalShadowExtension =
cameraRequestContextExtensionsType != null &&
cameraRequestContextExtensionsType.GetMethod(
"HasDirectionalShadow",
BindingFlags.Static | BindingFlags.Public) != null;
HasUniversalCameraRequestContextClearDirectionalShadowExtension =
cameraRequestContextExtensionsType != null &&
cameraRequestContextExtensionsType.GetMethod(
"ClearDirectionalShadow",
BindingFlags.Static | BindingFlags.Public) != null;
HasPublicPipelineAssetConfigureCameraFramePlan =
pipelineAssetType.GetMethod(
"ConfigureCameraFramePlan",