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

85 lines
2.3 KiB
C#

using XCEngine;
using XCEngine.Rendering;
using XCEngine.Rendering.RenderGraphModule;
namespace XCEngine.Rendering.Universal
{
public sealed class DrawSkyboxPass : ScriptableRenderPass
{
public DrawSkyboxPass(
RenderPassEvent passEvent =
RenderPassEvent.RenderSkybox)
{
Configure(passEvent);
}
public void Configure(
RenderPassEvent passEvent)
{
renderPassEvent = passEvent;
}
public override void RecordRenderGraph(
RenderGraph renderGraph,
ContextContainer frameData)
{
if (renderGraph == null ||
frameData == null)
{
return;
}
RenderingData renderingData =
frameData.Get<RenderingData>();
if (renderingData == null ||
!renderingData.isMainSceneStage)
{
return;
}
RenderGraphTextureHandle primaryColorTarget =
renderGraph.primaryColorTarget;
RenderGraphTextureHandle depthTarget =
renderGraph.depthTarget;
if (!primaryColorTarget.isValid &&
!depthTarget.isValid)
{
return;
}
RenderGraphRasterPassBuilder passBuilder =
renderGraph.AddRasterPass(
"Universal.DrawSkybox");
if (primaryColorTarget.isValid)
{
passBuilder.SetColorAttachment(
primaryColorTarget);
}
if (depthTarget.isValid)
{
passBuilder.SetDepthAttachment(
depthTarget);
}
passBuilder
.SetRenderFunc(
rasterContext =>
{
rasterContext.cmd.DrawSkybox();
})
.Commit();
}
protected override bool RecordRenderGraph(
ScriptableRenderContext context,
RenderingData renderingData)
{
return context != null &&
renderingData != null &&
renderingData.isMainSceneStage &&
context.DrawSkybox();
}
}
}