在现实世界中,有些表面是半透明的(不要与透明混淆),这意味着光能穿过其表面并散射于其内部。现实世界中半透明表面的部分例子为人体皮肤,葡萄,蜡,以及牛奶。在3D图形中对光的这种独特行为建模称作次表面散射或SSS。与大多数实时3D渲染方案相同,程序员已经提出了数种近似这种效果的方法,而无需在分子水平上模拟光的反弹。《荒野之息》中所用的方法相对简单但很有效。
任何应具有一定程度半透明度的表面都将会有多层材质以生成次表面散射。第一层是内部材质。这种材质通常用照明信息来烘培,使其具有半透明的样子。光穿过材质但实际上并没有实时照明材质本身。在这种材质之上的材质就是表面材质。这种材质在两者中持主导地位,在大多数光照条件下你所看到的都是这种材质。
这些材质之间的关系以这样的方式运作,即任一材质的主要外观总是由入射光与透射光之间的比率决定。如果表面材质反射的光比内部材质透射的光更多,那么表面材质的不透明度将与其接收的光成正比例增长。如果内部材质透射的光比表面材质反射的光多,那么表面材质的不透明度将与其未接收的光成正比例降低。根据入射率/透射率来平衡表面材质的不透明度是非常巧妙且效率高的一种方法,可以使材质具有次表面散射效果。
观察建议:注意能够在外部表面看到马厩内部的光的漫反射照明。林克在屋顶上的阴影同时也被了来自内部的光照照明,但当在地面时不会这样。
更新:对次表面散射的进一步调查。当更多的太阳光照明这些植被时,其下侧的亮度/颜色会发生变化。
观察建议:注意表面材质是如何因为接收了更多的光线而变得更不透明,使其内部材质变得模糊。
观察建议:注意表面材质是如何因为接收了较少的光线而变得更加清晰,使其内部材质变得清楚。
Dynamically Localized Lightning Illumination | 动态局部闪电照明
许多游戏通过将闪电作为全局光源而实现环境照明,在整个环境中闪烁,所有阴影投射器都以预定的大小和方向投射阴影。
在《荒野之息》中,雷击基本上就是超大的一坨相机闪光灯,每一个都有着自己的半径与强度,并且能够在地图上的任何一处劈下,无论玩家位于何处。《荒野之息》其闪电的有趣之处在于阴影动态地对应于阴影投射器最近的雷击的强度与位置。这一系统可能是我在所有游戏中见过的最酷的闪电系统。
观察建议:注意每一次雷击时其阴影大小,方向与对比度的变化。
Per-Pixel Sky Irradiance | 逐像素天空辐照度
如果说辐射率是来自太阳的辐射量的话,那么辐照度就可以说是给定表面实际接收的辐射量。对于散射天光来说,这是一个相当重要的变量,因为我们之所以能够在夜晚看向太空的主要原因就是因为没有它!《荒野之息》使用一种跟踪太阳相对于天顶位置的算法来计算辐照度,并且在日落期间,它开始逐像素地移除天光,直至没有剩下的辐照度为止。当天空中没有了云层与米氏散射后,星星将开始出现在天空中,即便天还没有完全黑下来。夜晚与白天之间的颜色渐变过渡实在是令人印象深刻。
观察建议:本身你是可以在太阳落山时星星出现的,但由于Twitter+动态二重压缩,这一点也就看不到了。
Fog inscatter | 雾光散射
在现实世界中,雾像物理对象那样接收光与影。如果雾是体积的话,那么计算机图形的计算效率就会很低。《荒野之息》通过创建一份雾噪声模式(类似于它们的环境光遮蔽噪声模式,但不限于屏幕空间)并应用来自太阳和天光的辐射值来生成光散射来解决这个问题。当你将其与阴影体结合使用时,不仅可以获得体积光照,即便在没有体积的情况下它看起来也会像是有体积的雾。
观察建议:注意山上的雾是如何呈现出环境中可用光的颜色的,同时看起来还很有体积感。
Particle Lights | 粒子光源
游戏中几乎每一个粒子都是自发光的。其中许多同时也照明了环境。许多粒子不是将粒子视作物体而渲染,而是可以在3D空间的所有方向上发光的简单的点光源。
观察建议:注意无论相机如何移动,发光的余烬是如何在3D空间内独立移动的。
观察建议:雪粒子在《荒野之息》中是视为粒子光源渲染的。一种产生了雪粒子能够反射太阳光的错觉的方法。不过这也可能仅仅是不同的美术选择就是了。
观察建议:注意萤火虫是如何照明它们周边环境的。
Puddle formation and evaporation | 水坑的形成与蒸发
上一篇:心理学教授:枪击甩锅游戏等于将自杀怪罪香蕉
下一篇:《无人深空》免费章节新预告 史上最大更新、支持VR