refactor(srp): introduce scriptableobject render asset substrate

This commit is contained in:
2026-04-21 20:25:05 +08:00
parent e527ca4e3a
commit f3be86a52b
7 changed files with 171 additions and 3 deletions

View File

@@ -44,6 +44,9 @@ namespace Gameplay
public bool HasPublicPipelineAssetConfigureCameraFramePlan;
public bool HasPipelineAssetSetDirty;
public bool HasPipelineAssetGetRuntimeResourceVersion;
public bool HasScriptableObjectType;
public bool HasScriptableObjectCreateInstance;
public bool HasRenderPipelineAssetScriptableObjectBase;
public bool HasPlanningContextType;
public bool HasRendererFeatureConfigureCameraFramePlan;
public bool HasRendererRecordingContextType;
@@ -51,6 +54,8 @@ namespace Gameplay
public bool HasRendererBackedRenderPipelineAssetType;
public bool HasRendererBackedRenderPipelineType;
public bool HasRendererDrivenRenderPipelineType;
public bool HasRendererDataScriptableObjectBase;
public bool HasRendererFeatureScriptableObjectBase;
public bool HasRendererDataSetupRenderer;
public bool HasRendererDataSetDirty;
public bool HasRendererDataIsInvalidated;
@@ -93,6 +98,9 @@ namespace Gameplay
typeof(CameraRenderRequestContext);
System.Type pipelineAssetType =
typeof(ScriptableRenderPipelineAsset);
System.Type scriptableObjectType =
typeof(Object).Assembly.GetType(
"XCEngine.ScriptableObject");
System.Type rasterPassBuilderType =
typeof(RenderGraphRasterPassBuilder);
System.Type rendererFeatureType =
@@ -288,6 +296,17 @@ namespace Gameplay
"GetRuntimeResourceVersionInstance",
BindingFlags.Instance |
BindingFlags.NonPublic) != null;
HasScriptableObjectType =
scriptableObjectType != null;
HasScriptableObjectCreateInstance =
scriptableObjectType != null &&
scriptableObjectType.GetMethod(
"CreateInstance",
BindingFlags.Static |
BindingFlags.Public) != null;
HasRenderPipelineAssetScriptableObjectBase =
scriptableObjectType != null &&
pipelineAssetType.BaseType == scriptableObjectType;
HasPlanningContextType =
contextType.Assembly.GetType(
"XCEngine.Rendering.ScriptableRenderPipelinePlanningContext") != null;
@@ -312,6 +331,12 @@ namespace Gameplay
HasRendererDrivenRenderPipelineType =
System.Type.GetType(
"XCEngine.Rendering.Universal.RendererDrivenRenderPipeline, XCEngine.RenderPipelines.Universal") != null;
HasRendererDataScriptableObjectBase =
scriptableObjectType != null &&
rendererDataType.BaseType == scriptableObjectType;
HasRendererFeatureScriptableObjectBase =
scriptableObjectType != null &&
rendererFeatureType.BaseType == scriptableObjectType;
HasRendererDataSetupRenderer =
rendererDataType.GetMethod(
"SetupRenderer",