现世代到新世代 游戏图像表现要素高动态光照

小编:Ocean 2013/10/10 11:02

本文原文是游戏记者西川善司在fami通杂志上的科普专栏文章。在享受游戏画面的同时,玩家也需要知道是什么带来了让人震撼的效果。继法线贴图和自投射阴影后,最后让我们来介绍一下三种神器的最后一种,高动态光照(HDR光照)。

让现实世界的亮度在屏幕上重现的HDR

现实世界中,有酒吧那样阴暗的场所,也有晴日的滑雪场那样明亮的场所。人的眼睛能自动调节瞳孔,适应种种场合来观察世界。

游戏世界的影像是通过控制大量不同三原色亮度的像素组成的。从初代PS到PS2,RGB的值都是8位(0-255)。全黑就是0,这都没什么问题,但被电灯照到的脸,被阳光照到的脸,画面最亮的部分都被限制到了255。这对阴影的计算造成了很大的限制。

比如说,现实中的沥青路,光线反射率是只有7%。所以路面看上去是黑色的。但即便如此,在夏日,沥青路面看上去也是钝光的,因为太阳非常明亮,即便只有7%的反射率,我们看上去都是发光的。

而一个像素只能表现8位的RGB值。PS2时代之前的游戏图像,因为电灯和太阳的亮度都只能取成同样的值,在表现阴影上是很困难的。

在夜晚被星光照亮的地面,亮度值只有百万分之一流明/平方米,阳光下的雪地亮度有100万流明/平方米,要表现这种亮度,需要10的12次方那么大的数值。而8位体系只能表现10的2.4次方。动态范围不足的问题是很明显的。

360和PS3的GPU对单个像素,可以用浮点数和16位,32位的整数来进行处理。也就是能实现更高的动态范围。于是能正确反应现实世界光照差别的“高动态光照”在这个世代被积极导入进了游戏制作。

高动态光照带来的三个功效

高动态光照的功效,第一是不受场景明暗限制,能更真实的还原材质的阴影。比如说,光源的亮度是65535(16位的最大值),反射度为7%的沥青路面亮度就是4587,阴影的数值范围大了很多。

不过一般家庭用的显示器不能直接表现出高动态光照。就算雪地场景使用了高动态光照,显示器也无法表现出那种需要遮阳镜的亮度。最近也有支持更高色深的产品(DEEP COLOR ),但一个像素8位色深还是基本状况,显示器的显示亮度也没有很大的变化。那么为什么高动态光照并不是没有意义的呢?

之前我们说了,人的眼睛能自动调节瞳孔,适应种种场合来观察世界。这个概念也能适用到游戏图像领域。首先把漆黑到高亮度场景用高动态光照得出的结果求得平均值,基于这个平均值,用8位的数据来概括表现高动态光照的结果。这种处理叫做“调和映射”。

好不容易能用更大的数据范围进行了计算,是不是结果毫无用处呢?这种处理就能够模仿出“人眼自动调节瞳孔”的行为。延迟几个帧数,分阶段地进行以上处理,就能模拟出“一开始太耀眼什么都看不到”“一开始太暗什么都看不到”这样人眼适应明亮或者阴暗场所的效果。这是高动态光照的第二个功效。

 

 

左边的画面没有进行调和映射,亮部完全饱和,阴影不明显。

右边使用了调和映射,亮部能表现出层级。

 

 

高动态光照的范例《半条命2》

调和映射后的画面和原本没有什么改变。在调和映射时,将高亮度部分从缓冲中取出,使用像素着色器将其模糊,然后叠加到原本的图像上,这样高亮度的地方就会表现出眩光效果(PS婚纱照常用的技术)。

在用8位数据概括高动态光照信息时会造成信息损失。但如果将损失掉的亮度信息中数值高的部分单独抽出来,像合成照片一样叠加在源图像上,就能表现出光芒溢出的眩光效果。这是高动态光照的第三个功效。

这三个功效不仅仅能作用于产生现实主义风格图像,根据使用者的艺术感觉,也能生成印象派的图像。高动态光照受到了现实主义派和艺术派两方的欢迎。

现时代机型主流的模拟高动态光照

PS3规格上可以对一个像素进行16位以上的渲染。但这样系统负担非常高。所以和PS2一样,8位色深是主流,这也就是所谓的“模拟高动态光照”。

比如说,将普通亮度分为0-127,0-63,高亮部分分为128-255,64-255进行渲染。这样一来就可以在8位系统下获得原本2倍或者4倍的动态范围。不过这种模拟高动态的做法,会让色阶的分辨率下降到一半或者四分之一。

 

 

A就是把普通亮度部分用0-127表示的例子,A'是0-63的例子。在这里色阶表现能力的差别就很明显。不过B和B'的情况表现就不那么明显了。PS3上,这种模拟高动态表现法是主流。

上一个:《讨鬼传》电击特典御魂 完美人妻紫之上登场

下一个:《龙之皇冠》升级第四弹 支持PSV与PS3联机

推荐手游