- expose directional shadow planning settings on camera request context\n- let the managed universal asset override planner defaults\n- recompute native directional shadow requests only when settings change
92 lines
2.6 KiB
C#
92 lines
2.6 KiB
C#
using XCEngine;
|
|
using XCEngine.Rendering;
|
|
|
|
namespace XCEngine.Rendering.Universal
|
|
{
|
|
public class UniversalRenderPipelineAsset
|
|
: RendererBackedRenderPipelineAsset
|
|
{
|
|
public UniversalShadowSettings shadows;
|
|
|
|
public UniversalRenderPipelineAsset()
|
|
{
|
|
shadows =
|
|
UniversalShadowSettings.CreateDefault();
|
|
}
|
|
|
|
protected override ScriptableRenderPipeline
|
|
CreateRendererBackedPipeline()
|
|
{
|
|
return new UniversalRenderPipeline(this);
|
|
}
|
|
|
|
protected override void ConfigureRendererCameraRequest(
|
|
RendererCameraRequestContext context)
|
|
{
|
|
if (context == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
UniversalShadowSettings shadowSettings =
|
|
GetShadowSettingsInstance();
|
|
if (!shadowSettings.supportsMainLightShadows)
|
|
{
|
|
if (context.hasDirectionalShadow)
|
|
{
|
|
context.ClearDirectionalShadow();
|
|
}
|
|
return;
|
|
}
|
|
|
|
DirectionalShadowPlanningSettings desiredPlanningSettings =
|
|
shadowSettings.mainLightPlanningSettings;
|
|
if (!context.directionalShadowPlanningSettings
|
|
.Equals(desiredPlanningSettings))
|
|
{
|
|
context.directionalShadowPlanningSettings =
|
|
desiredPlanningSettings;
|
|
}
|
|
}
|
|
|
|
protected override ScriptableRendererData
|
|
CreateDefaultRendererData()
|
|
{
|
|
return new UniversalRendererData();
|
|
}
|
|
|
|
protected override int ResolveRendererIndex(
|
|
CameraRenderRequestContext context)
|
|
{
|
|
Camera camera =
|
|
context != null
|
|
? context.camera
|
|
: null;
|
|
if (camera != null)
|
|
{
|
|
UniversalAdditionalCameraData additionalCameraData =
|
|
camera.GetComponent<UniversalAdditionalCameraData>();
|
|
if (additionalCameraData != null &&
|
|
additionalCameraData.hasRendererOverride)
|
|
{
|
|
return additionalCameraData.rendererIndex;
|
|
}
|
|
}
|
|
|
|
return base.ResolveRendererIndex(context);
|
|
}
|
|
|
|
private UniversalShadowSettings GetShadowSettingsInstance()
|
|
{
|
|
if (shadows == null)
|
|
{
|
|
shadows =
|
|
UniversalShadowSettings.CreateDefault();
|
|
}
|
|
|
|
return shadows;
|
|
}
|
|
}
|
|
}
|
|
|