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,带 个级联的软阴影。

 

 

你可能感兴趣的:(Unity3D学习之方向性阴影详情)