zoukankan      html  css  js  c++  java
  • HDR和bloom效果的区别和关系

    什么是HDR?
      
           谈论游戏画面时常说的HDR到底是什么呢?HDR,本身是High-Dynamic Range(高动态范围)的缩写,这本来是一个CG概念。HDR的含义,简单说,就是超越普通的光照的颜色和强度的光照。计算机在表示图象的时候是用8bit(256)级或16bit(65536)级来区分图象的亮度的,但这区区几百或几万无法再现真实自然的光照情况。目前普通的图片都是由三原色——红、绿、蓝组成的,这是针对CRT显示器显示的图像而制定的规范,通过这三种颜色的组合,任何颜色都可以在屏幕上显示出来,颜色的强度等级在256个灰度单位以内,经常使用绘图工具(比如Photoshop)的玩家至少会对256这个数字很眼熟。也就是说,普通的图形文件每个象素只有0 - 255的灰度范围,这实际上是不够的。上述的规格是在从前计算机制造工艺不发达的前提下作出的折中选择,也就是说自然界的光线颜色和强度是上述的规格无法囊括的,一些极亮和极暗的光线不能通过上述的规格来表现。那么HDR文件是一种特殊图形文件格式,它的每一个像素除了普通的RGB信息,还有该点的实际亮度信息。想象一下太阳的发光强度和一个纯黑的物体之间的灰度范围或者说亮度范围的差别,远远超过了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特效是通过ShaderModel实现的的图像渲染特效。想要实现HDR特效,首先,游戏开发者要在游戏开发过程中,利用开发工具(就是游戏引擎)将实际场景用HDRI记录下来,当然开发技术强的开发组会直接用小开发工具(比如3D MAX的某些特效插件)创造HDRI图像;其次,我们的显卡必须支持显示HDR特效,NVIDIA的显卡必须是GeForce 6系列或更高,ATI显卡至少是Radeon 9550或以上。HDR特效最早是在nVIDIA的显卡实现的,但是ATI的SMARTSHADER技术也包含HDR技术,不过这种HDR从实现原理上与nVIDIA的还是有区别的,只不过这种区别对于玩家来讲没有什么意义。
      
           HDR是nVIDIA提出的概念,早先开发商都是通过Shader Model 3.0来实现HDR特效,因此只有nVIDIA的GF 6XXX和GF 7XXX系列能够实现HDR。有人说ATI的显卡也可以实现HDR,ATI自己也是这么宣称的,其实ATI面对竞争压力,也效仿nVIDIA实现了RADEON显卡的模拟HDR的支持,注意,仅是模拟,而且是通过Shader Model 2.0实现的。
      
           实际上,HDR分为三个种类,即FP16 HDR、FP24 HDR和FP32 HDR,《孤岛惊魂》v1.31版支持的HDR是FP16 HDR,FP16 HDR是一种特殊硬件加速的HDR,这种HDR还没有被当前(至少2005年9月之前)的ATI的显卡所支持。模拟HDR不需要特殊硬件加速方法实现,《半条命2:失落的海岸》实现的HDR就是模拟的HDR,毕竟Valve要照顾ATI的显卡,不过还有一种说法是,《半条命2:失落的海岸》一直在拖延发布日期,是因为ATI要求Valve必须等待R520显卡上市之后才可以发布《半条命2:失落的海岸》,因为R520可能会真正支持FP16 HDR,所以有可能《半条命2:失落的海岸》也支持FP16 HDR。

           HDR和bloom效果的区别和关系

           现在很多玩家在争论HDR和bloom效果的区别。其实,从游戏表现出的画面效果来看,两者的差别不是很大,但是他们的技术成分就相差千里。今年年初,有国外玩家制作了一个《半条命2》的MOD,能够模拟出HDR效果,注意,这仅是模拟,这个MOD实现的特效与bloom效果差别不大,几乎可以说就是bloom效果。那么HDR与bloom效果的差别到底在什么地方呢?  

           第一,HDR效果就是超亮的光照与超暗的黑暗的某种结合,这个效果是光照产生的,强度、颜色等方面是游戏程序可动态控制的;bloom效果则是物体本身发出的光照,仅仅是将光照范围调高到过饱和,是游戏程序无法动态控制的。
      
           第二,bloom效果无需HDR就可以实现,但是bloom效果是很受限的,它只支持8位RGBA,而HDR最高支持到32位RGBA。
      
           第三,bloom效果的实现很简单,比如《半条命2》的MOD就是一个很小的很简单的MOD,而且bloom效果不受显卡的规格的限制,你甚至可以在TNT显卡上实现bloom效果(当然效果很差)!而HDR,必须是6XXX以上的显卡才能够实现,这里的HDR是指nVIDIA的HDR。这时有必要谈nVIDIA和ATI的显卡所实现的HDR,两者还是有区别的,具体区别就很专业了,总之从真实性表现来看,nVIDIA的显卡实现的HDR更好一些。HDR是nVIDIA提出的概念,从技术上来讲,ATI当然无法严格克隆nVIDIA的技术,所以ATI的HDR是另一种途径实现的尽可能接近的HDR,不能算“真”HDR,据传ATI的R520能够真正实现FP16 HDR。
      
           事实上,游戏开发商往往会将两种特效一起使用以达到一个最终的效果。两者的区别可以举一个最简单的例子:你在游戏中,从黑暗的房间中走到太阳地中,你眼前的景物会很刺眼,随后亮度会降低,完全就同现实中的情况一致。很神奇!这就是HDR特效的威力。而bloom效果实现的光照强度可能不会很真实,同时也是不可变的。

           下面的四张图都是Bloom特效的演示,前面的两张是《毁灭战士3》通过MOD开启Bloom特效与不开启的对比,后面的两张是《半条命2》使用MOD开启Bloom特效的效果图。


      

      

     

    HDR和AF(各向异性过滤)以及AA(全屏抗锯齿,又叫做3D平滑处理)的关系

      
            在开启了HDR(这里是指真HDR,不是模拟HDR)之后可以开启AF,但是不能开启AA,由于《半条命2》MOD的HDR是假的,所以这三项你都可以开启。

            HDR存在的意义以及与游戏的关系
      
            现在HDR已经成为玩家评价一款游戏是否优秀的标准之一,那么追求HDR到底有什么意义呢?其实很简单。从游戏的发展史以及未来的发展状况来看,随着科学技术的发展,游戏越来越趋向于真实化,玩家不但要求游戏中的每一种物体都有真实的外观,真实的物理特性,同时还要有真实的光照和阴影效果。其实HDR仅仅是游戏在走向真实化的道路中的一小步。游戏性的表现之一就是尽可能真实的画面,所以说游戏的操作和画面是同等重要的,放弃哪一个都是不可取的。下面的内容我曾经在太平洋游戏网发表过,总之大家看到了下面的内容不要认为我在剽窃太平洋游戏网的文章。转载请注明转载自GameSpot中文站。
      
            世界上最早实现HDR效果的游戏是《孤岛惊魂》v1.3版,但是很遗憾这是通过安装补丁实现的,而且效果不是很令人满意,当然作为游戏界的一个里程碑,这足够好了。
      
            HDR已经成为虚幻引擎3的标准特效,也就是说,未来凡是使用虚幻引擎3的游戏都能表现HDR特效。

            帝国时代3
      
            既然本文是由《帝国时代3》引起的,那么先谈谈《帝国时代3》。《帝国时代3》的游戏引擎完全支持DirectX 9.0和Shader 3.0,如果你的显卡是一块高端的显卡,那么你通过试玩版就可以看出,游戏的世界很明亮,阳光充足,景物自然,光线柔和,景深很明显。从自身遮蔽阴影到高动态范围照明再到符合菲涅耳反射率的水面反射,《帝国时代3》在即时战略游戏中至少画面已经达到了空前的水平。开启《帝国时代3》的HDR特效的方法很简单,首先你要有GF 6系列或者7系列的显卡,之后在游戏设置的画面设置中的“Shader Quality”的下拉菜单中选择“Very High”即可。目前ATI的所有显卡和NVIDIA的中低端的显卡都无法找到“Very High”,也证明了HDR只能在GF 6系列和7系列中存在。

      
    开启HDR之后的《帝国时代3》未开启HDR的《帝国时代3》

  • 相关阅读:
    图片上传-下载-删除等图片管理的若干经验总结3-单一业务场景的完整解决方案
    图片上传-下载-删除等图片管理的若干经验总结2
    HDU 1195 Open the Lock
    HDU 1690 Bus System
    HDU 2647 Reward
    HDU 2680 Choose the best route
    HDU 1596 find the safest road
    POJ 1904 King's Quest
    CDOJ 889 Battle for Silver
    CDOJ 888 Absurdistan Roads
  • 原文地址:https://www.cnblogs.com/lancidie/p/8640683.html
Copyright © 2011-2022 走看看