渲染真实美女 AMD与Crytek联手做Demo
1/22
这个讲座是由AMD游戏开发者关系经理冉锦和Crytek资深引擎工程师陈苏为我们做的。这次AMD和Crytek的合作的Demo代表了新一代图形引擎技术。今年AMD和Crytek有了深入的合作。老玩家都应该知道ATI的美女Ruby,这是早期ATI和后来AMD显卡的一个性感女神的数码形象。不过图中的Ruby是今年年底将发布的新Demo中的形象。2/22
年复一年AMD都在用她来展示AMD最新的技术,今天AMD考虑重新打造更酷更炫更有技术含量的Ruby,这也是为什么要和Crytek合作的原因。AMD认为之前的Ruby形象偏动画、动漫效果,重新考量后想把Ruby变得更加现代化,性感,战斗女神一些,所以要从渲染材质、光影效果上全方面提升。这次使用的就是CryENGINE 3.5引擎。老Ruby卡通模型的风格将被真实感替代,看来AMD这次是要用GPU渲染真人了。3/22
完成这次Demo需要多方通力合作,其中有大名鼎鼎的导演Simon West,他指导过《太空监狱》和《古墓丽影》,这次Ruby的剧本和动作设计将有他来负责。Digital Domain负责动作、表情捕捉,Art Bully负责人物性格刻画,87Eleven负责电影级别的打斗效果。让Demo拥有电影级别的效果就需要环境的真实感,光照更加丰富,这次的渲染采用DirectX11。4/22
在现实中我们面对的大部分光源都是面光源,但现在游戏中的光源都采用了点光源,如果想模拟出面光源就必须要用很多个点光源来模拟,这对GPU来说是个非常沉重的负担。在CryENGINE 3.5引擎中面光源将得到广泛使用。图片中就是两种光源的区别,离光源较远的部分区别最大,采用面光源的效果会在这些区域渐渐变的模糊,这种效果是真正符合现实中的样子。5/22
在计算高光效果时面光源依然有优势,左边是面光源,右边是点光源,最大的区别就是么呈现在水面上的反射,面光源呈现的效果更加真实。6/22
由于这次的Ruby Demo是在夜晚的环境中,所以光的反射效果对最终Demo的真实程度起了关键作用,这张图中运用了一些贴图的反射和通过调整模型贴图再加反射效果来实现。7/22
复合3D镜头最终目的是呈现镜头的光晕效果,如图所示,这也是CryENGINE 3.5引擎的新效果。除了镜头光晕还可以表现镜头上的污点。集成在CryENGINE 3.5引擎中后编程人员可以在很大自由度上调整光晕大小,拉伸,污点分布,并且可以把这个效果粘贴在任何你想要的光源上。8/22
这一页的4张图,左上角是完全利用复合3D镜头效果,右下角是完全关闭此效果的,右上角的只开启了光晕效果,没有开启镜头污点。左下角2个效果都开启了,但效果没有开到最高。9/22
左边这张图呈现的是盒状光源的投影反射,右边呈现的是球状光源的反射,对比现实中来说,左边更加真实。10/22
SSDO是在Crysis2中引入的一个新特性,相比上一代SSAO在未遮挡部分的计算更精确,SSAO只是考虑了球面采样的平均情况,另一个比SSAO提升的就是,所有的光源都可以对阴影的计算有所贡献,也就是说你摆放的任意光源后,接触面产生的阴影互相之间还会产生进一步的作用,这一点可以减缓自阴影效果引起的一些问题,由于SSDO是一个动态效果,所以当阴影一旦有重叠时,你会发现效果远好于SSAO。11/22
SSDO的另一个优势是把光的颜色信息考虑到阴影上,所以当环境光是带颜色的,那么阴影也会范起颜色。而SSAO中的阴影只是呈现灰度的变化,这张图就清楚的呈现出SSDO和SSAO的差异,你分得出来谁是SSDO吧?12/22
实时的局部反射:反射对游戏来说始终是个比较头疼的环节,因为为了产生反射我们不得不把场景渲染两遍,一遍是正常的,一遍是带反射的效果。在新的CryENGINE 3.5引擎中引入了一个叫做“屏幕空间反射”技术,通过收集深度和ray marched采样到光线反射时所需要的信息只渲染一次就可以,这个技术一般可以运用在积雪、水面、金属曲面等物体表面上,图片中左边是完全关闭的,右侧是高质量的局部反射,水面是最大的差异。13/22
抗锯齿,CryENGINE 3.5引擎中集成了大量的抗锯齿技术,FXAA/SMAA/MSAA,玩家可以按照自己的喜好选择其一,想要更好画质就选MSAA或者SMAA,想要更快帧频就选FXAA。图中是FXAA开核关的效果,由于FXAA并没有考虑子像素运动的情况,所以有时会出现像素闪烁的情况。好处就是么效果相当高,开启后帧频降低不多。14/22
由于这次的Ruby Demo主要突出人物,所以要把眼神刻画惟妙惟肖,这就是CryENGINE 3.5引擎中的眼睛着色技术,可以看到眼睛模型已经分成了虹膜、瞳孔等等,再加上视差映射和反射的效果,眼睛看上去就活灵活现了。15/22
CryENGINE 3.5引擎中Tessellation会让多边形更加丰满,前后两张图对比着看就能看出差异来了。16/22
CryENGINE 3.5引擎中Tessellation会让多边形更加丰满,前后两张图对比着看就能看出差异来了。17/22
想要渲染出逼真的头发计算量很大,工程师一直想找个解决方法,好的头发效果需要有3个步骤,先做抗锯齿,再做阴影,最后做半透明效果。18/22
在CryENGINE 3.5引擎中有2种头发的效果,第一种是Kajiya Hair,第二种是Marchner Model,具体原理没听明白……19/22
自阴影的过程不是很复杂,只要运用Deep Shadow Map技术就可以实现,用和不用效果差很多哦。20/22
透明效果的解说也没明白……大家凑合看吧,效果差异挺大的。21/22
最后讲述了关于风吹动头发或者因为头部摆动造成的头发运动,最终效果不能改变头发的性质,比如我从前是卷发,不能因为游戏中吹过一阵大风后,头发吹成长直了。图片中说的就是如何通过限制头发不同段的摆动幅度来保证真实效果。22/22
这种限制也能创造出其他效果,比如被打湿后的头发更容易贴在头皮上,干松的头发更容易被风吹,这也是通过定义头发的摆动限制、重力效果来实现的。
编辑总结:
这次AMD和Crytek合作完成新版Ruby的实时渲染Demo,将顶级硬件和顶级软件结合在一起,这也是为什么这次的Demo有信心做出电影效果的原因,实现逼真的效果就靠前面介绍的技术,最终效果大家一起等今年年底在YOUTUBE上线的视频吧。