Files
XCEngine/project/Assets/Scripts/ProjectRenderPipelineProbe.cs

158 lines
4.2 KiB
C#
Raw Normal View History

using XCEngine;
using XCEngine.Rendering;
using XCEngine.Rendering.Universal;
namespace ProjectScripts
{
public sealed class ProjectPostProcessColorScalePass
: ScriptableRenderPass
{
public ProjectPostProcessColorScalePass()
{
renderPassEvent =
RenderPassEvent.BeforeRenderingPostProcessing;
}
protected override bool RecordRenderGraph(
ScriptableRenderContext context,
RenderingData renderingData)
{
return context != null &&
renderingData != null &&
renderingData.isPostProcessStage &&
RecordColorScaleFullscreenPass(
context,
new Vector4(1.15f, 0.95f, 1.05f, 1.0f));
}
}
public sealed class ProjectPostProcessColorScaleFeature
: ScriptableRendererFeature
{
private ProjectPostProcessColorScalePass m_pass;
public override void Create()
{
m_pass =
new ProjectPostProcessColorScalePass();
}
public override void ConfigureCameraFramePlan(
ScriptableRenderPipelinePlanningContext context)
{
if (context == null ||
context.IsStageRequested(
CameraFrameStage.PostProcess))
{
return;
}
context.RequestFullscreenStage(
CameraFrameStage.PostProcess,
CameraFrameColorSource.MainSceneColor);
}
public override void AddRenderPasses(
ScriptableRenderer renderer,
RenderingData renderingData)
{
if (renderer == null ||
renderingData == null ||
!renderingData.isPostProcessStage)
{
return;
}
if (m_pass == null)
{
Create();
}
renderer.EnqueuePass(m_pass);
}
}
public sealed class ProjectUniversalFeaturePipelineAsset
: UniversalRenderPipelineAsset
{
public ProjectUniversalFeaturePipelineAsset()
{
rendererDataList = new ScriptableRendererData[]
{
new UniversalRendererData
{
rendererFeatures = new ScriptableRendererFeature[]
{
new ProjectPostProcessColorScaleFeature()
}
}
};
}
}
public sealed class ProjectCustomOpaquePass
: ScriptableRenderPass
{
public ProjectCustomOpaquePass()
{
renderPassEvent =
RenderPassEvent.RenderOpaques;
}
protected override bool RecordRenderGraph(
ScriptableRenderContext context,
RenderingData renderingData)
{
return context != null &&
renderingData != null &&
renderingData.isMainSceneStage &&
RecordOpaqueScenePhase(context);
}
}
public sealed class ProjectCustomRenderer
: ScriptableRenderer
{
private readonly ProjectCustomOpaquePass m_opaquePass =
new ProjectCustomOpaquePass();
protected override void AddRenderPasses(
RenderingData renderingData)
{
if (renderingData == null ||
!renderingData.isMainSceneStage)
{
return;
}
EnqueuePass(m_opaquePass);
}
}
public sealed class ProjectCustomRendererData
: ScriptableRendererData
{
protected override ScriptableRenderer CreateRenderer()
{
return new ProjectCustomRenderer();
}
protected override string GetPipelineRendererAssetKey()
{
return "BuiltinForward";
}
}
public sealed class ProjectCustomRendererPipelineAsset
: RendererBackedRenderPipelineAsset
{
public ProjectCustomRendererPipelineAsset()
{
rendererDataList = new ScriptableRendererData[]
{
new ProjectCustomRendererData()
};
}
}
}