Unity自定义阴影-获取光源处深度图

前言

如果我们要自定义阴影,通过之前的文章,我们知道我们需要知道光源处的深度图和物体在光源处的深度,然后进行对比。然而在项目中,假如我们使用了unity阴影,则说明已经有了这张深度图。如果我们重新在渲染一个光源处的深度图,就会使多出一倍的渲染消耗。
如果我们能拿到已经有的那个深度图问题就轻松多了。

将光源处深度图转化为可采样格式

通过CommandBuffer转换shadowmap的采样格式:
CommandBuffer.SetShadowSamplingMode(shadowmap, ShadowSamplingMode.RawDepth);
然后将此图复制出来,设置并设置为全局变量供shader使用。

  [ExecuteInEditMode]
  public class CustomLight : MonoBehaviour
    {
        private Light mLight;
        private bool isAdd;
        CommandBuffer cb;
        public RenderTextureFormat format=RenderTextureFormat.Shadowmap;
        public LightEvent LightEvent= LightEvent.AfterShadowMap;	       
        private void OnDisable()
        {
    

猜你喜欢

转载自blog.csdn.net/u010778229/article/details/118150172
今日推荐