前言
在unity最新渲染管线HDRP中是通过Volume控制Shadows的最大距离MaxDistance的,距离相机超出该最大距离的物体是不会投射阴影的。
具体实现
阴影最大距离的控制是在Vlume中的VolumeProfile类中,当然也可以直接通过VolumeProfile来控制;此处比较坑的地方是可视化面板中的字段和VolumeProfile类中的字段并不一致,应该是和其他类有冲突,此处阴影设置的类名为HDShadowSettings。
using UnityEngine.Rendering;
using UnityEngine.Rendering.HighDefinition;
public class VolumeMgr : UnitySingleton<VolumeMgr>
{
public VolumeProfile globalVolumeProfile;
public void SetHDShadowDistance(float distance)
{
if (globalVolumeProfile.TryGet<HDShadowSettings>(out var shadow))
{
shadow.maxShadowDistance.SetValue(new FloatParameter(distance, true));
}
}
}
|