寒霜系列引擎技术解析

http://hi.baidu.com/dicezxr0/item/a82715c3243d0757bdef69f3

 

 

那啥,我写了这么多也挺不容易的,转贴请注明作者和出处

作者:零zXr0
http://hi.baidu.com/h0nker/profile

文章分为上下两部分:
寒霜系列引擎技术解析[上]:游戏制作与图像效果   
http://hi.baidu.com/h0nker/h0nker/blog/item/f2897e3608310dd4a2cc2b4c.html

寒霜系列引擎技术解析[下]:音效,Havok与DX11
http://hi.baidu.com/h0nker/blog/item/3691a61371483c8b6538dba7.html

本文为上,看完之后请阅读 下半部分

本文从09年6月发布,更新至今一直在修正和填补,至今已经分成上下两段

目前文章完成度44%-----2010/12/24/ 10 :12
(主要框架已完成)

详细完成度

编辑器、效能——40%
图像、DX11——45%
音效——42%
Havok的物理、行为、ai及其他——39%
其他——45%

未完待续............

本文风格:大众化的学院派
本文面向读者的定位:游戏修改爱好者、入门级的游戏制作人员、对后次世代游戏技术感兴趣的玩家

 

 


寒霜游戏引擎 (Frostbite Game Engine)


寒霜是DICE在2004-2005年开始制作的第二款自主研发图像引擎,大概到2006年时达到较高完成度,用它制作了一个战地:叛逆连队1的演示当时 并没有立即确认支持DX10.后来在07年确认支持dx10并且为ATI R600显卡推出了演示demo.在09年中宣布加入了DX11支持寒霜1代,而叛逆连队2是第一款使用它的PC游戏,它也具备了DX11支持. 寒霜引擎2目前仍在开发中,将用在下一款战地系列游戏上.

 

战地:叛逆连队2的寒霜1.5与寒霜2的关系:

DICE图形引擎开发部门老大JA明确表示BFBC2只是让Frostbite1 引擎能在DX11模式运行,而Frostbite 2 是DX11+ 引擎(是 FULL DX11完全使用DX11为基础)

Johan Andersson: Yes AMD are correct, we are working together on DX11 benefits for BFBC2 in Frostbite 1. Frostbite 2 is our future DX11+ engine

 

 

 

 

 


一、DX10.1版本的Frostbite引擎相对于 refractor2引擎的技术改进能给我们带来什么?

 


对于游戏制作人员和模组制作人员:


1.1 提供更多实时过程生成和调节的内容

1.1.1.可以对整个时间、气候、环境进行动态的调节,而不用像某些老游戏(指半条命2,现代战争2等)一样绘制一个假的远景。

1.1.2 无需为庞大的山脉群构建高精细度模型,可以在寒霜引擎中直接生成。






1.1.3.无需事先绘制贴图,寒霜中随便生成一个山脉之后,可以调节温度来控制山脉的形态

 

 

 

 

 

1.1.4 如果没有这些,会怎样?


某款EA旗下韩国neowiz公司使用fear2的Lithtech引擎制作的在线FPS游戏为了节省制作时间和提高执行效率,用贴图山水云天空效果代替 模型

 

就连很多美国顶级次世代大作也会因为技术缺陷为了节省资源迫不得已使用纸片山,比如说<现代战争2>

 

 

 




 

 

 

 

 

现实

 

 

DICE在寒霜引擎中如此生成的雪山效果赏析:



 

 

 

 

 

 

 

 

 

 

 

 


1.2 提供更人性化的操作

1.2.1 可以在游戏引擎内实现一些资源的导出和导入,而不用麻烦的来回转换格式

与各个平台的良好对接:

 

 

 

 

1.2.2 在EA Bioware帮助下,用HLSL函数带来任意大小的输入和输出,这意味着更加复杂的表面渲染

 

 


1.2.3 界面越来越接近为对外发售而设计简便图形化操作的虚幻3引擎外销版

寒霜引擎编辑器 FrostED 的OBJECT编辑界面

 

 


寒霜2 引擎编辑器 FrostED 的OBJECT编辑界面


寒霜2 引擎编辑器 FrostED 的 地图编辑界面



 

 

 

工作人员正在调整头部

 

 

 

1.3 全新的文件架构大幅缩小游戏内容,减少载入时间

与Refractor2使用简单的zip压缩不同,寒霜引擎采用了FBRB封装文件和预载入技术,在FBRB下是 res(resouces资源),而资源解开后又有新的dbx等格式.虽然看起来压缩是一层套一层,在BC2实际游戏中,读取速度却更快.

关于寒霜引擎文件解包请看我这里另一篇文:
http://hi.baidu.com/h0nker/blog/item/dd6e086daca73ff04316948d.html

 

 

 

 

 

 

 

对于所有人:

 

1.4 大量最新技术将提供更低的配置要求
DX10提供给了寒霜新的渲染架构,寒霜将成为孤岛危机的CE2之后,配置要求最低的游戏引擎之一(在与其他游戏相同的画面和游戏设定下,新一代的技术将起到降低配置要求的作用)


渲染架构:

 

 

 

 


1.5 更多的动态环境支持
可以提供24小时、365天实时变换的天气,不像refractor2那样在SKY.CON中只能设定一种天气


日月交替模拟

视频:



 

 


1.6 更大的一切

 

 

 


1.6.1 地图
refractor2支持8192×8192的地图,而寒霜是32768×32768=1074平方公里,这比武装突袭的地图还大5倍
但是,为了让游戏更激烈,实际游戏可能只提供4096×4096或者2048×2048的活动范围

 

战地2的refractor2引擎的2048*2048地图

 

寒霜1.5引擎的<战地:叛逆连队2>的地图




 

1.6.2 可视距离
refractor2中,虽无视距限制,但将视距开到3000以上,游戏非常卡,寒霜中对远近景关系安排,通过比传统LOD更好的方式实现。可视距离更大,内存显存占用更低。

1.6.3 可破坏地形
虽然可破坏地形会带来大量的资源开销,而DICE不打算在游戏中采用,但在GDC07 DICE技术讲解上已证实支持破坏地形。

可破坏地形:

 

 


 

 

 

 

二.最新的图像技术带来的图像效果

 


2.1 Undergrowth绿地系统

2.1.1 UnderGrowth系统带来耗费资源低,效果较好的草地(特别是远处草地)



 

 

 

 

 

2.1.2 undergrowth系统采用的绿叶支持凹凸

 

 

 

 

2.2 多层次的渲染封装将支持一些次表面技术

 


寒霜中运用在人嘴面的次表面散射



寒霜中运用的次表面散射

 

 

 

寒霜引擎2次表面散射

 

 


2.3 寒霜引擎的阴影技术:

 

 

 

 

 

 

2.3.1静态阴影:

阴影贴图(shadow map)

既画在贴图上的阴影.由预烘培软件烘培在贴图上,所以是静态,不能随环境而变化,也不会带来额外消耗.

Chrome4引擎游戏sniper虽具备环境光遮蔽和实时动态阴影

 

 

然而去掉实时阴影和AO之后,建筑和树干的阴影还在,与背景不协调,这就是静态阴影的弊端之一

 

 

 

 


在镜之边缘中DICE使用自己的Render to Texture Baking插件来将"光影"效果预烘培到虚幻3中

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.3.2非实时动态阴影:

 

 


平面阴影(Planar Shadow)
DICE1999年的飞鹰行动中就用了动态平面阴影
这样一个小圆圈或者别的什么形态不能变换的阴影即为平面阴影.



2.3.3 动态阴影

 映射阴影(Shadow Mapping)

目前多数游戏的方式,验证预置的所谓"光源"与目标之间有无障碍,如有,就把障碍物图像黑化之后映射在目标上.

映射阴影实际是一堆会动的1x1半透明黑色贴图的组合.....   

它的质量和shadow map分辨率大小相关.采样精度至少1024*1024才能消除阴影锯齿,交错,而2048*2048尺寸在地铁2033,潜行者,孤岛危机等高阶游戏中使用.


若映射阴影采样精度低或映射树叶之类小且与目标距离远的物体,就会导致阴影闪烁,交错,有锯齿.

 

 

 

 

 


2.3.4 全实时动态阴影

全实时动态阴影的好处:

1. 配合动态环境

例:游戏中物体可破坏,若使用静态阴影,你将得到一个只剩一半的房屋,和画在贴图上的完整房屋阴影.

2. 不会被贴图所影响,

例:当你为地面调用了不同的贴图,如果新增的贴图覆盖了阴影的贴图,将会很囧.


3. 可结合动态全局光,太阳光源,打造昼夜变化效果

 

 自投射阴影(Self-Shadow)

既目标阴影可投射到自身,DICE在05年战地2中使用了此技术,没记错的话,DICE是首家.

缺陷:阴影有锯齿或闪烁,放弃对SM2.0显卡的支持可解决这一问题。

解决方案线性百分比渐进滤波、线性插值滤波算法都只支持SM3.0以上


注意方向盘投射在前排座位上的阴影

 


 

 

 

2.3.5 软阴影(Soft Shadow)

软阴影只是一种效果,并非一种技术或者算法,实现方式.

用来模拟现实世界无论光照还是阴影,都是一个辐射度的渐变过程,不是阴暗分明这一效果.


正如上面所说,软阴影的实现方式远非一种,现在使用比较广泛的是对映射阴影边缘高倍采样,来得到高品质的柔化边缘.

虚幻3,lithtech(FEAR)等引擎中都依此实现.

 

 

 

效果虽好,但对显存和性能影响大.所以Crysis中远处物体没有阴影,强开只能效率低下

 

 

2.3.6 解决方案:业界最新的阴影生成技术:

 


层叠阴影Cascaded Shadow Map
方差阴影Variance Shadow Map

使用CSM/VSM算法,亦或两者皆用,都可以

 

层叠阴影CSM

原理是将视锥分割成多个,映射阴影根据距离而非视锥决定阴影精度.这导致了一些距你较近,但是你看不到的物体使用高精度的阴影. 而较远,却看得清的物体没有阴影.   

视锥分割是由专门的高数算法推导,是引擎开发者的事,引擎使用者无需关心。

层叠阴影适合表现大规模场景,即使你在空中,一些物体距离你非常远,也能具有不错的阴影.

 

 

 

 

 


2.3.7 DICE的解决方案
单通道稳定层叠限制盒阴影 Single-pass Stable Cascaded Bounding Box Shadow Maps(SSCBBSM?)

类似于killzone2中的区域反馈层叠阴影贴图技术,但更先进

 

在DX10提供的单通道阴影技术中,阴影将由少数纹理阵列构成,而非无数个不同的阴影纹理,所以CPU的工作量大为降低


技术对比

 

柔化阴影演示:

DX11开启柔化:

DX10关闭柔化:

 

对比图:

DX11模式的软阴影开启之后,性能损失不超过5%,如显卡强力可能为1%-2%


 

 

 

 

 

 

 

 

 

 

 

 

 

2.4 支持几乎所有DX9CSM3.0和DX10的游戏用材质,以及超大的材质分辨率


 


2.4.1 寒霜引擎支持的一部分贴图(07年展示,没有dx10.1/dx11)

 

 

 

 

2.4.2 寒霜2引擎业界支持最大的材质分辨率:16384×16384

在寒霜引擎中DX9模式支持4096×4096的材质分辨率,DX10支持8192×8192,DX11模式支持6384×16384。

这是什么概念?

面向低端PC或者游戏机的热门游戏,比如说《使命召唤4》、《光晕3》只采用了1024×1024的材质分辨率,一些希望通过炫耀画面卖引擎的游戏,就像《虚幻竞技场3》,它们会采用2048×2048。而孤岛危机最高达4096×4096.

虽然支持但DICE不会傻到真的使用此分辨率材质。


 

 

 

 

 

2.4.3 细节贴图(Detail Mapping)

细节贴图可依附在UV贴图上,也可以伴随法线,而它自己本身并不需要UV.

托寒霜引擎可以支持多层材质的福,DICE在游戏中大量使用细节贴图,以增强游戏材质的质感

通过实例化的平铺这张128*128的细节贴图,在显存占有很低的情况下,就可以达到极好的效果

 

寒霜引擎游戏中细节贴图开关对比

 

92.3>86.3 性能损失7%

129.5>128.3 损失1%

109.5>106.7损失2%

 

 

现实世界存在大量细节

战地3

现实


叛逆连队2





 

 

 

 

使用Chrome4 Engine的狂野西部:生死同盟也使用了细节贴图

 

 

同样基于寒霜引擎的荣誉勋章Beta中,没有使用细节贴图.则缺乏纹理细节

 

 

也有一些因为引擎老旧,无法使用细节贴图的游戏,如:COD

 

 

 

 

 

 

2.5 寒霜引擎的凹凸材质方面:

凹凸贴图(bump mapping):一种老掉牙的凹凸技术,只能生成简单的图像凹凸一般只适合做地砖和墙壁砖的效果和刻字。在虚幻2游戏中很流行

凹凸贴图的典型运用

 


法线贴图(Normal Mapping):一种在DX8.1时代开始普及的技术,效果一般,能实现不规则图像的凹凸,无法实现太大的凹凸
法线贴图的运用实例:

 

 


视差映射贴图(Parallax Occlution Mapping)[只有少数游戏引擎支持,比如孤岛危机的CE2和战地的寒霜]
视差遮蔽贴图是一种妥协,它是欺骗你的眼睛,用较低的资源实现较好的效果,但在一些小角度下效果不好。

 

2005年DICE为ATI制作的toyshop demo中视差贴图与法线贴图效果对比:
左视差贴图,右法线贴图




孤岛危机中的视差贴图:




视差遮蔽贴图与法线贴图的对比

 


 

 

视差贴图在frostbite1.5引擎的应用:

视差贴图在BFBC2中的应用已经较为成熟,可以在击中物体后动态生成,并配合动态点光源模拟弹头烧红状态到冷却

视差贴图开关:



 

 

视差贴图效果




 

 


硬件位移置换贴图(Displacement Mapping)
位移贴图是目前最完美的凹凸处理方式,它和凹凸贴图、法线贴图、视察置换贴图等技术区别在于它是“物理凹凸”,而非欺骗视觉。

3年前是不会有人想到位移贴图这种在renderman、VR等软件中靠CPU实现的静帧渲染技术可以用于游戏。

为什么CE2不支持位移贴图,而为TV平台简化的CE3却支持?
所有的新图像技术都是为了在实现更好效果时获得更低资源和人力占用。而不是仅仅为了实现某种效果。以抗锯齿为例,可能你会认为抗锯齿资源占用很大,但4倍抗锯齿与开4倍像素值的分辨率相比就很节约。位移贴图也是同样的道理。此外,位移贴图主要基于GPU浮点运算,放到PS3上就正好用到那个浮点运算处理器。


寒霜引擎中的雪山线框,实际只有十几万多边形,但使用位移贴图可以达到1亿多边形的效果

 


位移贴图与法线贴图对比

无位移贴图,只有法线贴图:



 

用曲面细分和位移贴图代替法线贴图:

 


上面的雪山只有840个多边形,而使用曲面细分技术和位移贴图之后,实际效果达到了128万多边形应有的效果,大大降低了显存占用

 

几何位移与几何实例开关

草/树: 使用实例技术,实际只创建一棵树,其他树的模型为这一棵的几何实例copy,不需反复创建
山: 高度图与几何位移置换,此山实际多边形数量几百个,效果足以媲美1000万多边形的山

上下两张图实际多边形数量相差 569094-568524=570个

 




地面受攻击之后

 

 

 

 

位移在寒霜引擎中的成熟运用:




 

 

 

 

 

 

 

2.6 延迟渲染

延迟渲染既是将需要渲染的数据的"索引"计算出来,存储到G-Buffer(缓冲区)中,再由其他的核心及显卡渲染剩下的工作.

从而可以将线程拆分,提前计算出更多有用的信息,从而提高多核心系统的运行效率

使得在寒霜引擎中,只需要2.0GHZ的四核心处理器就能达到同架构3GHZ以上双核心处理器的效能,不过也有用户因为只有单核心或双核心,导致线程分配过多运算效率下降,这是技术革新所必须付出的代价.

寒霜引擎可以为最多16核心的CPU提供最佳运行效率

 

 

 

在DX11的direct compute和延迟渲染的高效率帮助下,寒霜2引擎实现了同时引入1000个点光源,这让我们离光线追踪又近了一步。


 

 

 

 

 

2.7  光学

2.7.1轨迹光线 GOD RAY与体积光

阳光透过浓密树叶,屋顶的缺瓦射到地面,都会产生可见的光线轨迹,一些早期游戏如孤岛惊魂,半条命2中使用静态的点光源或者动态的HDR技术来表现这种情况.而Crysis率先引入了容积光&轨迹光线.

轨迹光线的优势是可以动态变化,像叛逆连队2中树木会摇晃,轨迹光线也会随之而动

 

Crysis的god-ray

寒霜引擎中的动态god-ray:

 

 

metro2033中的god-ray

丁达尔效应

 

 

 

以上两种都不是光(ilumination),光的定义是一定可以与游戏中几何的顶点互动,并影响映射阴影

而这两种都和HDR BLOOM一样是普通的视觉效果,并不产生互动.亮,不等于光.

 

我不知道体积光这个翻译是谁先说的,实际上,容积/体积的光水云雾什么的只是表示一个图形引擎能够支持容积粒子效果容积粒子的用处是多样的.

 

这个才是真正意义上的体积"光"

 

不过这个效果还是有缺陷的,现实中,物体会根据光线照射的材质进行不同程度的光子反弹

而crysis中只反弹一次,这种就叫做间接光照(inderect illumination)

 

 

 

 


2.7.2 间接光照,全局光,光子反弹与光能传递

 

所谓光子反弹,就是模拟现实中,光会携带能量反射反射的情况.原始的光照是直接光照,反射之后的光照即为间接光照, 而多次反射的过程的叫做光子反弹,光子在反弹中携带能量衰减的过程叫做光能传递.

直接与间接光照共通构成了完整的光照过程---全局光.

 

stalker的x-ray引擎中对光子反弹的模拟

直接光照下,光不会反弹

开启了光子反弹的效果

 

CE3引擎中对GI的模拟

 

 

 

寒霜引擎2 实时光能传递

 

 

 


 

 2.7.3 粒子照明 Particle Lighting

寒霜引擎2支持粒子烟雾被光照所影响

 




 

2.7.4  SSR反射

 

 

 

2.8 容积水&塑性变形

 

容积粒子的实体化,可以运用于塑性变形和其他流体力学模拟

 

当你在水边,在地上炸出一个坑,水会顺势流入坑中灌满.


 

 

 

 

 

2.9 整个渲染流程

 

寒霜1.5(BFBC2)

 

 

 

寒霜精简版(MOH)

 

 

 


 

三 音效

先进音效带来更震撼的听觉体验

3.1 HDR音效
HDR音效是DICE原创的一项音效技术,工作的原理大概是平时环境音效正常,有突然出现的声音(如原来不存在的开火,换子弹,脚步,爆炸等)时就遮蔽环境音效(一直存在的声音如音乐,流水,挂风声,自己的脚步等).
听起来简单,但这已不是EAX自带的技术了,不是降低声音那么简单,同时也会调用很多滤波器来处理音效.

效果演示:

 

 

3.2 对创新公司最新声卡和音效技术的支持
上一代的refractor2引擎就已经立下了游戏音效技术标杆,战地2是首款支持EAX5.0、X-RAM的游戏,不同的环境、距离有不同的音效,在第一人称、第三人称、不同距离、水边、室内等等环境下开枪音效是不同的,而且按V进行的语音通话中,不是从所有通道同时发声,而是人在哪,就从哪边出声,完全支持杜比5.1环绕。

 

3.3 在实际开发游戏时,音频计算以CPU为主,减低用户负担
katamakel,dice音频技术员说到,为了照顾主机平台和96.3%没有使用创新声卡的PC用户,将更多的使用CPU来计算音频部分.

 

3.4 DICE的软实力:声音采集

DICE没有“制作”游戏音效,一切都是录制的,大多数游戏公司早就可以到射击场录制枪声音乐

 

 

 

 

 

 

 

瑞典SAAB公司在2005年用DICE前一代的refractor2引擎技术为瑞典国防部制作了模拟军事指挥训练系统,三方关系不错,所以DICE是少数或者唯一真的可以获得主战坦克、自行火炮、重型榴弹炮、SAAB战斗机这类设备进行游戏音频录制的公司。

 

 



 

 

 

 

 

 

 


 

 

四 Havok的动作,行为与物理(刚体/流体力学)

DICE与ATI/AMD合作,由最新内部版Havok带来的强大物理、破坏效果及动作丰富的 BOT

4.1 Havok physics 物理引擎
这是游戏中所有表现的基石,无需物理卡或特定显示卡即可实现重力、重量、质量、密度、力量、浮力、弹性的准确模拟。

 

4.2 Havok destruction 破坏引擎

destruction引擎采用Collision Detection碰撞检测系统,这将有别于以往传统游戏中的hitbox系统。适合造成动态破坏。

带来前所未有的高范围破坏,可完全毁坏游戏内的所有物体(載具、建筑、桥梁、树木.....)和部分地形

带来前所未有的高精度破坏,你可以削去飞行中飞机的翅膀或者其他什么地方,也可以炸坏房屋一角,这一切都不是程序编辑好的,不是调用破坏后的模型和贴图,你可以决定破坏什么部位。

 

 


4.3 Havok animation 动作引擎
它是负责什么的?好吧,动作就是一切的一切。
如果没有animation,游戏中车轮不会转动,两腿不会迈开,士兵也不会换弹匣或者蹲、站、跳、卧倒、侧倾。最新版的动作引擎带来流畅的动作,在使用寒霜引擎的rubydemo中,仅ruby脸部就有上百个可动部件,这是前所未有的。值得一提的是很多好莱坞电影大片也是使用Havok。

大量的可动部件

 


与动作捕捉系统结合:




 

 

 

 

 

4.4 Havok Behavior 行为引擎
它将让bot学会新的行为、动作、战术
你是否曾注意到,在一些采用havok的游戏中,就像光晕3和半条命2,友好的AI会转身面向你,会和你产生互动。敌人则不仅会冲向你开火,他们也会寻找掩护(找到一个物体来挡住你的和它的hitbox),在彩虹6号3:盾牌行动之类的战术游戏中,敌人甚至拥有包抄、迂回等战术。在寒霜集成的最新版中,Havok-Behavior的AI表现会更加强大,例如你会看到bot弓腰通过,攀爬,或者跳过障碍,遇到爆炸物选择躲避或是捡起来扔回去。

Havok 行为演示:

 

 

 

4.5 模块化的碰撞检测系统

模块化的碰撞检测系统vs旧式整体Hitbox:
Hitbox系统是传统的游戏伤害和物理运算判定系统,每个物体都是一个整体,整体内划分几个区块,2006年之前的游戏全部采用该系统。

而现在的新一代Havok Destruction游戏已经采用模块化分区碰撞检测系统替代整体hitbox,游戏每个物体可以由多个模块组成。可以通过击毁物体的某一部分(如履带)造成物体部分功能缺失。也可以根据碰撞力值演算生成不同程度的全地形破坏效果


碰撞检测系统目前的究极模式:





碰撞检测系统在游戏中达成的破坏效果

 

整体HITBOX也能实现一些破坏,但只是靠脚本实现.

战地2的hitbox模式破坏演示:

 

 

游戏中没有用到的Havok流体力学与布料力学展示:

 

4.6 Havok vs Physx

physx是以API实现的,是一个外部插件,不能和游戏引擎完美结合,需不断检测你有没有触发每一个条件,这需要大量的浮点运算,所以浮点运算能力强的显卡运算起来只是费劲,CPU模式打开它就只有个位数的帧了.而且physx只能执行nv官方提供的几套算法,自由度不高.



而havok是一套功能丰富的游戏开发组件,开发者可以根据需要把其中几项功能封装到自己引擎的底层,由于是CPU运算X86指令集,还能执行很多开发者自己发明的代码,工作模式是引擎内部的触发式,所以有些情况下会看到你都看到BFBC2里面炮弹击中墙了几毫秒,墙才碎有延迟.如果你不断的同时击碎什么东西,就不会有延迟了,因为游戏会自动切换到一个触发频率高的模式.有些havok游戏默认就工作在这个模式

大多数游戏用的都是havok的刚体力学模拟破坏系统,布料/头发的柔体力学模拟&气动方面的流体力学模拟插件没发挥出来



在破坏的精度上,havok和physx是一样的,都远超出实际需要和处理能力

实现方法都是将一个物体划分为若干碰撞模块,每个模块可被从主体上击碎下来,然后这个碎块还继续带有碰撞检测属性.

理论能达到对着一个人开一枪,可射出一个空腔,而不是击碎成几块.这需要大量碰撞检测模块

重要的是physx基于api,在不同api的硬件上无法实现,不能用于多人游戏,总不能你N卡可以打坏一堵墙崩死后面的A卡用户,人家不能

同样是havok,版本也千差万别,而physx基本相同,因为havok不光是物理模拟,是一整套游戏开发组件,包括AI(行为),动作等都有

 


 

 

 

 

 

 

 

 

 

 

 

五、寒霜2引擎与DX11:

5.1 DX11 是什么?厂家的支持情况怎么样?寒霜2是如何支持DX11的?它又能带来什么?

DX11是微软09年力推的新一代API,他不是一个真正“全新”的API,而是基于DX10.1,你可以把它当作DX10终极版,DX11同时支持vista和win7,将解决现有即时渲染的很多效能问题。

目前ATI 5系列显卡完全支持DX11。目前已有DICE,codemaster,GSC等多家游戏制作商跟进。DX11完美向下兼容DX9.0\9.0B\9.0C DX10.0\DX10.1,其中DX10规范硬件甚至可以通过新驱动获得Compute shaders等技术的支持,dx11对多线程和多核心提供最佳支持


5.2 寒霜为何,又如何对DX11提供支持?

DICE的程序员们仅花了3个小时就把寒霜从DX10.1规范升级到DX11,70%的时间花费在代码增加和替换,在做游戏时可以在DX9.0c/DX10.1/DX11/PS3/XBOX360模式之间切换。DX11版本的寒霜引擎可以对8核心提供支持。

以下是DICE内部切换DX10.1和DX11用的一个脚本

#ifdef DICE_D3D11_ENABLE     #include <External/DirectX/Include/d3d11.h> #else     #include <External/DirectX/Include/d3d10_1.h> #endif    #ifdef DICE_D3D11_ENABLE     #define ID3DALLDevice               ID3D11Device     #define ID3DALLDeviceContext        ID3D11DeviceContext     #define ID3DALLBuffer               ID3D11Buffer     #define ID3DALLRenderTargetView     ID3D11RenderTargetView     #define ID3DALLPixelShader          ID3D11PixelShader     #define ID3DALLTexture1D            ID3D11Texture1D     #define D3DALL_BLEND_DESC           D3D11_BLEND_DESC1     #define D3DALL_BIND_SHADER_RESOURCE D3D11_BIND_SHADER_RESOURCE     #define D3DALL_RASTERIZER_DESC      D3D11_RASTERIZER_DESC     #define D3DALL_USAGE_IMMUTABLE      D3D11_USAGE_IMMUTABLE #else     #define ID3DALLDevice               ID3D10Device1     #define ID3DALLDeviceContext        ID3D10Device1     #define ID3DALLBuffer               ID3D10Buffer     #define ID3DALLRenderTargetView     ID3D10RenderTargetView     #define ID3DALLPixelShader          ID3D10PixelShader     #define ID3DALLTexture1D            ID3D10Texture1D     #define D3DALL_BLEND_DESC           D3D10_BLEND_DESC1     #define D3DALL_BIND_SHADER_RESOURCE D3D10_BIND_SHADER_RESOURCE     #define D3DALL_RASTERIZER_DESC      D3D10_RASTERIZER_DESC     #define D3DALL_USAGE_IMMUTABLE      D3D10_USAGE_IMMUTABLE #endif

 

5.3 DX11新特性在寒霜2中的应用:


只读深层纹理缓冲:节省显存和内存占用

BC6H纹理压缩模式:BC6是为高动态范围(HDR)的lightmap、envmap等材质打造的压缩技术,可以节省显存,压缩比率为6:1

BC7纹理压缩模式:为低动态的纹理打造的纹理压缩技术,可以运用于多数材质,压缩比率为3:1

Compute shaders通用计算技术:虽然这个GPU通用计算技术是为视频压缩转换等常规任务打造,但游戏中的粒子效果、后期处理滤镜等都可以用到这个技术,GPU的参与将减低CPU的负担。

DOF动态景深:
在一些游戏中,景深是早就实现了的,不过这种景深更多的是屏幕边缘XXYY区域模糊或者XX米外模糊.动态景深技术支持根据游戏内视角具体情况演算出动态景深,不过在DX9API下,会出现类似马赛克的情况.

AMD 动态景深演示

 

 

 

 

寒霜1引擎的叛逆连队中的动态景深演示

 

 

 

 

 

 

 

 

Tessellation 曲面细分技术:这个技术很全能,它可以减轻CPU在生成的多边形时的负担,又可以对远近景关系智能调节,比如说远景只渲染轮廓和填充基本颜色,不调用高分辨率的贴图。最重要的是,位移贴图技术将因此受益。ATI将让该公司DX9/DX10显卡以及使用A卡的XBOX360也支持这一技术,软饭们可以拿这个去喷索饭了。不过DX9/360版本的曲面细分只是象征性,因为大多数内容只支持16位,而DX11是64。

曲面细分和位移贴图结合方式:

 

 

 

 

 

P-F minlod:比前几代的LOD更好,对远近景材质提供更合理的安排,以提升图像效果和渲染速度。非常适合大地图的战地类游戏。它基于Tessellation技术。这代的lod不需要CPU介入,完全GPU处理且不占用显存/内存。


SSAO屏幕空间环境光遮蔽伪光线追踪技术:虽然DX9和DX10都可以提供环境光遮蔽,但是DX11对此技术将提供一些效能和效果的改进。
BF:BC2的寒霜1.5引起使用的是HBAO技术,寒霜2应该会引入更好的算法

注意坦克底盘凹槽处的阴影,那就是环境光遮蔽的功力体现

 

 

 

 

六.“技术本身并不能带来什么,关键是技术的运用”

6.1 寒霜引擎的应用领域:
不只是战地,DICE自家的所有游戏都可以运用,包括拉力赛车、战地、镜之边缘2,如果愿意的话弹球游戏也可以。镜之边缘1在05年开始制作,而当时寒霜还没有完成,所以用了UE3。

6.1.1 已确认使用寒霜引擎的程序:
ATI显卡性能演示程序:

ATI Tessellation demo(2007)


ruby demo 4.0 : whiteout(2007)

 

frostbite2 1000 point light demo(2009)

 

 

 

6.1.2游戏:
Medal of Hornor / 荣誉勋章2010
Medal of Hornor 2 / 荣誉勋章2
Mirrors Edge 2 /镜之边缘2
Need For Speed The Run / 极品飞车16:亡命狂飙
Dead Space 3 / 死亡空间3
Dragon Age 3 / 龙腾世纪3
Army of Four / 战地四雄

6.1.3战地系列:
Battlefield 1943 战地1943
Battlefield Bad Company 战地叛逆连队
Battlefield Bad Company 2 战地叛逆连队2
Battlefield Bad Company 2- Vietnam 战地叛逆连队2:越南
Battlefield 3 战地3

6.2 寒霜引擎开发套件的辅助工具

DICE美工工具 (DICE Art Tool for MAYA)

 

DICE开发了一套用于在MAYA中方便创建&关联角色,动作,装备的开发组件.

.






 

 

 


七.寒霜引擎2与主流次世代引擎技术规格对比:

七.寒霜引擎2与主流次世代引擎技术规格对比:


寒霜引擎2.0

Frostbite Engine 2
BY EADICE
游戏: Battlefield 3 尚未发售




主要规格
API: Driectx 11.0&10 & Driectx 9.0C
Texture Resolution(材质解析度) :16384*16384
Quadcore-Multithreading(多核心多线程) √ (16)
Tesselation(曲面细分)√
Deferred shading(延迟渲染)√
Live Create(编辑器动态创建)√
Ambient Occlusion (环境光遮蔽)√  
Soft Shadow (柔化阴影)√
Fully-Dynamic Realtime Shadowing(全动态实时阴影)√
Self-Shadow(自投射阴影)√
Anti-Aliasing& Shadow(阴影反锯齿/闪烁)√
Direct Illumination(直接光照)√
Indirect Illumination(印射光)√
Global Illumination(全局光)√
Local Illumination(局部印射)√
Photon mapping(光子映射贴图)√
Raytracing(光线追踪)×
Radiosity(实时辐射度照明)√
bouncing light(光子反弹)√
Dynamic Wet Surface(实时浸润表面)×
sub-surface scatterring(次表面散射)√
Translucency Shader(半透明印射)√
BLOOM (过饱和度)√
High Dynamic Range (高动态范围光照)√
God Ray (轨迹光)√
Normal map(法线贴图)√
Detail map(细节贴图)√
parallax occlusion(视差映射贴图)√
Displacement map(硬件位移置换贴图)√
megatexture(顶点贴图)×
Multi-sample(多重采样)√
Alpha to coverage(通道印射)√
shadow map(阴影贴图)√
Instancing(点缓存系统)√
Gizmo particle(容积粒子)√
Volume Shader(体积Shader)√
Vertex Animation(顶点动画)√
Bones animation(骨骼动画)√
Cloth dynamics(布料动力学)√
Hydro dynamics(流体动力学)
Character dynamics(角色动力学)√


Frostbite Engine 1.5
BY EADICE
游戏:
Battlefield:BadCompany 2 尚未发售
(1.0 for Battlefield 1943& Battlefield BadCompany 无PC版)


主要规格
API:DX11/10/9.0C
材质解析度 :16384*16384
√多核心多线程(4)
√曲面细分
√延迟渲染
√编辑器动态创建
√环境光遮蔽(HB)
√柔化阴影
√全动态实时阴影
√自投射阴影
√阴影反锯齿/闪烁
√直接光照
√印射光
√全局光
√局部印射
√光子映射贴图
×光线追踪
√实时辐射度照明
√光子反弹
×实时浸润表面
×次表面散射
√半透明印射
√BLOOM
√HDR
√God Ray
√法线贴图
√细节贴图
√视差映射贴图
×硬件位移置换贴图
×顶点贴图
√多重采样
√通道印射
√阴影贴图
√点缓存系统
√容积粒子
√体积Shader
√顶点动画
√骨骼动画
√布料动力学
√流体动力学
√角色动力学


Cryengine 3
BY Crytek
游戏:
CRYSIS2 尚未发售





主要规格    

API: DX11/10/9.0C
材质解析度 :16384*16384

√多核心多线程
√曲面细分
√延迟渲染
√编辑器动态创建
√环境光遮蔽
√柔化阴影
√全动态实时阴影
√自投射阴影
√阴影反锯齿/闪烁
√直接光照
√印射光
√全局光
√局部印射
√光子映射贴图
光线追踪
√实时辐射度照明
√光子反弹
×实时浸润表面
√次表面散射
√半透明印射
√BLOOM
√HDR
√God Ray
√法线贴图
√细节贴图
√视差映射贴图
√硬件位移置换贴图
×顶点贴图
√多重采样
√通道印射
√阴影贴图
√点缓存系统
√容积粒子
√体积Shader
√顶点动画
√骨骼动画
√布料动力学
√流体动力学
角√色动力学




Cryengine 2
BY Crytek
游戏:
Crysis PC独占 150万
Crysis:Warhead Crysis:Wars PC独占 单作低于 100万,尚未记录 3款总合200万以上




主要规格   
×多核心多线程
×曲面细分
×延迟渲染
×编辑器动态创建
√环境光遮蔽(SS)
√柔化阴影
√全动态实时阴影
√自投射阴影
√阴影反锯齿/闪烁
√直接光照
√印射光
√全局光
√局部印射
√光子映射贴图
×光线追踪
√实时辐射度照明
√光子反弹
×实时浸润表面
√次表面散射
√半透明印射
√BLOOM
√HDR
√God Ray
√法线贴图
√细节贴图
√视差映射贴图
×硬件位移置换贴图
×顶点贴图
√多重采样
√通道印射
√阴影贴图
√点缓存系统
√容积粒子
√体积Shader
√顶点动画
√骨骼动画
√布料动力学
√流体动力学
√角色动力学



X-Ray Engine 1.6
BY GSC Gameworld
游戏:
1.0 for Stalker:SOC 200万
1.5 for Stalker:CS 单作低于 100万,尚未记录
1.6 for Stalker:COP 单作低于 100万,尚未记录


主要规格    
API: DX11/10/9.0C
√多核心多线程
√曲面细分
√延迟渲染
×编辑器动态创建
√环境光遮蔽(SS+HB+HD)
√柔化阴影
√全动态实时阴影
√自投射阴影
√阴影反锯齿/闪烁
√直接光照
√印射光
√全局光
√局部印射
√光子映射贴图
×光线追踪
√实时辐射度照明
√光子反弹
√实时浸润表面
×次表面散射
√半透明印射
√BLOOM
√HDR
√God Ray
√法线贴图
√细节贴图
√视差映射贴图
×硬件位移置换贴图
×顶点贴图
√多重采样
√通道印射
√阴影贴图
√点缓存系统
√容积粒子
√体积Shader
√顶点动画
√骨骼动画
√布料动力学
√流体动力学
√角色动力学





Chrome 4
BY Techland
游戏: Call of Juarez : Bound in Blood (Chrome 3 for Call of Juarez )
销量: 单作低于 100万,尚未记录


主要规格

API: DX10/9.0/9.0C
材质解析度:8192*8192
√多核心多线程
×曲面细分
×延迟渲染
×编辑器动态创建
×环境光遮蔽
√柔化阴影
√全动态实时阴影
√自投射阴影
×阴影反锯齿/闪烁
√直接光照
√印射光
√全局光
√局部印射
√光子映射贴图
×光线追踪
√实时辐射度照明
√光子反弹
×实时浸润表面
√次表面散射
√半透明印射
√BLOOM
√HDR
×God Ray
√法线贴图
√细节贴图
√视差映射贴图
×硬件位移置换贴图
×顶点贴图
√多重采样
√通道印射
√阴影贴图
√点缓存系统
√容积粒子
√体积shader
√顶点动画
√骨骼动画
√布料动力学
√流体动力学
√角色动力学



Unreal Engine 3
BY EPIC
GAME:
UT3   单作低于 100万,尚未记录
GOW   单作低于 100万,尚未记录
GOW2 无PC版




主要规格    
API:DX9.0C
材质解析度:4096*4096
×多核心多线程
×曲面细分
×延迟渲染
×编辑器动态创建
×环境光遮蔽
√柔化阴影
×全动态实时阴影
√自投射阴影
×阴影反锯齿/闪烁
√直接光照
×印射光
×全局光
√局部印射
×光子映射贴图
×光线追踪
×实时辐射度照明
×光子反弹
×实时浸润表面  
×次表面散射
√半透明印射
√BLOOM
√HDR
×God Ray
√法线贴图
×细节贴图
×视差映射贴图
×硬件位移置换贴图
×顶点贴图
√多重采样
×通道印射
√阴影贴图
×点缓存系统
×容积粒子
×体积shader
√顶点动画
√骨骼动画
√布料动力学
√流体动力学
√角色动力学




IW Engine 4/3
BY Infinity Ward
游戏:
IW3:Call of Duty 4 PC单作低于 100万,尚未记录
IW3.5:Call of Duty WAW   PC单作低于 100万,尚未记录
IW4:Call of DutyModern Warfare2 美国地区17万以上



主要规格
API: DX9.0C(DX9.0 sm2.0支持IW3)
材质解析度:4096*4096
×多核心多线程
×曲面细分
×延迟渲染
×编辑器动态创建
×环境光遮蔽
×全动态实时阴影
×自投射阴影
×阴影反锯齿/闪烁
√直接光照
×印射光
×全局光
×局部印射
×光子映射贴图
×光线追踪
×实时辐射度照明
×光子反弹
×实时浸润表面
×次表面散射
√半透明印射
√BLOOM
×HDR
×God Ray
√法线贴图
×细节贴图
×视察映射贴图
×硬件位移置换置换贴图
×顶点贴图
√多重采样
√通道印射
√阴影贴图
√点缓存系统
×容积粒子
×体积shader
√顶点动画
√骨骼动画
×布料动力学
×流体动力学
√角色动力学


好吧,如果一款游戏不支持上述技术,会发生什么?

首先是最高效果与最低效果之间差别不大

这是2007年销量冠军<使命召唤4:现代战争>的

最高效果



最低效果


那么为什么区别不大呢?因为这款游戏大多数效果都是靠贴图实现,而不是sharder.所以无论你开啥效果也没太大区别.

现在让我们去掉贴图

 


然后就是执行效率低下,优化很差. 多边形生成率等参数惨不忍睹


多边形生成率=当前帧多边形数量X每秒帧数

通常在同样场景空间下,多边形数量更多意味着场景内的图像复杂度更高,表现更精细.或者同样精细度下场景空间更大.
而多边形生成率是3D图形业界衡量软硬件渲染性能的重要指标.

很多著名射击游戏都是执行效率差优化差,靠小场景,纸片贴图远景充数的典型


以下是各图像引擎在我同一台机器上的执行效率(多边形生成率)
别人如果是I7+5870效率自然分别都会更高,不过只要都是4核心+DX10系统,效率的排名应该不变

 



 

1. CryEngine2 (Crysis)
多边形数量:2,300,392个/帧
帧率:28.8帧/秒
多边形生成率:66,251,289个/秒

 

 

2. Frostbite Engine (BFBC2 beta)
多边形数量:1,496,398个/帧
帧率:37.0帧/秒
多边形生成率:55,366,726个/秒

 

 

3. Chrome4 Engine      (COJ:BB)  
多边形数量524,186个/帧
帧率:61.2帧/秒
多边形生成率:32,080,183个/秒

 


4. Unreal Engine 3 (镜之边缘)
多边形数量:177,517个/帧
帧率:52.0帧/秒
多边形生成率: 9,230,884个/秒

 

 

5. IW4 Engine (现代战争2)
多边形数量:99,411个/帧
帧率:70.4帧/秒
多边形生成率: 6,998,534个/秒

 

 

看到上面的排名,有人会问,是不是多边形数量越多执行效率就越高,而多边形数量越低执行效率就越低,和API/图像引擎完全无关呢?

当然不是了.  


这里有一个失败品drivingspeed,多边形数量也很多,光是一个车就20W多边形,不过图像效果很渣,而且我已经卡到不行。。。

选车界面
多边形数量: 215,343
帧率: 42.8
多边形生成率: 9,216,680





多边形数量: 900,055
帧率: 10.3
多边形生成率:9,270,599



多边形数量: 823,235
帧率: 11.6
多边形生成率:9,549,526


多边形数量: 742,341
帧率: 12.7
多边形生成率:9,427,730


通过以上,我们可以发现在游戏主要参数不变的情况下,多边形生成率相对比较稳定,多边形数量与帧率成反比.

所以.如果以UE3,source,IW4等引擎制作出100万以上多边形数量的图像很容易,在同一场景内加几百个人就可以了,你会发现很快卡的根本动不了.而使用它们的厂商也很有自知之明.会对场景进行简化,例如像一开始那样使用纸片贴图代替模型.减小地图大小.

其实以UE3,source,IW4等引擎的厂商也很有自知之明.会对场景进行简化,例如像一开始那样使用纸片贴图代替模型.减小地图大小.

 

 

 

 

 

八. 寒霜引擎的版本

8.1 相同点:
FULL DX9.0C SM3.0
HAVOK Physics
Havok Destruction
Havok Animation
Havok Behavior


8.2 不同的版本

frostbite 1
《战地1943》/《战地:叛逆连队》
API:DX9.0C+D3D10.1
Havok Physics 6.0
Havok Destruction1.0

frostbite 1.5
《战地:叛逆连队2》/ 《荣誉勋章》多人部分
API:DX9.0CSM3.0+DX10/10.1/d3d11
Havok Physics 6.5
Havok Destruction2.0

 

 

frostbite 2
《战地3》/《极品飞车16:亡命狂飙》/《荣誉勋章2》/《镜之边缘2》

传言:《死亡空间3》/《战地四雄》/《质量效应3》多人部分
API:DX9+DX10 + FULL Directx 11.0
Havok Physics 7.0?
Havok Destruction3.0?

 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

posted on 2019-01-31 17:09  jack船长大哥  阅读(7732)  评论(0编辑  收藏  举报

导航