using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { internal sealed class UniversalDepthPrepassBlock { private readonly DrawObjectsPass m_drawDepthPrepass = new DrawObjectsPass( RenderPassEvent.BeforeRenderingPrePasses, SceneRenderPhase.Opaque, RendererListDesc.CreateDefault( RendererListType.Opaque)); public void ConfigureCameraFramePlan( ScriptableRenderPipelinePlanningContext context, DepthPrepassBlockData depthPrepass) { if (context == null) { return; } if (depthPrepass != null && depthPrepass.enabled && context.RequestCameraDepthOnlyStage()) { return; } context.ClearDepthOnlyStage(); } public void EnqueueRenderPasses( ScriptableRenderer renderer, DepthPrepassBlockData depthPrepass) { if (renderer == null || depthPrepass == null || !depthPrepass.enabled) { return; } m_drawDepthPrepass.Configure( depthPrepass.passEvent, SceneRenderPhase.Opaque, depthPrepass.rendererListDesc, depthPrepass.drawingSettings); renderer.EnqueuePass(m_drawDepthPrepass); } } }