题目:最强神作!Crysis深度剖析与优化指南
作者:小熊在线——WolStame
介绍:最强游戏Crysis全方位剖析与深度优化指南
关键:CRYSIS/DX10游戏/技术剖析/优化
原创:小熊在线——Ben Tse
第1页:前言:万众期盼的危机
第2页:三兄弟的游戏梦与CryEngine的诞生
第3页:游戏界的《侏罗纪公园》
第4页:年度黑马,成名之作
第5页:告别UBI转嫁EA
第6页:酝酿“危机”
第7页:CryEngine 2的诞生
第8页:CryEngine 2技术剖析:shading 系统
第9页:CryEngine 2技术剖析:光影系统
第10页:光影系统:直接光照
第11页:光影系统:简洁光照(环境光照)
第12页:容积雾、次表面散射3S与HDR
第13页:法线贴图、视差遮蔽映射与3DC
第14页:DX10特效一览
第15页:DX10特效一览(续)
第16页:CryEngie其他技术特性赏析 物理系统
第17页:CryEngie其他技术特性赏析 角色动画系统
第18页:无限创造力:Sandbox 2编辑器概览 1
第19页:无限创造力:Sandbox 2编辑器概览 2
第20页:CryEngine 2先进特性赏析 音效系统
第21页:CryEngine 2先进特性赏析 AI篇
第22页:Crysis DEMO实战
第23页:Crysis DEMO系统要求与测试平台
第24页:Crysis显卡测试结果
第25页:深度优化指南:控制台命令参数一览
第26页:深度优化指南:参数效果调试与对比
第27页:深度优化指南:纹理LOD与抗锯齿对比
第28页:深度优化指南:让DX9实现DX10效果
第29页:深度优化指南:低、中、高端平台INI参数设置推荐
第30页:硬件升级指南
第31页:精美截图欣赏
全文
http://bak2.beareyes.com.cn/2/lib/200711/06/20071106421_1.htm
万众期盼的“危机”
2007年10月26日是游戏界一个值得纪念的伟大日子,因为就在这一天,一款万众瞩目的游戏诞生了!!~咳~……确切地说因该是“一款吸引全球游戏人眼球的游戏DEMO”诞生了!!!没错,它只是一款DEMO,一款试玩而已!这个DEMO的名字就叫做:“Crysis Pre-Release DEMO”(《孤岛危机》预发试玩版,多么伟大的名字),然而正是这样一款试玩在整个游戏界造就了空前无比的效应:早在8月底,CRYTEK就对业界宣布他们万众瞩目的钜作Crysis的试玩版将在9月26号发布。然而在经过几个版本的BETA版试测之后,CRYTEK决定忽悠全世界的玩家,将DEMO推迟一个月发布。此次跳票让整个业界的人士失望之极~~~一眨眼(实际上小编由于对Crysis的极度渴望,一个月时间简直就是“度日如年”)到了10月25号,游戏界大奸商EA突然宣布凡是预定了Crysis正式版的玩家,可以准时在26号当天通过VIP通道下载到Crysis DEMO,而没有预定的普通用户将被推迟24小时,也就是说VIP用户可以提前一天抢先体验到Crysis DEMO!!!这种以提前一天玩到DEMO的作为回报的销售策略居然引发了一场全世界范围的Crysis预定狂潮~~~在短短几天里,预定Crysis的人数就突破四千万,这个庞大的数字确实令人咋舌……由此不难看出Crysis这款钜作在玩家心目中的地位~~
在这个大作林立的季节,Crysis之所以能够突破《虚幻竞技场3》、《战争机器》、《使命召唤4》、《地狱门:伦敦》等一线大作的重重包围,脱颖而出成为业界的焦点,是因为它不仅继承了前作FAR CRY出色的游戏性,而且更重要的是为游戏界带来了一场全新的图形效果革命,这场革命势必为3D游戏图形发展历程树立一个全新的里程碑。而上一次革命要追溯到2004年那个FAR CRY、DOOM3、RIDDICK等众多优秀作品同台竞技的年代,此后虽然也不乏像FEAR、上古卷轴4、STALKER这样的优秀作品,但就画面上的进步而言,跟04年的顶尖作品相比都还远远谈不上“革命” 。在经历了近三年的平平淡淡之后,在这个Vista、DX10、统一着色器架构硬件等众多新鲜技术、产品崭露头角的年代,无论是玩家还是软、硬件商都迫切需要一款能够为图形领域带来革命浪潮的游戏!而正是在这种背景下,Crysis耀眼的技术光芒成功捕捉了全世界玩家的目光,造成如此轰动的效应也是理所当然!
CRYSIS DEMO的实际效果果然没有令我们失望:华丽而真实的画面、高度拟真的物理系统使得任何平台上的任何游戏都相形见绌,绝对是前无来者的惊世之作,其甚至会在未来几年内成为其他游戏开发者的眼中钉,因为它是在太难超越了。而这样一个被全世界奉为神作的Crysis到底是一个什么样的游戏?其背后到底集合了多少高科技秘密?如何才能在今天的硬件上跑出最优的画面?今天,小熊在线将带领各位看官,从Crytek的历史、Far Cry的成名历程、CryEngine的技术解析、Crysis性能评测、图形效果深入优化等方方面面,对这款钜作进行全方位的剖析! 下面我们先来了解Crysis的生父——CRYTEK
三兄弟的游戏梦
1999年,Faruk, Avni和Cevat Yerli三兄弟在德国法兰克福创立了“Crytek GmbH”这家互动娱乐开发公司,当时三兄弟的梦想是开发一个能够创造历史的游戏。Faruk, Avni和Cevat Yerli都是不折不扣的游戏迷,特别是作为Crytek CEO的Cevat Yerli,早在Commodore 64时代就经常与游戏为伴,后来的大学时代更是迷上网络对战。正是爱好所激发出来的热忱才能让Crytek成为如今的业界技术领头羊,如今Crytek已经从创建开始的小工作室发展成为如今员工人数上百的大型游戏开发公司,120名来自世界各地的员工(其中有一名员工来自我们中国:))为Crytek的游戏开发项目注入了来自不同国家的文化底蕴。小熊在线www.beareyes.com.cn
帝国的根基,CRYENGINE 诞生!
三兄弟明白要想开发出一款优秀的作品,就必须现有一个优秀的引擎。当时出于自身的技术贮备不足与资金有限等因素,很多游戏开发商都采取购买第三方现成引擎的做法,而那个时代ID的Quake Engine、EPIC的Unreal Engine以及Monolith的LithTech引擎三足鼎立,几乎统治了整个第三方游戏开发引擎市场。但Crytek并不想依赖于其它人的技术,在公司成立后,他们就全力开发自己引擎。
在经过了两年左右的不懈努力之后,Crytek的著名引擎,第一代的CryEngine终于诞生了!!CryEngine不仅集合了当时诸多先进特性于一身,而且还有一些其他公司说没有的独门技术。下面我们就来简单回顾一下CryEngine的技术特性:首先是超级远景渲染,CryEngine可以渲染超过一公里外的远景,如此遥远的可视范围使得就算是在高分辨率的显示器上,远处的敌人也会被缩小为一个象素点般大小,这对于那个时代的游戏来说是不可想象!可以说当时的硬件性能是无法满足如此庞大远景对多边形的需求量的!为了能够尽量减少多边形的使用量,为CPU与内存减压,CryEngine出了使用动态LOD跟多边形遮挡剔除等提高无效渲染的技术外,更重要的是引进了一项后来大红大紫的技术——Noraml Mapping!没错,第一个大量运用Normal Mapping的游戏引擎不是我们熟知的DOOM 3 Engine而是Cryengine,之所以大部分玩家是在玩到DOOM 3才开始认识Normal Mapping这项技术是因为在CryEngine/Far Cry中,Crytek为他们的normal mapping技术起了一个很形象化的名称——“PolyBump”。这项在当时相当创新的技术是由Crytek的创始人Cevat Yerli跟其他两名天才程序员Marco Corbetta 和 Martin Mittring在2001年引进的,此外还有一项被称做Dot3 Lightmap的光照技术,用于辅助PolyBump在非真实动态光源下也可以很好地表现物体表面的凹凸效果。CryEngine 1还具有很强的可扩展性,能够与时俱进,在04年又增加了对SM3.0以及FP16精度HDR的支持,时至今日,CryEngine 1的改进增强版仍被几部未发布的大作所采用。
初露锋芒 X岛浮出水面
如果你在2000期间曾光顾过Crytek的官方网站的话,那么你可能还记得但是网站上放出了大量侏罗纪公园风格的3D截图,当时你可能会猜想Crytek是不是正在秘密开发一部以侏罗纪恐龙为题材的游戏?
果然到了2000年的E3大展,Crytek在经过一年多的“闭门造车”之后,首次出席这一年一度的游戏盛典,当时他们的参展作品正是一个名为X-ISLE的技术展示DEMO!Crytek甚至将自己自嘲为E3历史上唯一一个支付入场门票的参展商:D在这一年的E3大会上,Crytek的X-ISLE DEMO可以说是技惊四座,演示画面上郁郁葱葱的孤岛上逼真巨大的恐龙来回游走,天上飞的地上爬的,各种类的恐龙一应俱全,加上漂亮的海水效果跟岛上的植被互相呼应,其画面效果可以说是美不胜收。那时候Cevat Yerli的英语虽然比较蹩脚,但是其绘声绘色的解说加上X-ISLE超高水准的画面,很快就吸引了NVIDIA跟UBI的眼光。小熊在线www.beareyes.com.cn
第二年,Crtek计划将X-ISLE分为两个项目进行开发,一个是作为NVIDIA新产品GEFORE 3系列的演示demo的全新X-ISLE技术DEMO,该DEMO还被计划开发为一个介绍恐龙知识的互动教学软件;另一个则是X-ISLE的游戏版本,计划将被开发为一个大型的FPS冒险游戏。由于GEFORCE 3可编程着色器技术的引进,X-ISLE的画面效果得到大幅增强:Pixel Shader不仅为恐龙的皮肤带来真实的凹凸粗糙感,而且也为水面带来真实的反光倒影;Vertex shader的关键帧补偿让恐龙的骨骼动画更加生动自然;而PolyBump则让画面保持高细节度的同时保证了效率,按照NV跟Crytek的说法,一片GEFORCE 3就可以在同屏幕上流畅渲染50头恐龙!!!
Far Cry社团尝试通过MOD的方式让FC重返《X-ISLE》
年度黑马,处女之作——Far Cry
就在一年之后,Crytek突然取消原本以侏罗纪公园为主题的X-ISLE项目,将其改名为《FAR CRY(孤岛惊魂)》,并且主题风格也完全取消恐龙的设定,唯一保留下来仅仅是那座“孤岛”。
Farcry的故事背景被设定在南太平洋一座美丽的世外孤岛「Cabatu」上。玩家所扮演的主角「Jack」是一名拥有神秘背景及不为人知过去的战士,为了逃避过往而选择在南太平洋群岛经营出租快艇的生意。没想到天算不如人算,在他答应受雇于一名女记者接送她到海上孤岛「Cabatu」时,却突然发现原来岛上已被一群来历不明的军人当成秘密基地,接着女记者不幸被俘,自己的快艇更被炸毁,已经退无可退的「Jack」只好选择搏命一战!玩家千万不要被这座美丽小岛的外观给骗了,当玩家真正开始扮演「Jack」时,玩家就会发现原来这座看似天堂的小岛也可能是无间地狱!
「孤岛惊魂」中不但有超过15种武器,更有5种以上的交通工具以及10多种不同特色的敌人,游戏更提供了自製地图功能,让玩家发挥创意自行设计单人及多人对战关卡。而当然,「孤岛惊魂」也支援多人连线功能,让玩家和来自世界各地的高手们一决高下!
图象方面,Far Cry跟现在的Crysis一样,为当时的游戏图形领域带来一场前所未有的革命!经过5年来不断地改进,CryEngine 1已经完全支持当时最先进的SM2.0,而支持的API也从当年的X-ISLE DEMO所使用的OGL过渡到更加简单易用的DX 9。当时Far Cry普一推出就立刻成为图形界的评测标准,两大图形芯片巨头NVIDIA跟ATI也围绕Far Cry展开了一场“优化”角逐,双方的FANS也为此争论不休。当时ATI R3XX系列在Far Cry漂亮的PS2.0反光效果以及NV3X系列的无能至今仍为两大阵营的FANS们所“津津乐道”。
FAR CRY中的经典峡谷场景
更为难得的是Crytek并没有在游戏推出后就松懈,仍坚持引领领导技术潮流:在6800显卡推出后Farcry 1.2使得其成为第一个支持Shader Model 3.0的游戏,1.3版本使得其成为了第一个支持HDR的游戏,在1.32其又成为最早的64位游戏之一,在ATI Radeon X1800推出后其又加入了HDR+AA的支持。
1.3补丁下的眩目HDR效果
Far Cry是在2004年3月发售的,同期发售的还有EPIC的《虚幻竞技场2004》,而FPS老前辈的id Software的《毁灭战士3》和Valve的《半条命2》也是在当年发售,这些巨作对于初出茅庐的Crytek来说就像三座大山一样挡在他们面前。但这些困难并没有难倒Crytek。出于它们对技术和纯粹游戏乐趣的追求,Farcry在推出后就备受业界和玩家的好评,游戏不仅叫好还叫作,仅在美国Far cry就销售了40多万套。Far Cry的成功让Crytek这家原本默默无闻的小厂商首次被全世界的玩家所认识,让Crytek从此成为游戏界一颗耀眼的明星。
与老东家分手,携手新欢
在2001年的E3大会上,育碧老总Yves Guillemot这位伯乐相中了Crytek这匹黑马,此后UBI成功发行Far Cry让Crytek奠定了今天在业界的地位。不过双方的关系却并非外人看来那么融洽,早在开发Far Cry期间,双方的矛盾就不断恶化,在作品最终完成之际,双方的互信基本已经消耗殆尽。在Far Cry大获成功之后,UBI看到这一品牌所潜在的巨大商业价值,于是趁热打铁,连续推出Xbox版《孤岛惊魂:本能进化》和Xbox 360版《孤岛惊魂:本能掠夺者》两部Far Cry系列作品,赚了个钵满盆满。
UBI的这一举措也最终激怒了Crytek,虽然后者对Yves Guillemot冒着风险承担了《FarCry》发行任务的知遇之恩,但双方的决裂仍然势在必行,双方最终分道扬镳。此次决裂育碧完全从Crytek处获得FarCry系列的知识产权和CryEngine游戏引擎的永久授权。至此开始育碧将拥有唯一的游戏开发权,还可以利用“游戏角色、造型、版权和环境设定”发布“任何格式的终结、附加、衍生和推销产品”,同时育碧也可以利用FarCry版的CryEngine引擎任意开发、销售、分发“无限制数量”的游戏,而且无需和FarCry知识产权有任何关系。如今CryEngine 1已经为UBI所占有,目前已经有数部大作正基于CryEngine 1的改良升级版本开发中,其中甚至包括Far Cry的续作——Far Cry 2,因为Crytek已经完全丧失了Far Cry这一品牌的使用权。值得一提的是,从Far Cry 2最新公布的视频来看,改良后的CryEngine 1画面效果具有跟CryEngine 2叫板的实力!
Crytek方面,在跟UBI分手之后,他们又与业界的大腕EA结为新欢,EA将为Crytek的新作负责发行工作。Crytek表示,与当初的育碧相比,自己现在的发行商EA公司提供了更多的自由空间和更好的支持。EA在各方面都很慷慨,从商业角度看,Crytek的发行和市场推广方面得到了更多支持和更多自由,能更专注于自己的事务,同时能请求更多的支持;而EA也乐于提供,因为双方都想打造出第一流的作品。
很快,Crytek就完全投入到新作品的开发工作上,新一代的CryEngie已经蓄势待发,而由于丧失了Far Cry的品牌权,他们的Far Cry正统续作改用Crysis命名,中文名《孤岛危机》。这样一场前所未有的“危机”正在遥远的德国开始酝酿…………
“危机”的酝酿
Farcry是Crytek的第一个游戏,其给他们积累了很多宝贵的经验,当Farcry还在开发的时候,Crytek知道这是同Doom 3和Half-life2的一场市场竞赛,世界知名的id Software和Valve的游戏就象两个800磅重的大猩猩,虽然后来事实证明Far Cry本身的优秀质量绝对可以跟它们相抗衡,但当时Crytek还是采取了抢先上市的策略,所以Farcry是个急促的项目,虽然Crytek保证其符合他们自己内部的质量标准,但他们知道如果他们有更多时间就会做得更好。
在2004年Farcry还在后期开发的时候Crysis的开发工作就开始了,Cevat提出要将游戏的丛林地表冰冻起来,将其变成“冰冻的天堂”,这不仅仅是个技术上的问题,还要考虑到剧情的安排。冰冻的丛林的特性不同于一般的丛林,树木和其他物体会由于超低温而更容易碎裂。他们也需要解释丛林为什么会冰冻起来,于是他们就想起了外星人入侵引起环境灾难的剧情。
Crysis不仅仅只是图象引擎的增强,而是在多方面都将是个更大更有深度的游戏。游戏的情节使得游戏有很强可重玩度,游戏有很多地方可以发掘和探索。如如果你一个队友过早就被杀掉,他就不能在后面给你情报帮你更轻松的完成任务,虽然它不会影响你通关游戏,但你依然可以重新尝试故事发展的不同方向。而这次发布的DEMO也已经证实了这一点,国外玩家已经证明走不同路线可以打出三个不同的结局。在自然环境游戏将会有更多策略,纳米作战服使你的角色有了不同的特别能力,如果你被攻击,你可以选择提升装甲使得你更耐打或者选择提升速度使得你更难被击中,你可以做不同的选择。
游戏剧情介绍
2019年,一颗巨大的小行星撞击了地球。
朝鲜政府迅速的封锁了撞击的岛链,将神秘的小行星归为己有,美国也紧急的派遣出三角洲特种部队去调查局势并报告给五角大楼,朝鲜和美国之间的冲突一触即发。这时,小行星突然爆炸,出现了个2000米高的外星飞船,并产生了个巨大的球型力量场,冻结了岛很大一部分区域并剧烈的改变着全球的气候系统——对地球入侵开始了。
在这样的情况下两个敌对的国家不得不联合起来共同对抗异型从而拯救全人类。玩家必须带领他的爆破小组穿过茂密的热带雨林、荒芜的冰原地带,最终到达外星飞船的核心区域同异型展开殊死搏斗。小熊在线www.beareyes.com.cn
CryEngine 2 技术剖析
CRYTEK在04年发布的处女作《孤岛惊魂》(Far Cry,下文简称FC)当时在技术上可以说是技惊四座,它不仅大大提高了同类型游戏的技术门槛,而且也被视为那个年代的“次世代”游戏标准。在FC大获成功之后,CRYTEK原本可以稍微增强改进一下CRYENGINE 1,然后就像其他游戏开发商那样推出一款换汤不换药的“续作”,这样就可以舒舒服服地再捞上一笔!但是决心成为业界领头羊的CRYTEK并没有采取这种保守的做法,为了满足他们对技术与美术的无尽欲望,他们决心重新开发一款全新的游戏引擎,然后再大幅改进游戏的设计以及架构以求添加更多的创新特性。在这种背景下,FC的新生续作《孤岛危机》(Crysis)粉墨登场。Crysis在类型上仍然延续FC的FPS风格,但是各方面都将比FC有长足的提高,无论是游戏性还是画面,无论是技术上还是美工,无论是物理效果还是AI,Crysis都将比Far Cry更上一层楼!而只有在全新的CRYENGINE 2引擎才能让这一切成为现实!
CRYTEK内部所有的游戏设计师、程序师以及美工们经过一轮深入研讨之后,为CRYENGINE 2制定了一系列的技术目标:
首先CRYENGINE 2必须满足CRYSIS三种主要环境的渲染刻画,这三种环境包括:
热带天堂岛
特点:大量的物体、深度图、浩瀚的海洋、超级远景、主要方向光源(如太阳、月亮)所带来的环境光照等等
异形基地的室内场景
特点:大量的点光源、巨大的区域房间、多边形遮蔽剔除、容积雾等等
冰天雪地
特点:冰雪材质的表现、次表面散射等等
满足上面三种不同环境的需求是一项不小的挑战,而逐个为不同特性的关卡做优化则是难上加难:
达到电影、照片级画质而不落入“恐怖谷”之中(注:恐怖谷理论是由日本机器人专家森昌弘提出,当机器人与人类相像超过95%的时候,哪怕它与人类有一点点的差别,都会显得非常显眼刺目,让整个机器人显得非常僵硬恐怖,让人有面对行尸走肉的感觉。这里引申到3D游戏人物上,但3D人物做得越逼真,观众的眼光就会越加挑剔,3D人物与真人间一丁点的差异都会显得格外刺目,所以3D人物越做得逼真越难令人信服)
游戏的画质越接近电影,观众的眼光就会越加挑剔
动态光照与投影
预渲染的光照对很多提高性能和画质的算法而言都是至关重要的,全面采用动态光影将严重限制了这些算法的运用,因为这些算法通常都依赖于静态参数。
对多GPU/CPU的支持
支持CPU多线程跟多GPU的游戏要比以往单核产品复杂许多,而且很容易对其他非多CPU/GPU配置造成不利影响。
CRYSIS的设计需要21KM×21KM大小的游戏区域
Crytek原本计划21KM×21KM大小的全岛无缝地图,但考虑到如此庞大的区域以及CRYSIS的高细节度表现对开发周期、环境的持续渲染以及数据流的处理等等造成巨大的压力,而且无缝带来的好处完全不值得去花费这么大的力气,所以最终采用了像FAR CRY那样的关卡地图,即将整个岛屿切割成为若干区域并分成不同的关卡,最大的关卡地图仍可达到4KM×4KM。
超级远景
支持着色器版本2.0(DX9)到4.0(DX10)
开发从SM2.0起步非常便利,但是早期的DX10硬件根驱动使得SM4.0版本的开发困难重重,整个游戏的开发进度也因此大受拖累。
高动态范围光照
早在NV40时代,CRYTEK就专门为FAR CRY开发了加入HDR效果的补丁并取得了不俗的效果。如今CRYSIS的画面效果自然不愿受到LDR拖后腿。
动态(可损坏)环境
可破坏环境系统可以说是最激动人心的特性之一,但同时也是难以征服的难点之一。
游戏与引擎同步开发
游戏与引擎同步开发造成代码终处于某种可用状态,这对于开发一个小项目来说影响不大,但是像开发CRYSIS这样的大项目就会成为一个不小的挑战。
第8页:CryEngine 2技术剖析:shading 系统 |
全新的shading系统
开发FAR CRY的CRYENGINE 1由于需要支持当时为数不少的GF2级别的显卡,所以除了支持先进的PS/VS可编程渲染管线外仍然保留了对固定渲染管线跟寄存器合成器(register combiner,混合贴图的逐象素解决方案)的支持,这样再加上为支持DX/OGL的复杂材质,CRYENGINE 1的shader编写脚本采用了非常复杂的语法。
在完成FAR CRY的开发工作之后,CRYTEK大幅改写重建了着色系统,其中最主要的举措就是彻底废除了固定功能的渲染管线,并且大大简化了语法。为了进一步简洁引擎,CRYENGINE还废除了对OGL的支持,此举大大提高了shader脚本对FX格式代码的兼容性,开发shader从此也变得更加方便易学。
不同材质的表现结合
总而言之,经过大幅改进之后的CRYENGINE 2 shader脚本系统可以将各种纹理跟多种算术运算结合起来创造出诸如遮蔽、湿润、泥泞或者冰冻等等特殊表面材质效果;这些特效还可以被分割或跟其他诸如金属高光、玻璃材质等常见shader效果混合使用。支持实时逐象素光照、凹凸反射/衍射、容积glow、动画贴图、透明电脑荧幕\窗户、弹孔、反光表面以及其它各种DX10统一着色器架构带来的独特shader特效。
CRYTEK通过创建一个“shader缓存请求列表”的方式大大简化了不同shader间的合成,然后再利用公司内部网络,让公司内所有计算机形成一个小型的分布式计算系统,用于创建shader列表所需的shader编译计算。然而编译仍需耗费大量时间,因此开发人员又通过利用动态分支特性、减少shader合成以及拆分成多个渲染pass等措施来大幅削减shader的编译时间。
高级着色器效果一扫以往游戏人物皮肤的橡皮感、塑胶感
逐象素场景深度计算
CRYENGINE 2引入了一项名为“逐象素场景深度计算”的技术(也叫“基深渲染”Scene Depth Based Rendering),该技术优先计算视点到场景物体表面的深度值(Z值),并将得到的深度值保存起来以供后面的特效使用。由于运用于CRYSIS中的大量特效、渲染技巧,诸如延迟着色、球形雾、容积雾化、阴影映射、阴影遮罩的生成、视察映射、柔和水陆交接线的分离、Z缓冲柔和粒子、以及动态模糊、景深、边缘模糊处理等后期处理特效的运算都需要深度值的参与,提前计算出深度值然后供后面的渲染步骤反复使用能够有效减少shader运算的浪费,大大提高了效率。
渲染场景坐标空间着色系统
在FAR CRY中,CRYTEK将视点跟光照位置转换至切线空间坐标系(相对于表面方向),因此所有的pixel shader数据都是基于切线坐标系,同时也是在该空间中进行计算。但是随着多重光照的运用,该系统开始在传递光照参数上受到限制。为了解决这一问题,CRYENGINE 2改用“渲染场景坐标空间着色系统”,该技术实际上已经被运用于立方体贴图反射特效上,所以代码没有兼容性上的问题,而且着色效果也比原先的切线坐标系空间系统更加准确。
昵称: CG迷途大熊猫
园龄: 2年10个月
粉丝: 40
关注: 4
+加关注
常用链接
我的标签
- CG Study(9)
- d3d(8)
- ogre(7)
- crysis(6)
- crytek(6)
- cryengine(5)
- Gamebryo(4)
- nvidia(3)
- material(3)
- C#(3)
- 更多
随笔分类
- C/C++/Objective-C(1)
- CG(6)
- CG--D3D(1)
- CG--Gamebryo
- CG--OGRE(1)
- iOS(1)
随笔档案
- 2012年7月 (1)
- 2011年10月 (1)
- 2011年8月 (1)
- 2011年7月 (1)
- 2011年5月 (3)
- 2011年4月 (3)
- 2011年1月 (1)
- 2010年8月 (2)
- 2010年7月 (5)
- 2010年6月 (3)
- 2010年5月 (1)
- 2010年4月 (1)
- 2010年2月 (1)
- 2010年1月 (6)
- 2009年12月 (4)
- 2009年11月 (1)
- 2009年10月 (9)
- 2009年9月 (6)
相册
CG
- BrowseVideoCards
- 最全的显卡参数列表
- Microsoft Academic Search
- Microsoft Academic Search
- OpenGPU
- OpenGPU
- Virtual Terrain
Windows
- PINVOKE
- win32 API & Sample
以前的Blog
最新评论
阅读排行榜
评论排行榜
推荐排行榜
最强神作!Crysis深度剖析与优化指南(9-17)
在我的google chrome中有时不能看到flash,IE较稳定
http://bak2.beareyes.com.cn/2/lib/200711/06/20071106421_9.htm
光影系统
FAR CRY采用的光影系统
CRYTEK当年在FAR CRY的室外场景中主要采用了shadow map(阴影贴图/映射) + projected shadow(投射阴影)的方式,其中投射阴影用于室外的太阳光源在物体上的投影,而当时他们面临的最大问题就是阴影边缘难看的锯齿问题,不过在那个时代此举实属不得以而为之。对于植被的投影,考虑到性能问题,他们只能采用预计算的阴影贴图,但另一方面又受到显存容量的限制,只能采用分辨率低下的模糊阴影贴图,效果自然大打折扣。不过在高端硬件上,CRYTEK在植被上使用了阴影映射,但在跟预计算的阴影相结合的时候容易出现问题。
FAR CRY中实时阴影贴图与预计算阴影贴图混合使用
对于点光源,FAR CRY采用了与当时DOOM 3相同的蜡版缓冲阴影(容积阴影),因为容积阴影是更加简单高效的解决方案。CPU蒙皮可以在GPU渲染容积阴影的时候协助为物体的阴影轮廓挑边,但是显然对于细节精细、轮廓复杂的物体CPU将面临重大压力,因此容积阴影的缺陷也是明显的:对CPU蒙皮性能的依赖性、对GPU的负载以及额外的内存带宽需求;而更致命的是:缺乏对半透明物体的支持,这对于需要大量棕榈树和花草灌木等半透明叶子投影的热带岛屿场景是绝对无法容忍的,容积阴影技术给CRYTEK判了“死刑”也就不足为奇了。
更加先进的光影系统
此后CRYTEK仍希望容积阴影能够被用于没有多少半透明物体的室内场景,但是生硬的阴影边缘以及多重光源下的性能损失问题最终让CRYTEK不得不寻找更加合适的光影方案。
CRYENGINE 2的光影系统
对于今天的硬件机能,采用单一简洁的投影系统似乎已经时机成熟。容积阴影由于我们上面提到的种种弊端而惨遭淘汰,CRYENGINE 2彻底抛弃了容积阴影的代码。shadow mapping(阴影映射)能够提供高质量的柔和阴影,并且可以根据实际需要自由调节性能跟画质,因此成为CRYENGINE 2光影系统的不二人选。不过,shadow mapping只能涵盖直接光照部分,对于电影画质所必不可少的间接光照部门则需“另请高明”,因此CRYENGINE 2最终为直接光照跟间接光照分别采用了两套专门的解决方案。
Crysis中完全动态的实时阴影效果一流
直接光照
CRYENGIE 2在处理直接光照部分采用了shadow mapping(即将光照中的物体深度保存在一张2D贴图之中),而容积阴影则被彻底抛弃。虽然CRYTEK早在FAR CRY时代就采用了shadow mapping,但在FAR CRY中只有极少数的物体能够单独投影,对于大部分物体,通常是采用将大量物体的阴影合成为一张阴影贴图的做法。从光源发出的方向同步投射一张简单的阴影贴图可以做到不错的效果,但是在玩家视点附近的阴影贴图分辨率很低,造成难看的块状阴影。FAR CRY还试用了trapezoidal shadow maps(PSM)跟 perspective shadow maps(TSM)两种shadow map。
CRYENGINE 2采用了跟3DMARK 06相同的cascaded shadow maps (CSM),这种shadow map技术通过在玩家视点区域内投射同一分辨率的多张阴影重叠来实现细腻的阴影效果。
为了高效处理静态光照,CRYENGIE 2采用了一种称为“动态遮蔽映射”(dynamic occlusion map)的技术,该技术可以很好地处理静态光照下的投影,但阴影的边缘存在粗糙的锯齿,而且被拉伸的贴图也带来了大量的失真。为了解决阴影贴图边缘的锯齿问题,CRYENGIE 2引进了“百分比渐近过滤”(percentage closer filtering,简称PCF),这样可以一定程度上减弱阴影边缘的锯齿状失真,但是该技术需要许多采样样本,因此性能不高,而且一些较老的ATI显卡无法支持,对于R520之后的ATI显卡则可以通过Fetch4功能来模拟。
从左至右,从上到下,分别为逐级提高百分比渐近采样的效果对比
为了取得更高的效率和画质,CRYTEK又为PCF做了改进,跟一味增加PCF的过滤采样不同,CRYTEK采用了“随机查询每象素”的技巧,这样可以在使用较少的采样样本的情况下获得接近高采样的画质,可以明显减少阴影边缘的颗粒状失真。而通过调节采用的高低,又可以让玩家根据需要自由调节性能跟画质。
对于地形阴影,CRYTEK曾尝试采用从开始角度到结束角度下不同镜头的预计算阴影贴图来模拟动态地形阴影,但最后以失败告终。接着CRYTEK又尝试以增强更新率的occlusion map,但也同样不凑效。CRYTEK的三次尝试是直接让他们普通的shadow map上阵,但结果出来的阴影效果过于统一而显得不够自然,并且边缘过于生硬,而这时候采用“随机查询每象素”的技巧并不凑效,会出现严重的颗粒感。最后CRYTEK尝试使用variance shadow map(方差阴影贴图)并最终取得了成功,其唯一的不足就是在多个投影物体相间重叠的时候会产生问题,但这种情况在地形处理上很少发生。
阴影遮罩贴图
为了避开SM2.0指令数不足的缺陷,CRYENGINE 2将阴影查询从shader中分离开来,此举还可以减少结果shader的合成数量以及将多重阴影结合起来。CRYENGIE 2将计算得出的8 bit阴影贴图查询结果保存于一张平面坐标空间贴图中,这就是所谓的“阴影遮罩”。一张4通道的32bit 贴图就可以提供足够的存储位数并且还可以被作为渲染目标,而且4个通道最多可以合成4个光照基数到一个象素。但是该技术对半透明几何体支持不佳,在处理半透明物体的时候CRYENGINE 2改用在shader中做shadow map查询的方式进行。
阴影遮罩示意图
间接光照 (环境光照)
随着容积阴影与阴影贴图等先进投影技术的引入,3D游戏中的光影效果在过去几年里有了翻天覆地的改进。尽管如此,几乎当前所有的游戏在光影处理上都存在一个重大缺陷——那就是缺乏对“间接光照”的表现。比如当年以出色的光影效果而闻名的DOOM 3,虽然其光影效果令玩家们印象深刻,但当时仍有很多人发现了该游戏在处理光照效果上存在一个重大缺陷:游戏中的场景处于光源之内的就“灯火通明”,而光源之外就是“漆黑一片”,明亮区域与黑暗区域之间缺乏过渡,完全没有所谓的“半影区域”,这样整个环境看起来就显得相当生硬突兀。实际上这就是由于DOOM 3缺乏对“间接光照”的计算所造成的,在现实环境中,光束的行程并非只局限于从光源出发然后到接收物体处结束,事实上由于自然界中的大部分物体对于光线都存在不同程度的反射率,所以光束在到达接收物体表面之后又有一部分被反射到周围的物体上,这时光线的接收体已经变成了“环境光源”,对其周围的物体跟场景能够产生光照效果。光线的跳转、转移使得“直接光照”以外的区域也能受到一定程度的光照,从而产生一种“半亮半影”的自然过渡区域,而这种效果正是“间接光照”所要表现的。
DOOM 3几乎没有考虑到间接光照的计算,上图灯的上方跟人物周围的场景漆黑一片
事实上不仅仅是DOOM3,后来发布的Riddick、FEAR、SCCT、Quake 4等光影效果出众的游戏同样缺乏对间接光照的支持。只有HL2采用radiosity Normal Maps技术在一定程度上实现了间接光照,但由于HL2中动态光源太少加上蹩脚的投影技术,最终出来的效果并不出众。而跳票王STALKER也秘密内置了对间接光照的支持,虽然效果比HL2要好许多,但由于性能代价太大以及算法还不够完善等问题而被开发商隐藏起来,玩家只能通过控制台来打开。
不出意外的话,Crysis将成为首个对间接光照支持最完整、效果最出色的游戏。对于间接光照的实现,Crytek原本打算采用目前最广受认可的全局光照算法——光子映射来预计算辐射度信息,并采用类似HL2的做法将光线的辐射信息保存在贴图中,crytek甚至为此而准备了一个叫做“3D传输采样器”的工具,可以很方便地运用光子映射算法来计算全局光照数据。不过由于数据存储量以及计算量太大,Crytek最终抛弃了这种方法。小熊在线www.beareyes.com.cn
实时环境关照贴图可以将预先计算的环境光照信息添加到室内环境的表面信息中,
包括当前环境的入射光位置跟颜色都可以被动态添加到用于照明室内场景的光照强度中,
此举可以显著提升实时逐象素光照跟阴影的逼真度。小熊在线www.beareyes.com.cn
Crytek改用另一种更加简单的做法——Real-Time Ambient Map(实时环境光照贴图,最近开始走红的实时间接光照实现算法,STALKER在室外场景就采用了该技术来实现环境光照,下文简称RAM),跟之前的做法相比,采用RAM每象素只需保存一个标量环境遮蔽值,该数值可以通过向所有方向发射光线来计算,而且最终得出的数值还可以反复使用。RAM在着色程序中根据带有遮蔽值的象素、相对于表面的光照位置以及光照颜色和表面法线等信息来计算物体表面对光线的接收程度。值得一提的是,这里计算得出的结果只是一个近似值,精确度不高,但是对于欺骗人眼还是没有问题的。
室外场景里使用了2.5D环境光照技术,该技术可以根据环境物体(比如植物、建筑物)对光源的遮挡情况,
正确计算出物体接收到的光照量
为了提高RAM的效率跟适用范围,Crytek的天才程序员又对其进行了改进,改进后的算法称为“Screen-Space Ambient Occlusion” (屏幕空间环境光遮蔽,下文简称SSAO)。SSAO通过采样象素周围的信息,并进行简单的深度值对比来计算物体身上环境光照无法到达的范围,从而可以表现出物体身上在环境光照下产生的轮廓阴影。由于可以利用我们前面介绍过的“逐象素场景深度计算”技术计算得出的深度值直接参与运算,所以SSAO的效率相比RAM有了显著的提高。小熊在线www.beareyes.com.cn
上面四张图片分别为打开(上)与关闭(下)SSAO的效果对比
CRYENGINE 2其他先进特性赏析
容积化、多层次以及远视距雾化技术
该技术可以生成笼罩地表的云、雾层,能够自然地模糊远景的可视对比度。此外还可以跟动态光影相结合,减少景物之间的生硬过渡,从而增强大场景的立体自然感。
次表面散射
次表面散射(Sub-Surface Scattering),简称3S,主要用于模拟不完全透明材质内部表现出来的一种真实光影特效。我们知道,当灯光照射到玻璃或清澈的液体表面时,灯光会穿透这些介质,3S效果可用来模拟灯光进入介质内部后发生的散射。最典型的就是一根点亮的蜡烛,仔细观察你会发现在烛光的照耀下,蜡烛靠近火焰的那端显出的半透明效果。CRYSIS中3S被广泛运用于植物叶子、冰面等材质上,而实际上,3S的最大用处之一在于表现光源照射下的人物皮肤,换句话说,要想表现真实的皮肤材质,3S效果必不可少。目前的许多游戏在人物皮肤的渲染上就因为缺乏3S效果而显得塑料化、橡胶化,这也许正是CRYSIS中的人物看起来如此逼真的秘诀所在!
视觉适应和高动态范围光照
视觉适应是用来模拟人类眼睛碰见突然光线变化的适应情况(如从黑暗室内明亮的室外)。而高动态范围光照可以让场景有更大范围的明暗对比度从而使得画面更真实。
法线贴图、视差映射和3DC
法线贴图技术通过计算高细节度模型的法线信息并将其保存在一张高压缩比(3DC/DC5)的法线贴图之中,然后将这张法线贴图贴用于低细节模型上代替原型的多边形曲面的光照计算,从而等到一个低多边形、高细节的3D模型。CE2还支持更高级视差遮蔽映射(Parallax Occlusion Mapping),该技术曾被ATI用于展示R520 强大PS3.0动态分支性能的TOY SHOP DEMO中,目前出了CRYSIS外,还没有其他游戏支持。Parallax Occlusion Mapping是目前效果最好的Bump Mapping技术,能够给予多边形物体表面的贴图更强的深度感,从而令需要高度凹凸立体的浮雕、砖墙等材质更加真实。
法线贴图的大规模运用虽然让画面一扫过去3D游戏平淡简洁的画面,让整个游戏场景变得凹凸有致、立体感十足,但由于法线贴图存储的信息量比一般的贴图要来得更大,因此对本地显存造成的压力可想而知。显卡的板载显存容量虽然在过去几年里不断翻倍,但仍然满足不了Crysis这样法线贴图数量如此庞大的游戏,为了解决这一问题,Crytek在CRYENGINE 2中全面支持3DC技术。
Parallax Occlusion Mapping的惊人凹凸细节效果
法线贴图其实并不是真正的贴图,所以也不会直接贴到物体的表面,它所起的作用就是记录每个点上的法线的方向。法线的3个三维向量X、Y、Z分别对应三原色红绿蓝的颜色,被值保存在一张贴图中,这样的贴图就是所谓的法线贴图。虽然法线贴图不是真正意义上的贴图,但是传统的贴图压缩技术同样对其行之有效。业界使用做广泛、最传统的DXTC纹理压缩技术具有6:1 的高压缩比,有效提高丁硬件资源的利用率,但却不可避免遭遇图像失真的问题。造成图象失真的根本原因还是纹理压缩技术。因为作为一幅贴图来讲,其中绝大部分信息记录的都是每个点的颜色,如果要对纹理进行压缩的话,势必损失掉一些颜色的信息,这样的损失对于普通的贴图来讲影响是非常小的,因为玩家绝对不会去在意具体的一个点的颜色是否和原来的纹理保持了一致。但是,对于法线贴图就不是这样了,因为法线贴图中每个点的颜色反映的是该点法线的角度,也就是该点的凹凸的信息,如果这些信息丢失了,带来的结果就会糟糕的多——阴影失真是小,甚至可能造成贴图错误,所以传统的DXTC并不适合用来压缩法线贴图。
法线贴图制作流程图
为了解决这一问题,ATI在2004年发布R420显示芯片的时候引入了专门针对法线贴图的3DC技术。跟DXTC不同,3DC将法线贴图分成4×4像素小块压缩,这上面的16个点中分别以红、绿、蓝3个通道的颜色值记录了该点法线的方向,而这个方向恰恰就是该点的凹凸的情况的一个最直观的表达的形式。接下来,3Dc技术将这16个点的颜色值中X项和Y项独立提取出来,分成两个4×4的矩阵,然后再针对每个矩阵进行压缩。通过这种做法,3DC可以以消耗少许shader资源为代价,将每个象素压缩为一个字节,并同时保证足够好的画质。而通常未经过3DC压缩的法线贴图每象素需要占用4个字节的存储空间。在CRYENGINE 2中,纹理的压缩并非向往常那样在loading的时候进行,而是被放在资源编译工具中进行,此举可以减少整个游戏的体积并显著缩短loading时间。而对于不支持3DC的老硬件,Crytek则在loading的过程中将3DC格式的贴图转换为DXTC5格式。
3DC效果对比
Crysis曾被玩家们戏称为“DX10救世主”,如此响亮的外号体现出玩家们对Crysis DX10效果的期待程度。下面我们就一起来看一下CryEngine 2将支持哪些DX10特效。
高质量的3D海洋渲染技术
CE2在渲染海面时会根据风力跟洋流的信息即时作出动态调整,因此可以生成非常自然逼真的海面。而“柔和剪裁技术”会在海陆相接的地方根据陆地的高度和海水深度生成自然的海岸线和海床。此外,“焦散模拟技术”还会在海底环境投射效果逼真的动态阴影跟水底光纹。
为了表现出海面波涛汹涌的效果,CE2采用了屏幕空间坐标系镶嵌技术(Screen-Space Tessellation),该技术可以很好地表现出波涛起伏的效果,但这种效果并非基于真实的物理运算,而仅仅是一个程序化的过程,因此效率非常高。小熊在线www.beareyes.com.cn
光束、光轴
CRYENGINE 2支持容积光照技术(立体光照),运用此技术用于渲染光线在通过高度遮蔽的环境时(比如茂密的森林)所形成的光束、光轴,还可以用来渲染光透过海面在海底形成的“神圣光芒”效果。
运动模糊和景深
运动模糊是用来模拟慢速快门拍摄快速移动的物体或者是快速移动的镜头,以往的运动模糊效果只能做到全屏幕模糊,而运用DX10特性可以对单个物体进行模糊处理。通常的做法是利用几何shader跟踪物体模型边线的运动轨迹,后用渐变的透明度来绘制,以达到运动模糊的那种物体拖着残影的效果。而景深是用于清晰视野焦点而模糊焦点前后的事物。
运动模糊
景深
动态细节的soft LOD地形管理技术
在DX10纹理阵列(texture arrays)、绘制断言(predicated draw)、数据流输出(stream out)、低API overhead以及Instancing等特性的帮助下,CryEngine引入了soft LOD技术,可以大幅减低CPU和内存负担,在让近处的物体和地形有不错的细节程度同时,依然可以有长达八千米的视野距离。
第16页:CryEngie其他技术特性赏析 物理系统 |
Polybump 2
Polybump 2可以单独使用也可以同3DS Max之类工具一起使用。这个工具可以快速提取如法线贴图、置换贴图、非闭区域方向和其他一些属性来创建包含高质量的表面描述的扩展信息。这些扩展信息可以用来绘制类似高模品质的低模,但这个速度将会快得多。这些数据储存在文件里,它可以不必再次计算就用多种不同的方法导出。即使是1000万个多边形这样的高多边形数也可以快速完成。
内置多线程处理物理引擎
该技术可以让场景里的任何物体,比如树木、植被等模型对诸如风力、爆炸冲击、引力、物体之间的碰撞/摩擦等外力作出互动反应,而且无需专用物理加速硬件的支持。
高级绳索物理性模拟系统
绳索物理性模拟技术令柔软的植被、树叶能够对风、雨和角色运动等外力作出自然物理反应。此外,其它诸如吊桥跟外力的互动以及触须之类柔软可弯曲的生物组织的物理性模拟均为高级绳索物理模拟系统的杰作。
互交的可毁坏的环境
动态的改变任何环境物件和形状,可以摧毁建筑、树木和其他物体。
坦克可以撞毁房屋
第17页:CryEngie其他技术特性赏析 角色动画系统 |
角色动画系统
新的角色动画系统可以真实的表现人类或者载具动画。完全内置的角色编辑器可以让制作者在CryENGINE Sandbox2里预览动画效果。此外,超级强大的动画图表允许动画设计师对角色动画的状态设置以及状态转换进行可视化操作。
集成的面部表情编辑器
强大的全新面部表情编辑工具使用音频波形分析技术自动的同步获取声音并将语音的关键点转化为自然而可信的面部表情和唇型。成熟而方便的多重基于摇杆的用户界面允许使用多种方法直观而快速的被定义和被组合。表情和动画一但被创建,就可以在多个不同的人物模型上运用。在系统的配合下,视频跟踪工具可以用普通的摄象机来捕捉演员的动作,这些运动会在编辑器里直接被转化成想要的面部模型,表情和运动能够同步组合成唇型,可以被动画制作人进一部的处理。
个性化角色制作系统
角色制作流水线使用一个丰富的角色特征附件粘贴系统,可以给人物角色粘贴上蒙皮材质、动画信息等数据。此外,还可以将物理信息粘贴到骨架跟人物多边形脸孔上,甚至还允许设计师任意更换角色的身体,比如更换头部、手臂或者上下身。支持硬件加速的人物模型变形系统允许设计师对人物模型网格的变量进行修改。该系统不仅支持手动变形操作而且还可以选用程序化自动生成的样本,以减少内存的占用量。此外还有一个基于着色器的变形系统,可以对泥泞、衣物以及用于皮肤伪装的着色器效果进行变形操作。
参数化骨骼动画系统
通过对用户定义的动画样本进行混合,设计师可以对角色的动画进行互动控制,令该角色能够自然合理地根据实际游戏环境改变动画运动。该系统允许角色可以以不同的速度走动;可以在对通道、路径的方向转变作出合理反应;可以作出自然的上、下山运动;可以通过动态混合各种碰撞反应动画来改变角色的移动方式。
程序化运动变形
CE2采用CCD-IK,分析IK、样本IK等程序化算法以及物理模拟来增强预设定动画。这些程序法处理方法都是让计算机根据这些算法规定的步骤来计算人物的运动方式。CE2采用了一种运动变形技术来保留原本基础运动的方式,使得原本生硬的计算机生成跟真人动作捕捉混合动画看起来更加自然逼真。
高质量动画压缩
CE2采用了关键帧压缩技术,可以根据特定动画所需的保真度动态调节压缩等级。该技术可以在提供高保真度的同时节约至少90%的内存占用量。
昵称: CG迷途大熊猫
园龄: 2年10个月
粉丝: 40
关注: 4
+加关注
常用链接
我的标签
- CG Study(9)
- d3d(8)
- ogre(7)
- crysis(6)
- crytek(6)
- cryengine(5)
- Gamebryo(4)
- nvidia(3)
- material(3)
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow