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

95 lines
2.6 KiB
C#

using System;
using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public class UniversalRendererData : ScriptableRendererData
{
public UniversalMainSceneData mainScene;
public ShadowCasterBlockData shadowCaster;
public DepthPrepassBlockData depthPrepass;
public ScriptableRendererFeature[] rendererFeatures;
public UniversalRendererData()
{
mainScene = UniversalMainSceneData.CreateDefault();
shadowCaster = ShadowCasterBlockData.CreateDefault();
depthPrepass = DepthPrepassBlockData.CreateDefault();
rendererFeatures =
CreateDefaultRendererFeatures();
}
protected override ScriptableRenderer CreateRenderer()
{
return new UniversalRenderer(this);
}
protected override ScriptableRendererFeature[] CreateRendererFeatures()
{
return rendererFeatures ??
Array.Empty<ScriptableRendererFeature>();
}
private protected override string GetPipelineRendererAssetKey()
{
return "BuiltinForward";
}
private protected override string GetRenderSceneSetupPolicyAssetKey()
{
return "BuiltinDefaultSceneSetup";
}
private protected override string
GetDirectionalShadowExecutionPolicyAssetKey()
{
return "BuiltinDirectionalShadow";
}
internal UniversalMainSceneData GetMainSceneInstance()
{
if (mainScene == null)
{
mainScene =
UniversalMainSceneData.CreateDefault();
}
return mainScene;
}
internal ShadowCasterBlockData GetShadowCasterBlockInstance()
{
if (shadowCaster == null)
{
shadowCaster =
ShadowCasterBlockData.CreateDefault();
}
return shadowCaster;
}
internal DepthPrepassBlockData GetDepthPrepassBlockInstance()
{
if (depthPrepass == null)
{
depthPrepass =
DepthPrepassBlockData.CreateDefault();
}
return depthPrepass;
}
private static ScriptableRendererFeature[]
CreateDefaultRendererFeatures()
{
return new ScriptableRendererFeature[]
{
new BuiltinGaussianSplatRendererFeature(),
new BuiltinVolumetricRendererFeature()
};
}
}
}