From 501059c6fb186601e264c03b65174fc96a98403d Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Sat, 25 Apr 2026 15:13:47 +0800 Subject: [PATCH] Add URP renderer API compatibility shims --- .../Universal/ScriptableRenderPass.cs | 2 +- .../Rendering/Universal/ScriptableRenderer.cs | 5 +- .../Universal/ScriptableRendererFeature.cs | 73 +++++++++++++++---- 3 files changed, 65 insertions(+), 15 deletions(-) diff --git a/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderPass.cs b/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderPass.cs index dadeced9..e77fc358 100644 --- a/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderPass.cs +++ b/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderPass.cs @@ -17,7 +17,7 @@ namespace XCEngine.Rendering.Universal { } - public RenderPassEvent renderPassEvent { get; protected set; } = + public RenderPassEvent renderPassEvent { get; set; } = RenderPassEvent.BeforeRenderingOpaques; public virtual bool SupportsStage( diff --git a/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderer.cs b/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderer.cs index 18a305cf..cbe60a08 100644 --- a/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderer.cs +++ b/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRenderer.cs @@ -364,9 +364,12 @@ namespace XCEngine.Rendering.Universal continue; } + feature.SetupRenderPasses( + this, + in renderingData); feature.AddRenderPasses( this, - renderingData); + ref renderingData); } AddRenderPasses(renderingData); diff --git a/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRendererFeature.cs b/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRendererFeature.cs index 788faf01..34fced5e 100644 --- a/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRendererFeature.cs +++ b/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/ScriptableRendererFeature.cs @@ -1,10 +1,12 @@ +using System; using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { public abstract class ScriptableRendererFeature - : ScriptableObject + : ScriptableObject, + IDisposable { private bool m_disposed; private bool m_runtimeCreated; @@ -24,16 +26,6 @@ namespace XCEngine.Rendering.Universal { return m_isActive; } - set - { - if (m_isActive == value) - { - return; - } - - m_isActive = value; - SetDirty(); - } } internal void BindOwnerInstance( @@ -68,7 +60,7 @@ namespace XCEngine.Rendering.Universal return; } - ReleaseRuntimeResources(); + Dispose(true); m_disposed = true; m_runtimeCreated = false; } @@ -103,6 +95,52 @@ namespace XCEngine.Rendering.Universal { } + public virtual void AddRenderPasses( + ScriptableRenderer renderer, + ref RenderingData renderingData) + { + AddRenderPasses( + renderer, + renderingData); + } + + public virtual void SetupRenderPasses( + ScriptableRenderer renderer, + in RenderingData renderingData) + { + } + + public virtual void OnCameraPreCull( + ScriptableRenderer renderer, + in CameraData cameraData) + { + } + + public void SetActive( + bool active) + { + if (m_isActive == active) + { + return; + } + + m_isActive = active; + SetDirty(); + } + + public void Dispose() + { + if (m_disposed) + { + return; + } + + Dispose(true); + m_disposed = true; + m_runtimeCreated = false; + GC.SuppressFinalize(this); + } + protected bool HasDirectionalShadow( CameraRenderRequestContext context) { @@ -129,6 +167,15 @@ namespace XCEngine.Rendering.Universal { } + protected virtual void Dispose( + bool disposing) + { + if (disposing) + { + ReleaseRuntimeResources(); + } + } + protected virtual int ComputeRuntimeStateHash() { int hash = 17; @@ -173,7 +220,7 @@ namespace XCEngine.Rendering.Universal if (m_runtimeCreated && !m_disposed) { - ReleaseRuntimeResources(); + Dispose(true); } m_disposed = false;