游戏实时阴影计算方法
1.平面投影阴影
2.投影阴影
实际上就是先进行平面投影,将阴影渲染进阴影纹理中,然后再渲染阴影接受者,并且与阴影纹理进行混合
3.阴影映射
Unity默认的实时阴影方案
阴影映射问题-自阴影
在Unity中,light组件中可以很方便得对阴影的偏移进行设置
阴影映射问题-走样
透视走样的解决方案-级联阴影映射
对不同距离的物体,进行不同精度的深度阴影采样
在Urp渲染管线中,您可以非常方便得在渲染文件中进行设置
重采样误差
因为级联阴影映射是一张动态生成的纹理,所以,在我们移动摄像机时,对应的纹理也在改变,就会导致阴影的抖动,这就是重采样误差
重采样误差可以使用滤波来解决,所谓滤波,就是使用一个滤波核(一般使用高斯核,也就是ps里常用的高斯模糊效果),遍历每一个像素,使像素的颜色与周围颜色进行混合,达到模糊的效果,以弱化阴影的抖动,并顺带实现了软阴影。
Unity阴影映射优化总结
·使用深度偏移和法线偏移解决自阴影的问题,
·使用级联阴影映射解决透视投影的问题,
·使用PCF解决重采样的问题,并且产生软阴影的效果。