Unity3D学习之方向性阴影详情

      注意:在移动平台上,方向灯的实时阴影始终使用 个阴影级联,并为硬阴影 (Hard Shadows)

      方向灯大多用于室外游戏的关键性灯光 – 日光或月光 – 中。可见距离非常大,特别是在第一人称和第三人称游戏中,往往需要对阴影进行一些调整,以获得最佳质量和性能平衡效果,适应当时的情况。

      首先从第三人称角度游戏效果优良的阴影设置开始:


图中的阴影看起来非常漂亮!

在该图中,可见距离大约为 50 游戏单位,所以在质量设置 (Quality Settings) 中将阴影距离 (Shadow Distance) 设为 50。同样,阴影级联 (Shadow Cascades) 设为 4,阴影分辨率 (Shadow Resolution) 设为高,灯光使用软阴影 (Soft Shadows)

下列章节仔细分析了方向灯阴影的每个方面:

· 硬阴影与软阴影

· 阴影级联 (Shadow Cascade) 

· 阴影距离很重要!

 

硬阴影与软阴影

       采用相同灯光设置,如果将阴影类型 (Shadow Type) 切换成硬阴影 (Hard Shadows),那么从照明区域到阴影区域的过度为,对象完全在阴影下或完全在照明区。硬阴影渲染较快,但通常看起来不太真实。文章出处【狗刨学习网】


距离为 50,带 个级联的硬阴影。

 

阴影级联 (Shadow Cascade) 

       对于方向灯,Unity 可使用级联阴影贴图 (Cascaded Shadow Maps)(或者叫做平行分割阴影贴图 (Parallel Split Shadow Maps)”)提供很好的阴影效果,特别是可视距离较长的情况。级联阴影将可视区域分割成几个逐步变大的部分,每个部分使用相同大小的阴影贴图,使接近观看者的对象的阴影贴图像素比远距离对象的较高。

在下图中,我们将使用硬阴影,因为阴影像素在该图中的可见度更高。

       如果未使用级联阴影贴图,整个阴影距离(依然是 50 单位)必须被阴影纹理均匀覆盖。没有级联,硬阴影看起来就像这样:


距离为 50 的硬阴影,无级联。

 

      每个地方的阴影纹理像素大小都相同。在远处看起来还不错,但不是越近质量就越高。阴影纹理覆盖整个可视区域。如果将其可视化,看起来就像这样:


无级联,阴影纹理均匀覆盖整个可视区域。

 

       使用两个阴影级联时,整个阴影距离分成靠近观看者的一小块和远距离的一大块。带两个级联的硬阴影看起来就像这样:


距离为 50,带 个级联的硬阴影。

牺牲一点点性能,我们可获得近处更好的阴影分辨率。

 


带 个级联,两个阴影纹理覆盖可视区域中大小不同的部分。

 

      最后,使用 个级联时,阴影距离被分成四个逐渐变大的部分。带 个级联的硬阴影看起来就像这样:


距离为 50,带 个级联的硬阴影。快看,可以看到了!


带 个级联,个阴影纹理覆盖可视区域中大小不同的部分。

 

阴影距离很重要!

      阴影距离 (Shadow Distance) 对于方向灯阴影的质量和性能都极其重要。同阴影级联数一样,阴影距离也可在质量设置 (Quality Settings) 中设定,轻松按比例降低性能较低硬件中的阴影。

       在阴影距离末端,阴影淡出,更远的对象无阴影。在大多数情况下,游戏中超过特定距离的阴影不会被注意到!

       没有阴影级联,阴影距离设为 20 的硬阴影效果见下图。请注意,远处的阴影会淡出。同时,阴影质量比没有级联且距离为 50 单位的质量要高。

 

距离为 20,无级联的硬阴影。

       如果将阴影距离设得太高,效果看起来会很差。在该图中,将距离设为 100 只会降低质量和性能,没有太大意义,场景中没有哪个对象超过 50 米远!

 

距离为 100,无级联的硬阴影。哎!

       带级联大小和距离的阴影贴图要好得多。比如,相机前覆盖 300 单位的 级联软阴影见下图。在一定程度上说比本页顶端的图片效果差,但阴影距离增大 倍后也不错(当然,在该场景中阴影距离大没有什么意义)。

 

距离为 300,带 个级联的软阴影。

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页