- bridge renderer list descriptors into ScriptableRenderContext scene draw calls - reuse DrawObjectsPass across Universal and project custom renderers - add RenderObjectsRendererFeature for package-level object draw extension
86 lines
2.3 KiB
C#
86 lines
2.3 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 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 (overrideSortingSettings)
|
|
{
|
|
rendererListDesc.sorting =
|
|
sortingSettings;
|
|
}
|
|
|
|
return rendererListDesc;
|
|
}
|
|
}
|
|
}
|