本页将介绍阴影级联的技术实现详细信息。
方向光通常模拟太阳光,单个方向光即可照亮整个场景。这意味着方向光的阴影贴图会覆盖场景的大部分,因此可能会引起称为“透视锯齿”的问题。透视锯齿是指靠近摄像机的阴影贴图像素看起来比那些更远的像素更大块。
发生透视锯齿的原因是按摄像机的视角不成比例地缩放阴影贴图的不同区域。光照阴影贴图只需覆盖摄像机可见场景的一部分;该部分是按摄像机的视锥体定义的。如果想象一种简单情况,方向光直接来自上方,即可看出视锥体和阴影贴图之间的关系。
在这个简化的示例中,视锥体的远端被阴影贴图的 20 个像素覆盖,而近端仅被 4 个像素覆盖。但是,两端都在屏幕上显示为相同大小。结果是,对于靠近摄像机的阴影区域,贴图的分辨率实际上低得多。
使用柔和阴影 (Soft Shadows) 选项以及将更高分辨率用于阴影贴图时,透视锯齿不会那么明显。但是,这些解决方案在渲染时会使用更多的内存和带宽。
使用阴影级联时,Unity 可以根据与摄像机的距离将视锥体区域分成两个区域。近端区域使用尺寸减小的单独阴影贴图(但具有相同分辨率)。阴影贴图大小的这些分阶段缩减做法称为级联阴影贴图(有时称为“平行拆分阴影贴图”)。