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

63 lines
1.8 KiB
C#

using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public sealed class UniversalRenderPipeline
: ScriptableRenderPipeline
{
private readonly UniversalRenderPipelineAsset m_asset;
public UniversalRenderPipeline(
UniversalRenderPipelineAsset asset)
{
m_asset = asset;
}
protected override bool SupportsStageRenderGraph(
CameraFrameStage stage)
{
return SupportsStageRenderGraphContextual(
stage,
-1);
}
protected override bool SupportsStageRenderGraphContextual(
CameraFrameStage stage,
int rendererIndex)
{
ScriptableRenderer renderer =
ResolveRenderer(rendererIndex);
return renderer != null &&
renderer.SupportsRendererRecordingInstance(
new RendererRecordingContext(
stage,
rendererIndex));
}
protected override bool RecordStageRenderGraph(
ScriptableRenderContext context)
{
if (context == null)
{
return false;
}
RendererRecordingContext recordingContext =
new RendererRecordingContext(context);
ScriptableRenderer renderer =
ResolveRenderer(recordingContext.rendererIndex);
return renderer != null &&
renderer.RecordRendererInstance(recordingContext);
}
private ScriptableRenderer ResolveRenderer(
int rendererIndex)
{
return m_asset != null
? m_asset.ResolveRenderer(rendererIndex)
: null;
}
}
}