尚冰
【摘要】随着技术的发展,3D游戏画面越来越趋于真实化,游戏用户不但要求游戏中的每一种物体具有真实的外观以及物理特性,同时还要有真实的光影效果。HDR高动态实时光照渲染目前是一种在3D游戏中流行特效技术,它能实时模拟真实的光照环境,通过光线实时计算及渲染体现物体质感与细节,以实现对游戏画面真实性的要求。本文主要探讨了HDR特效的技术原理、HDR与Bloom的区别以及游戏中HDR特效实现方法等。
【关键词】3D游戏;HDR特效;Bloom特效;实时渲染
1.概述
3D游戏制作中,照明计算量庞大,早期游戏制作人员通常借助图像像素的R、G、B值计算该点的灰度值,由灰度值计算场景的亮度, 但是现实中的照明信息仅用一个8bit的RGB图像描述,当场景亮度、对比度大到一定程度时,就不再能真实地记录场景亮度信息,导致部分亮度信息丢失,这也将使场景中的真实的光影效果等无法体现。HDR特效技术解决了这一问题。在游戏领域,HDR特效指的就是HDR实时渲染,它通过HDR高动态范围光照非线性的调和映射到显示器能够显示的LDR低动态光照范围,最大程度保存了明暗对比细节,这使为3D 游戏场景提供高度仿真的光照效果成为可能。HDR特效最早是在nVIDIA的显卡实现的,ATI的SMARTSHADER技术也包含这种HDR技术。如今能否实现HDR特效已经成为游戏用户判断一款3D游戏是否优秀的标准之一。
2.HDR特效的技术原理
HDR特效包括曝光控制和光晕效果两个环节。曝光控制是其核心环节,主要是计算当前要渲染的高动态范围图像的平均亮度,然后根据平均亮度确定一个曝光参数,通过这个曝光参数将图像正确地映射到屏幕能显示的颜色区域内;即将高动态范围的图像映射到电脑屏幕能够显示的的范围内,这一过程在HDR渲染中被称之为Tone Mapping(调和映射)。调和映射有不同的算法,但都是从高动态范围到低动态范围的一个映射,统称为 Tone Mapping Operator(TMO),TMO的质量的高低直接决定了图像的最终质量。所谓光晕效果,就是抽出场景中色彩比较亮的部分,然后加以模糊,使这些较亮的像素扩散到周围的像素中,再把模糊后的图像叠加在Tone Mapping之后的图像上;光晕效果对表现高亮的像素起着非常重要的作用。
需要说明的是,在曝光控制与光晕效果在开始之前,需获得一个高动态范围的图像(HDRI)。高动态范围图像的每个像素都由浮点型的R,G,B分量表示,每个R,G,B分量值可以任意大。对渲染器而言,每个像素就是一个浮点纹理。要将3D场景渲染到一个高动态范围的浮点纹理中。首先为3D场景中的每个表面创建一张浮点格式的光照贴图,光照贴图的每个像素代表了表面上相应位置的光强。然后使用OpenGL的FBO(帧缓冲对象)将绑定了浮点光照贴图的场景渲染到一个同屏幕大小一致的浮点纹理中。
3.3D游戏中的HDR特效
3.1 HDR+AA/AF
在3D游戏中,HDR实时渲染可使游戏画面中亮的部分更加明亮,暗的地方更加黑暗,整个画面的细节丰富而清晰,以实现真实的光影效果。但AA(全屏抗锯齿)和AF(各向异性过滤)也对画面的质量起至关重要的作用。全屏抗锯齿技术能够消除画面中图形边缘的锯齿,使画面看起来更为平滑。各向异性过滤则是一种特殊的过滤技术,可对部分相对不重要的视觉部分减少精度,从而提高显示速度。HDR与AA/AF在技术上没有直接的关系,但3D游戏开启HDR后如AA缺失画面将出现明显的锯齿,只有HDR+AA/AF才可以实现完美的高精度的图像,实现AA/AF在提高画面质量的同时也成为衡量显卡性能的重要标准。但是在早期,显卡技术不成熟,这导致在多数3D游戏无法实现在HDR渲染的情况下再开启AA。
3.2 HDR类型
HDR动态3D渲染是对3D游戏场景的光线进行实时计算,生成动态、实时的3D高动态范围光照。HDR动态3D渲染有4种:FP16 HDR、FP24 HDR、FP32 HDR.、INT HDR。FP16 HDR即16位半精度浮点HDR,每通道16bit,速度快,但效果较差,早期支持HDR的游戏大都是FP16HDR。.FP24 HDR 即24位浮点HDR,每通道采用24bit。速度较快,效果也较好。FP32 HDR即32位单精度浮点HDR,每通道32bit,速度较慢,效果比FP16和24 HDR好,对显卡运算性能要求很高,被目前大多数新游戏采用。.INT HDR即整数HDR,计算过程采用32位单精度浮点,储存采用整数。效果优于FP16 HDR和FP24HDR,但逊于FP32 HDR,由于速度慢、编程困难,现已被淘汰。
3.3 3D游戏中的HDR特效与Bloom特效区别
Bloom“全屏泛光”,是虚幻3游戏引擎中最为通用的特效技术,其实现主要依赖于PostProcess框架,即实时绘制当前场景到一后台渲染表面,而后针对其对应贴图进行像素级渲染。Bloom和HDR不同之处主要表现在几个方面:
第一,HDR效果是超亮的光照与超暗的黑暗的某种结合,这个效果是光照产生的。强度、颜色等通过游戏程序可以动态控制;bloom特效则是物体本身发出的光,仅仅是将光照范围调高到过饱和,这是游戏程序无法动态控制的。bloom效果实现的光照强度可能不会很真实,同时也是不可变的。
第二,实现BLOOM特果无需HDR,它只支持8位RGBA,而HDR最高支持到32位RGBA。其实现效果受到限制
第三,实现BLOOM特效较为简单,Bloom效果不受显卡的性能的限制,TNT显卡上也可实现bloom效果。而HDR特效,必须是nVIDIA6XXX以上的显卡才能够实现,nVIDIA和ATI的显卡所实现的HDR是有区别的,从画面效果来看,nVIDIA的显卡实现的HDR好些。从技术角度而言,ATI的HDR是另一种途径实现的尽可能接近的HDR,不能算“真”HDR,即使ATI的R520也只能实现FP16 HDR的效果。
图1 Bloom特效开启
实际上,游戏开发商常常将两种特效一起使用以达到一个最终的效果。你在游戏中,从黑暗的房间中走到太阳地中,你眼前的景物会很刺眼,随后亮度会降低,完全就同现实中的情况一致。这就是HDR特效的威力。而bloom效果实现的光照强度可能不会很真实,同时也是不可变的。下图是Bloom特效的演示,如图1所示。
4.3D游戏中HDR特效的实现
在3D游戏中,HDR特效并不是标准的光线模式,它只是—个虚拟的渲染算法。通过提高图片的亮度来为将要渲染的场景指定环境光源。HDR在3D游戏中可以模拟肉眼适应光线的变化,让场景更加逼真,提升游戏的真实感,同时也让景色更加鲜明,阴暗和明亮部份的细节也能更清楚地呈现。以下面的游戏片段为例,当手枪打破建筑物的玻璃后,强烈的光线让玩家的瞳孔收缩,四周原本的影像也暗了下来。一但视角转回阴暗的室内,过了一两秒,眼睛适应了黑暗,瞳孔慢慢放大,眼前昏暗的视线就逐渐亮了起来。
4.1 不断变换的光强
这两张图片表现了游戏的曝光控制功能,它能够模拟人眼自动适应光线变化的能力,如果你盯着一个面向阳光直射的物体,物体表面则有强烈的光反射(见图2);如果盯着不放,物体表面的泛光会渐渐淡出,还原出更多的细节(见图3)。HDR特效是变化的,因此称做高动态光照。
图2 不断变换的光强 图3 不断变换的光强
(光强度较高) (光强度随视线减弱)
4.2 HDR的立方体映射
在HDR的立方体映射图4中,枪闪亮的金属表面很实际的反映出周围事物留下的倒影,蓝天映衬在击锤左侧,而褐色的建筑出现在右侧,该场景中地面和前方的场景是比较暗的,以前的光渲染方式肯定会将手枪表面和周围场景一致化,做出来的效果就是一团黑或者手枪表面是永远单调的反光。
图4 HDR的立方体映射
4.3 HDR开/关画质对比
HDR特效是实时产生的,关掉并不影响游戏运行,但它和其它特效一起,共同产生了逼真的画面(如图6)。关掉HDR对比下面的画面,图5是是关掉HDR之后的效果,以旁人眼光来看也还不错,体验过HDR效果的游戏用户,就无法再面对那些平淡无奇的画面了。
图5 HDR未开 图6 HDR打开
5.结语
HDR特效改善了游戏中混乱的,缺乏层次的,衔接生硬的光照效果,得到的是逼真的,更具层次感的,淡入淡出柔和的光感,在最大化保留细节的同时使得亮的地方更亮,暗的地方更暗,这一切使3D游戏画面更加的符合人类的视觉特征。动态、趋近真实的物理环境是HDR的特效表现原则,但HDR特效只是电脑3D游戏众多画面特效中的一种,将来电脑游戏特效会发展到什么层度,现在无法下结论,但是有一点可以肯定,那就是3D游戏画面和物理效果都将越来越真实。
参考文献
[1]彭韬.高动态图像视觉保真实时显示变换技术[D].电子科技大学,2005.
[2]陆春光.扩展数字成像动态范围的方法研究[D].浙江大学,2006.
[3]朱秀明.高动态范围图像的合成及可视化研究[D].浙江大学,2008.