http://hi.baidu.com/dicezxr0/item/a82715c3243d0757bdef69f3
那啥,我写了这么多也挺不容易的,转贴请注明作者和出处
文章分为上下两部分:
寒霜系列引擎技术解析[上]:游戏制作与图像效果
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
(主要框架已完成)
未完待续…………
战地:叛逆连队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
1.1.1.可以对整个时间、气候、环境进行动态的调节,而不用像某些老游戏(指半条命2,现代战争2等)一样绘制一个假的远景。
1.1.2 无需为庞大的山脉群构建高精细度模型,可以在寒霜引擎中直接生成。

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


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

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




现实
1.2.1 可以在游戏引擎内实现一些资源的导出和导入,而不用麻烦的来回转换格式
与各个平台的良好对接:

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

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






工作人员正在调整头部

1.3 全新的文件架构大幅缩小游戏内容,减少载入时间
与Refractor2使用简单的zip压缩不同,寒霜引擎采用了FBRB封装文件和预载入技术,在FBRB下是 res(resouces资源),而资源解开后又有新的dbx等格式.虽然看起来压缩是一层套一层,在BC2实际游戏中,读取速度却更快.
对于所有人:
1.4 大量最新技术将提供更低的配置要求
DX10提供给了寒霜新的渲染架构,寒霜将成为孤岛危机的CE2之后,配置要求最低的游戏引擎之一(在与其他游戏相同的画面和游戏设定下,新一代的技术将起到降低配置要求的作用)



视频:


1.6 更大的一切

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

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




可破坏地形:


二.最新的图像技术带来的图像效果
2.1.2 undergrowth系统采用的绿叶支持凹凸

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

2.3.1静态阴影:
阴影贴图(shadow map)
既画在贴图上的阴影.由预烘培软件烘培在贴图上,所以是静态,不能随环境而变化,也不会带来额外消耗.
Chrome4引擎游戏sniper虽具备环境光遮蔽和实时动态阴影

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



2.3.2非实时动态阴影:


映射阴影(Shadow Mapping)
目前多数游戏的方式,验证预置的所谓”光源”与目标之间有无障碍,如有,就把障碍物图像黑化之后映射在目标上.
映射阴影实际是一堆会动的1×1半透明黑色贴图的组合…..
它的质量和shadow map分辨率大小相关.采样精度至少1024*1024才能消除阴影锯齿,交错,而2048*2048尺寸在地铁2033,潜行者,孤岛危机等高阶游戏中使用.

全实时动态阴影的好处:
1. 配合动态环境
例:游戏中物体可破坏,若使用静态阴影,你将得到一个只剩一半的房屋,和画在贴图上的完整房屋阴影.
2. 不会被贴图所影响,
例:当你为地面调用了不同的贴图,如果新增的贴图覆盖了阴影的贴图,将会很囧.

自投射阴影(Self-Shadow)
既目标阴影可投射到自身,DICE在05年战地2中使用了此技术,没记错的话,DICE是首家.
缺陷:阴影有锯齿或闪烁,放弃对SM2.0显卡的支持可解决这一问题。
解决方案线性百分比渐进滤波、线性插值滤波算法都只支持SM3.0以上

2.3.5 软阴影(Soft Shadow)
软阴影只是一种效果,并非一种技术或者算法,实现方式.
用来模拟现实世界无论光照还是阴影,都是一个辐射度的渐变过程,不是阴暗分明这一效果.
虚幻3,lithtech(FEAR)等引擎中都依此实现.

效果虽好,但对显存和性能影响大.所以Crysis中远处物体没有阴影,强开只能效率低下
2.3.6 解决方案:业界最新的阴影生成技术:
使用CSM/VSM算法,亦或两者皆用,都可以
层叠阴影CSM
原理是将视锥分割成多个,映射阴影根据距离而非视锥决定阴影精度.这导致了一些距你较近,但是你看不到的物体使用高精度的阴影. 而较远,却看得清的物体没有阴影.
视锥分割是由专门的高数算法推导,是引擎开发者的事,引擎使用者无需关心。
层叠阴影适合表现大规模场景,即使你在空中,一些物体距离你非常远,也能具有不错的阴影.
类似于killzone2中的区域反馈层叠阴影贴图技术,但更先进
在DX10提供的单通道阴影技术中,阴影将由少数纹理阵列构成,而非无数个不同的阴影纹理,所以CPU的工作量大为降低

柔化阴影演示:
DX11开启柔化:
DX10关闭柔化:
对比图:
DX11模式的软阴影开启之后,性能损失不超过5%,如显卡强力可能为1%-2%

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

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的细节贴图,在显存占有很低的情况下,就可以达到极好的效果

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

现实世界存在大量细节

使用Chrome4 Engine的狂野西部:生死同盟也使用了细节贴图
同样基于寒霜引擎的荣誉勋章Beta中,没有使用细节贴图.则缺乏纹理细节

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


2.5 寒霜引擎的凹凸材质方面:
凹凸贴图(bump mapping):一种老掉牙的凹凸技术,只能生成简单的图像凹凸一般只适合做地砖和墙壁砖的效果和刻字。在虚幻2游戏中很流行
凹凸贴图的典型运用




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

视差贴图效果


硬件位移置换贴图(Displacement Mapping)位移贴图是目前最完美的凹凸处理方式,它和凹凸贴图、法线贴图、视察置换贴图等技术区别在于它是“物理凹凸”,而非欺骗视觉。
3年前是不会有人想到位移贴图这种在renderman、VR等软件中靠CPU实现的静帧渲染技术可以用于游戏。

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

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


几何位移与几何实例开关
上下两张图实际多边形数量相差 -=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)
所谓光子反弹,就是模拟现实中,光会携带能量反射反射的情况.原始的光照是直接光照,反射之后的光照即为间接光照, 而多次反射的过程的叫做光子反弹,光子在反弹中携带能量衰减的过程叫做光能传递.
直接与间接光照共通构成了完整的光照过程—全局光.
stalker的x-ray引擎中对光子反弹的模拟
直接光照下,光不会反弹

开启了光子反弹的效果

CE3引擎中对GI的模拟


寒霜引擎2 实时光能传递


2.7.3 粒子照明 Particle Lighting


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.4 Havok Behavior 行为引擎
它将让bot学会新的行为、动作、战术
你是否曾注意到,在一些采用havok的游戏中,就像光晕3和半条命2,友好的AI会转身面向你,会和你产生互动。敌人则不仅会冲向你开火,他们也会寻找掩护(找到一个物体来挡住你的和它的hitbox),在彩虹6号3:盾牌行动之类的战术游戏中,敌人甚至拥有包抄、迂回等战术。在寒霜集成的最新版中,Havok-Behavior的AI表现会更加强大,例如你会看到bot弓腰通过,攀爬,或者跳过障碍,遇到爆炸物选择躲避或是捡起来扔回去。
Havok 行为演示:
4.5 模块化的碰撞检测系统
整体HITBOX也能实现一些破坏,但只是靠脚本实现.
战地2的hitbox模式破坏演示:
游戏中没有用到的Havok流体力学与布料力学展示:
4.6 Havok vs Physx
五、寒霜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对多线程和多核心提供最佳支持
DICE的程序员们仅花了3个小时就把寒霜从DX10.1规范升级到DX11,70%的时间花费在代码增加和替换,在做游戏时可以在DX9.0c/DX10.1/DX11/PS3/XBOX360模式之间切换。DX11版本的寒霜引擎可以对8核心提供支持。
以下是DICE内部切换DX10.1和DX11用的一个脚本
#ifdef DICE_D3D11_ENABLE #include
#else #include
#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的负担。
AMD 动态景深演示
寒霜1引擎的叛逆连队中的动态景深演示
Tessellation 曲面细分技术:这个技术很全能,它可以减轻CPU在生成的多边形时的负担,又可以对远近景关系智能调节,比如说远景只渲染轮廓和填充基本颜色,不调用高分辨率的贴图。最重要的是,位移贴图技术将因此受益。ATI将让该公司DX9/DX10显卡以及使用A卡的XBOX360也支持这一技术,软饭们可以拿这个去喷索饭了。不过DX9/360版本的曲面细分只是象征性,因为大多数内容只支持16位,而DX11是64。
曲面细分和位移贴图结合方式:

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

六.“技术本身并不能带来什么,关键是技术的运用”
6.1 寒霜引擎的应用领域:
不只是战地,DICE自家的所有游戏都可以运用,包括拉力赛车、战地、镜之边缘2,如果愿意的话弹球游戏也可以。镜之边缘1在05年开始制作,而当时寒霜还没有完成,所以用了UE3。
6.1.1 已确认使用寒霜引擎的程序:
ATI显卡性能演示程序:
ATI Tessellation demo(2007)
frostbite2 1000 point light demo(2009)
6.2 寒霜引擎开发套件的辅助工具
DICE美工工具 (DICE Art Tool for MAYA)
DICE开发了一套用于在MAYA中方便创建&关联角色,动作,装备的开发组件.
.





首先是最高效果与最低效果之间差别不大
这是2007年销量冠军
<使命召唤4:现代战争>
的
使命召唤4:现代战争>

现在让我们去掉贴图

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

其实以UE3,source,IW4等引擎的厂商也很有自知之明.会对场景进行简化,例如像一开始那样使用纸片贴图代替模型.减小地图大小.
八. 寒霜引擎的版本
8.1 相同点:
FULL DX9.0C SM3.0
HAVOK Physics
Havok Destruction
Havok Animation
Havok Behavior
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》
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
转载于:https://www.cnblogs.com/skiwnchiwns/p/10342800.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207629.html原文链接:https://javaforall.net
