refactor(srp): align urp renderer slot semantics

This commit is contained in:
2026-04-21 17:08:26 +08:00
parent 4300e45168
commit 578103f970
4 changed files with 128 additions and 23 deletions

View File

@@ -6,6 +6,7 @@ namespace XCEngine.Rendering.Universal
{
public abstract class ScriptableRendererData : Object
{
public ScriptableRendererFeature[] rendererFeatures;
private ScriptableRendererFeature[] m_rendererFeatures;
private ScriptableRenderer m_rendererInstance;
private bool m_rendererInvalidated;
@@ -13,6 +14,8 @@ namespace XCEngine.Rendering.Universal
protected ScriptableRendererData()
{
rendererFeatures =
Array.Empty<ScriptableRendererFeature>();
}
internal ScriptableRenderer CreateRendererInstance()
@@ -196,13 +199,20 @@ namespace XCEngine.Rendering.Universal
protected virtual ScriptableRendererFeature[] CreateRendererFeatures()
{
return Array.Empty<ScriptableRendererFeature>();
return rendererFeatures ??
Array.Empty<ScriptableRendererFeature>();
}
protected virtual void ReleaseRuntimeResources()
{
}
protected virtual ScriptableRendererFeature[]
CreateDefaultRendererFeatures()
{
return Array.Empty<ScriptableRendererFeature>();
}
protected bool isInvalidated
{
get
@@ -279,6 +289,13 @@ namespace XCEngine.Rendering.Universal
}
}
protected void ResetRendererFeaturesToDefault()
{
rendererFeatures =
CreateDefaultRendererFeatures() ??
Array.Empty<ScriptableRendererFeature>();
}
private ScriptableRendererFeature[] GetRendererFeatures()
{
if (m_rendererFeatures == null)