[转]显卡帝揭秘3D游戏画质特效

显卡帝揭秘3D游戏画质特效

近几年来,大量采用最新技术制作的大型3D游戏让大部分玩家都享受到了前所未有的游戏画质体验,同时在显卡硬件方面的技术革新也日新月异。对于经常玩游戏的玩家来说,可能对游戏画质提升有种不知不觉之感,而对于那些前些年经常玩游戏,现在突然又来玩新游戏的玩家来说,估计会度现在的游戏画质赞不绝口甚至惊呼“不可思议”。不过有一个现象我们不得不承认:游戏画质的设定选项越来越丰富了,同时玩家也对这些“乱花渐欲迷人眼”的游戏画质特效有点摸不着头脑了。所以今天显卡帝就来为您详细解读3D游戏特效,让玩家在体验游戏的时候玩得尽兴玩得明白。


显卡帝揭秘3D游戏画质特效

说到游戏图形特效,我们不得不说的是DirectX API,DirectX(Direct eXtension,简称DX)是由微软公司创建的多媒体编程接口。DirectX由很多API组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。DirectX中的显示部分即担任图形处理的关键,分为DirectDraw(DDraw)和Direct3D(D3D),前者主要负责2D图像加速。它包括很多方面:我们播放mpg、DVD电影、看图、玩小游戏等等都是用的DDraw,读者可以把它理解成所有划线的部分都是用DDraw实现的;后者Direct3D则主要负责3D效果的显示,比如游戏中的人物和场景画面等,都是使用了DirectX中的Direct3D技术来实现的。而DirectX中的Shader Model指令集即实现了这些复杂而逼真的游戏图形特效。其实Shader(渲染或称着色)就是一段能够针对3D对象进行操作、并被GPU所执行的程序,Shader Model即是优化渲染引擎模式的意思,我们可以把它理解成是GPU的渲染指令集。历代DirectX版本有重大升级时,其最主要的更新内容就包括在Shader Model之中:

ShaderModel 1.0 → DirectX 8.0

  ShaderModel 2.0 → DirectX 9.0b

  ShaderModel 3.0 → DirectX 9.0c

  ShaderModel 4.0 → DirectX 10

  ShaderModel 4.1 → DirectX 10.1

  ShaderModel 5.0 → DirectX 11

我们玩家一般在玩游戏的时候可能最多设定的就是画质的AA(抗锯齿)或分辨率相关的选项,随着DX API的不断升级,游戏的画质设定选项也在不断的改进和丰富,其实现在的大部分游戏在画质设定上相比之前的老游戏而言都已经有了相当丰富的选项提供给玩家。所以玩家可以不再局限于之前的抗锯齿这样的基本画质要求,也可以尝试更为丰富多样的游戏画质特效,尽享3D游戏画质特效为您带来了全新画质体验。接下来,显卡帝就为您详细介绍3D游戏中一些重要而新颖的游戏画质特效,希望各位以后在玩游戏的时候对这些游戏画质特效有一个事先的了解,也方便玩家在游戏过程中对游戏的画质进行更为优质的画质调节。

高动态范围光照(HDR)

高动态范围光照(HDR)

首先我们所要介绍的是比较熟悉的HDR(High-Dynamic Range:高动态范围光照)这个游戏特效。HDR(High-Dynamic Range)特效是和Soft shadows(柔和阴影)/Parallax Mapping(视差映射贴图)等并列的图像渲染特效。想要实现HDR特效,首先,游戏开发者要在游戏开发过程中,利用游戏引擎等开发工具将实际场景用HDR记录下来,当然开发技术强的开发组会直接用小开发工具(比如3D MAX的某些特效插件)创造HDRI图像;其次,我们的显卡必须支持显示HDR特效,nVIDIA显卡必须是GeForce 6系列或更高,ATI显卡至少是Radeon 9550或以上。HDR特效最早是由NVIDIA提出的概念,也是最先在NVIDIA的显卡中实现的,当时面对竞争压力的ATI也效仿NVIDIA实现了RADEON显卡的模拟HDR的支持,注意——仅是模拟而已,而且是通过Shader Model 2.0实现的


高动态范围光照(HDR)画面示例


高动态范围光照(HDR)画面示例

DX9可以算得上是DirectX史上的一次革命性的改进,而DX9的第三个版本DirectX 9.0c(Shader Model 3.0)正是凭借HDR技术名噪一时。因为采用HDR特效技术处理过后的游戏在画面上色彩对比鲜明和风格会呈现出超现实感


游戏中关于HDR的选项

但遗憾的是,虽然说HDR给玩家带来了画面上更加绚丽的色彩,但是HDR技术也有不少“顽疾”至今都没有得到有效的解决。DX9.0C中的HDR和AA(抗锯齿)互不相容,虽说ATI X1000系列和XBOX360主机都能支持HDR+AA仅是一个特例而已,但HDR+AA方案并非业界标准,ATI官方也不认可这种做法;还有就是HDR技术也导致了新一代的游戏显存消耗的成倍增加,因为HDR在设计之初的要求就是光照和纹理都必须保持高精度,而纹理贴图不经过压缩就放在显存中,容量可想而知有多恐怖。为此,DX11在API设计的时候就专门为HDR设计了纹理压缩格式:BC6H,压缩比达到了6:1。正是进过了DirectX API设计的不断改进,HDR技术才在实用性和效率上找到了平衡点,故而逐步被大部分的主流游戏所采用。

最后我们用三句话简洁的概括下HDR特效的画质表现效果

1.亮的地方可以非常亮
    2.暗的地方可以非常暗
    3.亮暗部的细节都很明显

环境光遮蔽(Ambient Occlusion)

环境光遮蔽(Ambient Occlusion)

“AO”为Amblent Occlusion的缩写,中文译为环境光遮蔽。在DirectX 10.1 API推出后,Amblent Occlusion升级为SSAO(Screen-Space Ambient Occlusion:屏幕空间环境光遮蔽);而在微软推出DirectX 11 API后,SSAO升级至HDAO(高解析度环境光遮蔽:High Definition Ambient Occlusion)。


无AO(左)和有AO(有)对比图

我们有必要对AO(环境光遮蔽)的释义进行一个简单了解:AO是来描绘物体和物体相交或靠近的时候遮挡周围漫反射光线的效果,可以解决或改善漏光、飘和阴影不实等问题,解决或改善场景中缝隙、褶皱与墙角、角线以及细小物体等的表现不清晰问题,综合改善细节尤其是暗部阴影,增强空间的层次感、真实感,同时加强和改善画面明暗对比,增强画面的艺术性。可以说AO特效在直观上给我们玩家的感受主要体现在画面的明暗度上,未开启AO特效的画面光照稍亮一些;而开启AO特效之后,局部的细节画面尤其是暗部阴影会更加明显一些


尘埃2游戏中的AO画质特效设定


SSAO实现了较好的全局光照效果


《异形大战铁血战士》HDAO开/关细节对比

SSAO和HDAO均为AO技术的变种或升级,其实目前采用统一渲染架构的图形核心都能够实现AO(环境光遮蔽)效果,而在SSAO在DX10.1中被引入之后,得到了更为优化的代码支持从而实现了更为有效的环境光遮蔽效果。而伴随DX11所一同进化而生的HDAO,相比SSAO和AO有了更进一步的效能提升。HDAO是SSAO的升级,主要更新了用于加速SSAO的函数指令Gather4(在DirectX 10.1中,Gather4允许一个2x2的未过滤纹理替代一个双线过滤的纹理),从而实现更快更好的阴影效果。值得一提的是HDAO这个名称咋一看比较贴近ATI HD系列显卡的名称内涵,再加上SSAO和HDAO都是ATI所力挺的图形技术,故而HDAO也一同写入了DirectX 11 API的函数库中

景深(Depth of Field)

景深(Depth of Field)

关于景深这个游戏特效的概念,我们首先可以先看一下下面这张照片的效果。由下面这张图我们可以看到红花所呈现出来的画质最清晰,而远处的绿叶则十分模糊。


景深效果

对摄影有所了解的朋友一定对景深这个概念不陌生。下面我再从摄影的角度来解析下什么是景深效果。为理解景深,我们先来了解下弥散圆的概念。在焦点前后,光线开始聚集和扩散,点的影象变成模糊的,形成一个扩大的圆,这个圆就叫做弥散圆。


弥散圆(circle of confusion)

在焦点前后各有一个容许弥散圆,这两个弥散圆之间的距离就叫景深,即:在被摄主体(对焦点)前后,其影像仍然有一段清晰范围的,就是景深。景深的深浅取决于焦点的位置。


景深(depth of field)

游戏为了达到拟真的效果,自然也将景深的概念引入到其中。然而问题是由于3D游戏只是将图像投影在了平面显示器上,故而本身不会有景深效果,因此为使得游戏画面产生景深效果则必须在图像输出之前对其做预处理,把焦点之外的远景全部虚化处理。


游戏画质设定中的景深选项


DX9和DX10关于景深效果的对比


DX10中的景深效果解析

DX9时代在景深特效的处理方面显得有点“偷工减料”,因为其原理是将远景物体的纹理、阴影和光照等效果进行大幅度缩水,再加之以模糊处理,而仅对近景做正常的渲染输出。

DX10的景深处理则显得相对务实一些,因为它借助的是几何着色器,远景也完全符合的是正常虚化模式,且光影等特效细节也得到了保留。

而到了DX11时代,则是通过DirectCompute中新增的Gather4数据采集指令,使得计算着色器能够以四倍的纹理采集速度,帮助减少GPU纹理单元和光栅单元的负担,从而在进行景深处理时消除了瓶颈,提升渲染效率。

运动模糊(Motion Blur)

运动模糊(Motion Blur)

运动模糊是景物图象中的移动效果。它比较明显地出现在长时间暴光或场景内的物体快速移动的情形里。其实我们在电影或电视里面经常会看到些运动模糊的效果画面,在我们用相机对准快速运动的物体拍照的时候,你也会偶尔拍出具有运动模糊的效果图片。所以说具有运动模糊画面的游戏更加具备拟真的效果。


运动模糊效果


赛车游戏里面,运动模糊这一项往往是必须的


赛车类的游戏,运动模糊效果是必须的


孤岛危机游戏中运动模糊效果

DX9时代的运动模糊效果显得有些许夸张或不真实,因为游戏画面仅仅做了一个相对简单的虚化背景处理,而对前景高速运行的物体则保留运动轨迹,再简单的将前景和背景进行糅合,效果上会有些拖影或残影的状况。

凭借全新的几何着色技术,在DX10模式下即可使用流处理器资源来计算物体的几何坐标变换,再配合高精度的顶点纹理拾取技术,从而对整体运动过程有一个相对完美的再现,并且在运动模糊效果的处理上也做到了“是非分明”。

体积云/体积雾/体积光

体积云/体积雾/体积光

体积云/体积雾(Volumetric Clouds/Fog),简而言之:游戏中的体积云/雾效果就是使用图像引擎来模拟云雾半透明、无规则的表现效果。在早期游戏中,实现云雾烟火效果的惯用手法是使用贴图,这在经典的CS游戏中可以体现出来,至于效果则显得很粗糙一般。


CS的烟雾弹效果,可以看到层状的材质


体积云/体积雾效果


体积云效果

而事实上,体积云本身的定义上也不是特别清楚,欧美业界的观点是:通过3D引擎实时生成的、能够随时间流逝而自动改变的、能够和物力引擎互动产生变化的(比如飞机飞过云雾散开),才能称为体积云/体积雾。像《孤岛危机》和《冲突世界》这样的游戏均大量运用了体积云/体积雾的特效。


现实世界里的光线图


游戏中的体积光特效


孤岛危机游戏中的体积光特效

体积光(Volumetric Light),可以说目前的大部分游戏在DX10和DX11的API支持下都具备了体积光的特效,这一切都得益于DX API在渲染架构上的改进,才使得这些高级图形特效被更多更好的运用于游戏之中。

软阴影(Soft Shadow)

软阴影(Soft Shadow)

Soft Shadow,字面上翻译过来是软阴影,其实叫作“柔和阴影”似乎更恰当。在生活中,我们知道阴影的过渡是渐变的,而软阴影的作用就是要模拟这种阴影渐变且在阴影周边制造虚化的效果


StreetFighterIV游戏中的软阴影选项

一般来说在游戏中阴影的生产方法有2种:Shadow Mapping(阴影映射)和Shadow Volumes(体积阴影)。对于在阴影映射下实现软阴影效果,通常采用的方法是:在阴影边界进行高精度超级采样的方法,如虚幻3引擎就是进行16X的超级采样,这就是软阴影消耗系统资源大的原因。

对于在阴影映射下实现软阴影,通常是在阴影边界进行高精度超级采样的方法,如虚幻3引擎就是进行16X的超级采样,这就是软阴影消耗系统资源大的原因。


《西部狂野》的Shadow Map Size高达2048*2048,生成的阴影效果非常好,对硬件要求也高


《尘埃》的Shadow Map Size更是前所未有地达到了4096*4096,阴影柔化效果也很到位


《孤岛危机》的阴影效果当然是顶级的了


Shadow Volumes(体积阴影)

Shadow Volumes(体积阴影)是一种基于几何形体的技术,它需要几何体在一定方向的灯光下的轮廓去产生一个封闭的容积,然后通过光线的投射就可以决定场景的阴影部分(常常使用模板缓冲去模拟光线的投射)。Shadow Volumes(体积阴影)这项技术是像素精确的,不会产生任何的锯齿现象,但是与其他的技术一样,它也有缺点:其一、极度依赖几何形体,其二、需要非常高的填充率,其三、相当耗费CPU资源。采用体积阴影来实现软阴影效果的游戏不多,《DOOM3》和《F.E.A.R.》就是采用的体积阴影技术的游戏。

曲面细分(Tessellation)

曲面细分(Tessellation)

曲面细分技术想必是大家相对比较熟悉的一个游戏特效,在新近推出的DX11游戏中,我们发觉曲面细分技术的应用越来越多,而且采用这项技术的游戏在游戏画面的立体感方面显的尤为突出。下面我们从天堂2.5 的画面对比图中就可以很清晰的体验到曲面细分特效的魅力。


DX11曲面细分对比图


DX11曲面细分对比图


DX11曲面细分对比图


DX11曲面细分对比图


DX11曲面细分对比图


DX11中的曲面细分技术


曲面细分技术演示

Tessellation(曲面细分)技术,是一种化繁为简的手段,简单的讲,便是在一个简单的多边形模型中,利用专门的硬件,专门的算法镶嵌入若干多边形,以达到在不耗费CPU资源的情况下,真实的展现曲面的目的。N卡和A卡在曲面细分技术处理上的区别是:NVIDIA的DX11显卡采用的是专用曲面细分处理单元的设计,而AMD则采用的是内部集成曲面细分处理单元的设计

视差映射贴图(Parallax Mapping)

视差映射贴图

视差映射贴图技术又叫视差遮蔽贴图技术,在这一技术中,会对纹理的坐标做变换,一些凸出的纹理会遮蔽到其他的纹理,这样就会看起来具备更好的凹凸感。视差贴图技术的实现原理,其实和法线贴图是一样的,都是根据法线贴图进行的处理。视差贴图比法线贴图提供更好的视觉效果,而且跟法线贴图有同一个目的:在保证模型细节的情况下,大幅度降低场景的多边形数目


法线贴图在《孤岛危机》里的应用,立体感表现得非常好


《S.T.A.L.K.E.R.》中的视差贴图效果,砖块和石板上的凹痕表现十分生动


采用视差贴图的鹅卵石给人以“以假乱真”的感觉

视差贴图技术在早期并没有得到广泛的应用,因为视差贴图技术相比法线贴图技术要耗费更多的资源,而当时的计算机运行起来则显的有些吃力。最早使用视差映射贴图技术的游戏叫做《狂野西部》,是首批DX10游戏之一,而DX9版本不支持视差贴图技术。由于DX10显卡都采用了统一渲染架构,可以方便集中利用Shader资源来渲染出复杂的特效。再加上有全新的几何着色器辅助,因此特效的运用方面可以更加灵活,游戏开发商可以很容易的自定义一些特效渲染方式,所以将先进的技术都安置在DX10模式之中也是无可厚非。

物理加速效果

物理加速效果

可以说物理加速技术第一次实现了真实而自然的水滴效果。物理加速是3D游戏特效中的效果之一,它能令物体被破坏和移动,物体碰撞能产生物理上的反弹效果,使游戏更接近真实,更趋近于物体在自然状态下的物理运动等反应。这些特效在早期的3D游戏中是不可想象的。

借助物理加速技术,我们可以实现在游戏中体验到如下真实的物理效果:

1.尘土飞扬,碎渣四溅的大量粒子运动所形成的爆炸效果;

  2.设计结构复杂的各种几何模型,以完成更加逼真的物理运动和交互动作;

  3.环绕在运动中的物体周围的大量翻腾涌动的浓烟和尘雾效果;

  4.逼真细腻的河水、泥石流、岩浆等流体运动模拟;

  5.衣物、草丛、树叶之类软性物体能随风自然飘动效果;

  6.衣物,旗帜等软性物体因外界各种影响做出不同的撕裂或变形效果;

  7.刚性物体之间相互碰撞的运动计算,一定力度之下形成拟真的成千上万个碎片运动。


进过物理加速的裙摆更显自然逼真


采用物理技术的游戏——《蝙蝠侠》

就工作原理上讲,物理加速技术主要负责两个工作:其一、如何近乎自然的操作物体的移动;其二、在周围环境的影响作用下,物体如何更加真实地作出交互性的反应

目前物理加速技术上主要分为“三大派别”,NVIDIA拥有自己的PhysX物理加速引擎技术,INTEL拥有自己的Havoc物理加速引擎技术,而AMD则选择了基于OpenCL的第三方物理引擎技术的研发。

总结大会之3D游戏特效作用

总结大会之3D游戏特效作用

看完了前面所介绍的这些游戏特效,可能不少玩家在之前玩游戏的过程中已经不知不觉的体验过这些游戏特效所带来的全新画质效果。而这一次我们对这些游戏特效进行了一个全面的总结过后,想必玩家会对游戏画质特效的设定有个更为清楚的认识。最后我们对这些游戏特效的作用进行一句话的简单小结来结束本次对3D游戏特效的专文研讨。

高动态范围光照(HDR)

亮部更亮,暗部更暗,明暗细节更明显。

环境光遮蔽(Ambient Occlusion)

使暗部阴影更明显,明暗对比更强烈

景深(Depth of Field)

突出重点,虚化背景

运动模糊(Motion Blur)

对快速移动、爆炸和高速碰撞等画面进行相关画面的模糊处理

体积云/体积雾/体积光

让云就、雾和光照更加趋近于真实

软阴影(Soft Shadow)

模拟阴影渐变且在阴影周边制造虚化的效果

曲面细分(Tessellation)

用更多的多边形来逐渐逼近真实物体的外表轮廓,从而实现图形画面的立体感和层次感

视差映射贴图(Parallax Mapping)

使3D画面具备凹凸感和立体感

物理加速效果

使物体在移动、碰撞之后产生交互式的真实物理反应

时间: 2024-11-05 20:46:27

[转]显卡帝揭秘3D游戏画质特效的相关文章

Archlinux 下Intel + NVIDIA 双显卡3D 游戏配置([email protected])

贴吧里问这问那中午睡醒后做好的,下午打了几场dota2 感觉流畅度还算很不错的,写点东西记录一下.用Archlinux 的一般来说都会用搜索引擎,所以只说下需要注意的地方即可. 1. steam 自带的OpenGL 库是过时的,运行可能会抱怨"Cannot find OpenGL GX" 之类的东西,看ArchWiki 「steam」条目,删除steam 自带的几个库. 2. 但是删除了steam 自带的那些库之后你需要在系统中安装新版的库,除去64 位的库之外(不可能还有人在用32

吴涛作品介绍-易语言和VOLCANO 3D游戏引擎

易语言 易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言.易语言降低了广大电脑用户编程的门槛,可以通过使用本语言极其快速地进入Windows程序编写的大门. VOLCANO 3D 游戏引擎 VOLCANO是一款MMORPG(大型多人在线角色扮演)3D网络游戏的开发引擎,用作支持用户快速并简单地开发具有真实游戏环境和丰富游戏玩点的游戏. 易语言 易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言.易语言降低了广大电脑用户编程的门槛,尤其是根本不

Cocos2d-x 的3D游戏制作官方教程(中文翻译)

Cocos2d-x 在版本3开始已经支持了3D游戏开发的特性,我在官网文档看到3D开发的部分,觉得有必要记录一下,权当做学习笔记.因为只花了半天时间翻译,而且能力有限,各位看官勿喷. 本博客虽然水分很足,但是也算是博主的苦劳了,如需转载,请附上本文链接http://blog.csdn.net/cyh_24/article/details/45702343,不甚感激! 相信,你已经对Cocos2d-x有所了解,并且将它作为一种2D游戏引擎来看待.但是,从版本3开始,我们已经将3D一些特性添加到了C

WebGL实现HTML5贪吃蛇3D游戏

js1k.com收集了小于1k的javascript小例子,里面有很多很炫很酷的游戏和特效,今年规则又增加了新花样,传统的classic类型基础上又增加了WebGL类型,以及允许增加到2K的++类型,多次想尝试提交个小游戏但总无法写出让自己满意还能控制在这么小的字节范围. 自己写不出来,站在巨人肩膀总是有机会吧,想起<基于HTML5的电信网管3D机房监控应用>这篇提到的threejs,babylonjs和Hightopo的几种基于WebGL的3D引擎,突然想挑战下自己实现个100行JS的3D小

【Unity】1.0 第1章 Unity&mdash;3D游戏开发和虚拟现实应用开发的首选

分类:Unity.C#.VS2015 创建日期:2016-03-23 一.简介 Unity是跨平台2D.3D游戏和虚拟现实高级应用程序的专业开发引擎,是由Unity Technologies公司研制的一个让玩家轻松创建诸如虚拟现实场景再现.三维视频游戏.建筑设计可视化.实时三维动画展现等类型互动内容的多平台综合型开发工具,是一个全面整合的跨平台专业3D开发引擎. 全球超过70%的手机3D游戏都是用Unity来开发的. 1.能部署到20多个平台上 Unity类似于Director,Blender

手把手教你架构3D游戏引擎

最近利用空闲的时间写了一本针对程序员开发3D游戏引擎的书籍,<手把手教你架构3D游戏引擎> 电子工业出版社,里面涉及到向量变换,矩阵变换,固定流水线的实现.给读者揭秘引擎的底层封装实现,对于学习者非常容易上手,可以做到举一反三,再学习其它引擎就会得心应手.目前在天猫,京东等各大网站有售,网址: https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.2.FFMx82&id=542498976531&areaId=3

Unity 3D游戏开发引擎:最火的插件推荐

摘要:为了帮助使用Unity引擎的开发者制作更完美的游戏,我们精心挑选了十款Unity相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJoystick.UnIDE.Tile Based Map and Nav.FX Maker.Toon shader.Top-Down Assets Mobile和83 Explosion Sound Effects. 作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升

Android+3D游戏开发技术详解与典型案例

 内容导读 本书共分两篇,第一篇介绍了Android 3D游戏开发的基础知识,主要对OpenGL ES的相关内容进行了介绍. 章 名主 要 内 容 第1章 英雄还看今朝-Android简介本章介绍了市场上主流的手机平台,同时也分析了未来手机平台的发展趋势及Android平台的前景 第2章 数风流人物-当前流行游戏类型简介本章以分类的方式简要地介绍了当前流行的游戏的玩法,游戏的视觉效果,游戏的设计及<仙剑>等著名游戏的历史 第3章 不积跬步,无以至千里-游戏开发基础知识本章初步介绍了游戏开发的基

jQuery可拖拽3D万花筒旋转特效

jQuery可拖拽3D万花筒旋转特效 这是一个使用了CSS3立体效果的强大特效,本特效使用jQuery跟CSS3 transform来实现在用户鼠标按下拖动时,环形图片墙可以跟随鼠标进行3D旋转动画. 效果体验:http://hovertree.com/texiao/jquery/92/ 进去后可以上下左右的拖动图片. 本示例中使用到了CSS3的transform-style 属性,该规定如何在 3D 空间中呈现被嵌套的元素. 默认值: flat继承性: no版本: CSS3JavaScript