using System; using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { public class UniversalRendererData : ScriptableRendererData { public UniversalMainSceneData mainScene; public ScriptableRendererFeature[] rendererFeatures; public UniversalRendererData() { mainScene = UniversalMainSceneData.CreateDefault(); rendererFeatures = CreateDefaultRendererFeatures(); } protected override ScriptableRenderer CreateRenderer() { return new UniversalRenderer(this); } protected override ScriptableRendererFeature[] CreateRendererFeatures() { return rendererFeatures ?? Array.Empty(); } protected override string GetPipelineRendererAssetKey() { return "BuiltinForward"; } protected override string GetCameraFrameStandalonePassAssetKey( CameraFrameStage stage) { switch (stage) { case CameraFrameStage.ShadowCaster: return "BuiltinShadowCaster"; default: return base .GetCameraFrameStandalonePassAssetKey( stage); } } internal UniversalMainSceneData GetMainSceneInstance() { if (mainScene == null) { mainScene = UniversalMainSceneData.CreateDefault(); } return mainScene; } private static ScriptableRendererFeature[] CreateDefaultRendererFeatures() { return new ScriptableRendererFeature[] { new BuiltinGaussianSplatRendererFeature(), new BuiltinVolumetricRendererFeature() }; } } }