现在的位置: 首页 > 综合 > 正文

HDR技术以及如何实现HDR效果

2013年10月16日 ⁄ 综合 ⁄ 共 3506字 ⁄ 字号 评论关闭

 什么是HDR?

  谈论游戏画面时常说的HDR到底是什么呢?HDR,本身是High-Dynamic Range(高动态范围)的缩写,这本来是一个CG概念。

  计算机在表示图象的时候是用8bit(256)级或16bit(65536)级来区分图象的亮度的,但这区区几百或几万无法再现真实自然的光照情况。HDR文件是一种特殊图形文件格式,它的每一个像素除了普通的RGB信息,还有该点的实际亮度信息。普通的图形文件每个象素只有0 - 255的灰度范围,这实际上是不够的。想象一下太阳的发光强度和一个纯黑的物体之间的灰度范围或者说亮度范围的差别,远远超过了256个级别。因此,一张普通的白天风景图片,看上去白云和太阳可能都呈现是同样的灰度/亮度,都是纯白色,但实际上白云和太阳之间实际的亮度不可能一样,他们之间的亮度差别是巨大的。因此,普通的图形文件格式是很不精确的,远远没有纪录到现实世界的实际状况。所以,现在我们就要介绍一下高动态范围图像(简称HDRI)。

    什么是HDRI?

  HDRI是High-Dynamic Range (HDR) image的缩写,就是为了解决这个问题而发明出来的,简单说,HDRI是一种亮度范围非常广的图象,它比其它格式的图像有着更大亮度的数据贮存,而且它记录亮度的方式与传统的图片不同,不是用非线性的方式将亮度信息压缩到8bit或16bit的颜色空间内,而是用直接对应的方式记录亮度信息,它可以说记录了图片环境中的照明信息,因此我们可以使用这种图象来“照亮”场景。有很多HDRI文件是以全景图的形式提供的,我们也可以用它做环境背景来产生反射与折射。这里强调一下HDRI与全景图有本质的区别,全景图指的是包含了360度范围场景的普通图象,可以是JPG格式,BMP格式,TGA格式等等,属于Low-Dynamic Range Radiance Image,它并不带有光照信息。

 

 

    什么是HDRI文件?

  HDRI文件是一种文件,扩展名是hdr或tif格式,有足够的能力保存光照信息,但不一定是全景图。Dynamic Range(动态范围)是指一个场景的最亮和最暗部分之间的相对比值。一张HDR图片,它记录了远远超出256个级别的实际场景的亮度值,超出的部分在屏幕上是显示不出来的。可以这样想象:在photoshop里打开一张从室内往窗外外拍的图片,窗外的部分处在强烈的阳光下,曝光过度,呈现的是一片白色,没有多少细节。你将毫无办法,调暗只会把变成灰色而已,并不会呈现更多的细节。但如果同一场景是由hdr纪录的话,你减低曝光度,原来纯白的部分将会呈现更多的细节。

 

什么是HDR特效?

  现在将HDR和游戏联系起来。HDR在游戏中特指HDR特效。HDR特效是与Vertex Shader/ShaderModel/Soft shadows/Parallax Mapping等等并列的图像渲染特效。想要实现HDR特效,首先,游戏开发者要在游戏开发过程中,利用开发工具(就是游戏引擎)将实际场景用HDR记录下来,当然开发技术强的开发组会直接用小开发工具(比如3D MAX的某些特效插件)创造HDRI图像;其次,我们的显卡必须支持显示HDR特效,nVIDIA的显卡必须是GeForce 6系列或更高,ATI显卡至少是Radeon 9550或以上。HDR特效最早是在nVIDIA的显卡实现的,但是ATI的SMARTSHADER技术也包含HDR技术。

    HDR特效是什么样子的?

  目前将HDR特效表现的比较完美的游戏之一是育碧的《细胞分裂:混沌法则》,大家先请看《细胞分裂3》高低端显卡特效对比,文章里面右面的图都是开启了HDR特效的画面,比如下面两张画面:

 

             ShaderModel 1.1       ShaderModel 3.0/HDR/Soft shadows/Parallax Mapping

  本文写成之时,《细胞分裂:混沌法则》还没有上市,因此现在先介绍一下04年的两款大作《毁灭战士3》和《半条命2》的HDR效果:

 

《半条命2》打上HDR Mod之后的效果

 

《毁灭战士3》开启和未开启HDR效果的比较

 

《毁灭战士3》开启和未开启HDR效果的比较

 

《孤岛惊魂》开启HDR特效之后的画面

 

《手足兄弟连:进军30高地》开启HDR之后的画面

 

HDR特效如何实现?

  实现HDR效果并不复杂,但是如果想正常实现的话,你必须有GeForce 6系列或更高的nVIDIA显卡,至少是Radeon 9550或以上的ATI显卡。另外CPU和内存都要够劲,CPU至少在奔腾4 2.8G以上。必须安装DirectX 9.0c。尽量安装最适合自己显卡的驱动程序,如果是ATI显卡,一定要安装最新的显卡驱动,比如ATi Radeon系列催化剂驱动 5.3版,如果是nVIDIA显卡,请参考太平洋电脑网的相关资料,挑选最适合自己显卡的驱动程序,我站有nVIDIA ForceWare驱动71.84 WHQL版

  注意:根据目前的资料,只有《孤岛惊魂》和《手足兄弟连》的HDR特效是真正的,其他的游戏的所谓HDR特效只是仿真的。下文不再强调全真和仿真。

  1,毁灭战士3

  首先介绍《毁灭战士3》如何实现模拟HDR特效。有国外的玩家专门针对ATI显卡制作了一个HDR特效小工具“pssControl2”,这个工具由于开发较早,不保证对现在的ATI显卡和现在的催化剂驱动都适用。pssControl2需要配合HDR的pss效果包来运行。我站提供了下载,点击进入下载页面。具体运行步骤如下。

  双击pssControl2.exe执行文件,点击“Browse”,选择pss效果包的“HDRish.pss”,不关闭窗口的前提下,运行《毁灭战士3》即可。如果需要恢复,则点击“Turn off SMARTSHADER”并关闭pssControl2即可。

  2,孤岛惊魂

  《孤岛惊魂》必须安装v1.3版或者v1.31版升级补丁(点击进入下载页面),首先在显示属性的高级属性中将所有显卡设定调至最高,关闭抗锯齿(也就是关闭3D平滑处理,因为nVIDIA的GeForce 6800系列硬件无法支持多重取样下的16位精度的浮点渲染目标,不过事实上开启抗锯齿也可以运行),开启《孤岛惊魂》,在控制台中键入:

  r_hdrrendering 7

  也可以在游戏快捷方式命令后加上:

  -DEVMODE "r_hdrrendering 7"

  这串的最前面要加一个空格,也就是类似 "d:/FarCry.exe -DEVMODE "r_hdrrendering 1" 这样就可以开启《孤岛惊魂》的HDR特效。

  上面命令行中的数字 7 可以改成 0、1、10、20等数字,都有不同的表现度,大家可以试试。

  3,半条命2

  作为04年的以画面而出众的大作,《半条命2》开启HDR特效足以令玩家将《半条命2》重玩一遍。利用Radi-8工作室开发的一个Mini-Mod就可以实现《半条命2》模拟的HDR特效,显卡也不一定要GeForce 6系列。方法也很简单,首先从我站下载HL2 R8 HDR Bloom Mini-mod,之后就是安装过程,如果你安装《半条命2》之后没有重装系统,那么该MOD会自动搜索安装目录,关掉Steam重新启动,这时该MOD就会出现在第三方游戏列表中。接下来的工作就不介绍了。

  命令行:

  mat_R8Bloom (默认: 1) : 0=关闭效果, 1=默认设置, 2=让光晕效果模糊一些
  mat_R8BloomLvl (默认: 0.55) : 控制光晕的亮度
  mat_R8BloomGamma (默认: 0.75) :控制游戏的总体gamma值(当启用效果时),值越低越亮。

 

  4,手足兄弟连:进军30高地

  游戏默认就开启了HDR特效,不过可以通过修改 /Ubisoft/Gearbox Software/BrothersInArms/System/User.ini 来微调。

  [gbxGameplay.WargamePlayerController]
  NoBodyView=True
  HDRGlobalColor=(B=128,G=192,R=192,A=1)
  HDRFilterScalePass1=1.000000
  HDRFilterScalePass2=1.120000
  HDRFilterScalePass3=1.120000
  bFullTimeHDR=True

  等于号后面的1.000000、1.120000都可以调节,比如调节到2.000000,大家可以去看看效果。

抱歉!评论已关闭.