63 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|