85 lines
2.3 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|