Files
XCEngine/managed/XCEngine.RenderPipelines.Universal/Rendering/Universal/RenderObjectsRendererFeature.cs
ssdfasd db7f427112 feat(srp): add render queue range authoring
- add a core RenderQueueRange helper for managed scene draw filtering
- let FilteringSettings and RenderObjectsRendererFeature consume queue ranges directly
- wire the new authoring path into probes and project-side usage
2026-04-20 22:10:18 +08:00

95 lines
2.6 KiB
C#

using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public sealed class RenderObjectsRendererFeature
: ScriptableRendererFeature
{
private DrawObjectsPass m_pass;
public RenderPassEvent passEvent =
RenderPassEvent.AfterRenderingOpaques;
public SceneRenderPhase scenePhase =
SceneRenderPhase.Opaque;
public RendererListType rendererListType =
RendererListType.Opaque;
public bool overrideRenderQueueRange;
public RenderQueueRange renderQueueRange =
RenderQueueRange.Opaque;
public bool overrideFilteringSettings;
public FilteringSettings filteringSettings;
public bool overrideSortingSettings;
public SortingSettings sortingSettings;
public override void Create()
{
RendererListDesc rendererListDesc =
BuildRendererListDesc();
if (m_pass == null)
{
m_pass =
new DrawObjectsPass(
passEvent,
scenePhase,
rendererListDesc);
return;
}
m_pass.Configure(
passEvent,
scenePhase,
rendererListDesc);
}
public override void AddRenderPasses(
ScriptableRenderer renderer,
RenderingData renderingData)
{
if (renderer == null ||
renderingData == null ||
!renderingData.isMainSceneStage)
{
return;
}
if (m_pass == null)
{
Create();
}
m_pass.Configure(
passEvent,
scenePhase,
BuildRendererListDesc());
renderer.EnqueuePass(m_pass);
}
private RendererListDesc BuildRendererListDesc()
{
RendererListDesc rendererListDesc =
RendererListDesc.CreateDefault(
rendererListType);
if (overrideFilteringSettings)
{
rendererListDesc.filtering =
filteringSettings;
}
if (overrideRenderQueueRange)
{
rendererListDesc.filtering.renderQueueRange =
renderQueueRange;
}
if (overrideSortingSettings)
{
rendererListDesc.sorting =
sortingSettings;
}
return rendererListDesc;
}
}
}