using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { public sealed class BuiltinGaussianSplatRendererFeature : ScriptableRendererFeature { public RenderPassEvent passEvent = RenderPassEvent.BeforeRenderingTransparents; private readonly UniversalNativeSceneFeatureController m_controller = new UniversalNativeSceneFeatureController( NativeSceneFeaturePassId .BuiltinGaussianSplat); protected override int ComputeRuntimeStateHash() { int hash = base.ComputeRuntimeStateHash(); return m_controller.AppendRuntimeStateHash( hash, passEvent); } public override void Create() { m_controller.Create(passEvent); } public override void AddRenderPasses( ScriptableRenderer renderer, RenderingData renderingData) { if (renderer == null || renderingData == null || !renderingData.isMainSceneStage) { return; } CreateInstance(); m_controller.EnqueuePass( renderer, renderingData, passEvent); } } }