54 lines
1.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|