由于Universal Render Pipeline目前(2020年4月1日)把阴影淡入淡出这个功能竟然给取消了…我自己拿片元位置到相机位置的距离进行了一个淡化,但是阴影边缘老是被裁切…后来研究了一下Unity里面这个CBuffer是干嘛的。有一些结论,鉴于似乎没搜到,就发个博客吧。。。

至于这些东西为啥是这样…,我也不知道。。。反正人家Unity就是这么干的

unity_ShadowFadeCenterAndType决定了阴影消散的中心:xyz保存的是camPos +  normalize( camFront ) * 0.26666f * shadowDistance, type是1或者0(没细研究,这里不需要)。

_LightShadowData决定了淡化的范围:z: 5/_ShadowDistance,  w保存了一个被z决定的值(2.66666)。需要细说一下。。。

根据阴影中心的计算方式,阴影中心坐标在相机位置的前方0.2666(1/3.75)倍阴影距离处,以这个中心画一个(1-0.266666)的圆,当作阴影的边界,使得正前方的阴影距离刚好是设置好的阴影距离(对,两侧的距离确实不够shadowDistance,要不然不会被裁掉)。这个时候可以用ComputeShadowFade函数里面的式子算一下,直接代入完全散尽的阴影处距离(2.75/3.75=0.73333)shadowDistance:

(2.75/3.75)*_shadowDistance  * 5/ shadowDistance  = (2.75*5)/3.75 = 3.666666 = 2.6666666+1

阴影渐变开始的最远近距离处(圆心偏了…所以会这样)为0。这里的新的常数5是控制阴影衰减范围的一个参数,后面另它为变量k,改变k可以控制阴影淡入淡出范围。

这里可以明显看出来,这个_LightShadowData.w就是让最远处为1的一个偏移修正值。既然是这样,那么这个5也可以用来改变控制阴影淡入淡出的范围,假定我们需要让阴影的c%是渐变的。那么可以计算出来控制参数

k=1/c

offset = k * 0.7333 - 1

这个offset就是_LightShadowData的w值了

主要是在这里不太会打公式。。。等我弄好公式把pdf放到Gitgub吧…

最新文章

  1. DIV+CSS:Margin和Padding属性[转载]
  2. http://blog.csdn.net/czmchen/article/details/42392985
  3. android 学习(1)
  4. uva 10491
  5. asp.net下通过泛解析和伪静态实现二级域名的实现方法
  6. R2的版本由来
  7. 《Entity Framework 6 Recipes》中文翻译——第十二章自定义EntityFramework对象(一)
  8. iOS学习之详解AppDelegate
  9. jQuery的类数组对象结构
  10. Qt使用快捷键
  11. 跟着辛星认识一下PHP的自己主动载入
  12. Express安装入门与模版引擎ejs
  13. 七牛整合 ueditor (拦住那头牛,七牛又如何)
  14. ASP.NET Core 2.x On Ubuntu
  15. apicloud实现各种自定义弹层组件
  16. VS2013中Nuget程序包管理器控制台使用入门(二)-如何使用Nuget提供的帮助(原创)
  17. MAC算法
  18. 初次使用visual studio
  19. 第24次Scrum会议(11/12)【欢迎来怼】
  20. BZOJ 3438 小M的作物 & BZOJ 1877 [SDOI2009]晨跑

热门文章

  1. 状压dp 持续更新
  2. 修改gridfilters.js源码,往后台多传递一个参数,并设置NumericFilter、StringFilter默认提示信息
  3. JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线
  4. SpringBoot入门系列(四)整合模板引擎Thymeleaf
  5. VUE实现Studio管理后台(完结):标签式输入、名值对输入、对话框(modal dialog)
  6. Redis系列三 - 缓存雪崩、击穿、穿透
  7. 看完这篇 HTTPS,和面试官扯皮就没问题了
  8. 最全Redis基础知识
  9. 回想笔记 瞎比比 域名注册 解析绑定ip 下载证书 设置证书 重定向http到https请求
  10. 树链剖分与倍增求LCA