Files
XCEngine/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/UniversalDepthPrepassBlock.cs

54 lines
1.5 KiB
C#

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);
}
}
}