[SQUARE ENIX 开放会议 2012]


揭晓「Agni's Philosophy」幕后的"技术编"

原文:game.watch 佐藤カフジ
翻译 : Trace译者注:因为i时间有限,翻译和一些语言的组织上的小问题还请见谅



  SQUARE ENIX 公司,在11月23日,24日两天召开了名为 [SQUARE ENIX  开放会议 2012]的技术展示的私人会议。已经传播得很广,本会议的日程安排是今年6月E3 2012披露的技术DEMO「Agni's Philosophy」的剖析。

  本文是聚焦3D模型的美术工作制作的[艺术篇]之后,由开发职员演讲的支撑「Agni's Philosophy」实现技术的[技术篇]。

  这次会议聚焦技术面的4个部分。有[Runtime & Pipeline的构建和最优化]、[实时图形技术解说]、[服务器端路径搜索系统]、[次世代游戏AI架构]。这里以可以看到「Agni's Philosophy」成果的两个部分为中心。

技术推进部是如何驾驭渲染水准的庞大数据的?

  关于技术详细会议的第一项,是技术推进部的首席工程师岩﨑浩氏的题为[Runtime & Pipeline的构建和最优化]的演讲。
  岩﨑先生的使命是,在「Agni's Phiolosophy」开发时,把视觉工作部门(Visual Works)的渲染影像品质的资源,可以在「Luminous Studio」上实现。以[直面次世代的游戏开发所发生问题]为第一个目标而开始的本项目,首先面对难关的就是岩崎先生

岩﨑先生,首先对第一个问题数据大小进行解说。作为实例披露了「Agni's Philosophy」使用的几个场景的数据量。这些例子里,保守的场景也有500W的顶点数,纹理约1000张,总量有1GB,重厚场景有接近1000W的顶点数,1300张纹理数据量1.8GB。

「Agni's Philosophy」的艺术制作使用MAYA,场景数据完成后转换为FBX的中间格式,再进行FBX到Luminous用的数据转换。在这里进行实况编辑和时间轴编辑,接着合成最终并输出最终数据,大致是这样的流程。


  因为这个项目的影像方面的高品质主要是视觉工作部门的工作,Luminous方面的编辑器不太被使用,几乎都是MAYA完成场景数据的特征,这样,MAYA到Luminous的转化工作频繁进行,在这里发生了问题。


岩﨑浩氏(SQUARE ENIX 技术推进部 Lead Engineer)


数据大小的例子。一个数秒结束的场景


关于「Agni's」的数据流

  特别致命的是,打开MAYA做成的场景数据,FBX的转换,还有从FBX变换到Luminous用数据部分,对于某个场景使用的时间分别是6分,45分,1个半小时,花费了庞大的时间。因此,这种测试,改善,再测试的迭代周期就崩溃了。随着数据的日益变大,实际已经到了崩坏的地步。

  于是,技术推进部把在MAYA侧频繁调整的参数保存为另外一个文件来解决问题,而且在shader变化时,都有不论编译多少次同样的代码都会花费时间的问题。




因为过于巨大的数据尺寸, MAYA的数据转换时间花费过多的问题发生了。


数据流的问题点

  对于这个问题为了再利用输出的二进制,用Maya侧的插件,缩短了对应的装载时间。 


  而且, 对于FBX进行转换花费时间的问题,把一个场景的文件进行编集单位的分割,在Luminous的Rumtime侧导入所谓合并的结构。还有,为了解决在FBX的转换时只能使用1个CPU核的问题,把数据细分后可以用多个PC分布处理的对策,所有问题都[某种程度的解决了]。只是花力气的技巧,但是现实的方法。




版本管理使用的Perfoce也是高负荷而笨重化,据说有了一个晚上数据Commit都没结束的事情.


得到了各种教训,不过主干的「Luminous Studio」全部有了对策

 接下来提起的是关于渲染处理最优化的部分。。「Agni's Philosophy」是以前无法考虑的顶点数来绘制的(1个场景1000多万多边形)。但是根据岩﨑先生所说,运行环境是GeForce GTX 680、Intel Core i7-3770K 3.5GHz、32GB内存的PC,好像轻描淡写的说过[繁忙的只是GPU的绘制部分,不怎么使用CPU],特别是对于轻易的处理庞大顶点的GPU顶点计算机能有点让人感动。
  但是,一开始给予数据进行描绘时性能很低,进行了某种程度的优化。这里面,因为要在这个表现上加以修正,所以最后没有做着色器的优化。


场景渲染性能概要


大体上不透明部分(地形等)成了负荷

 岩﨑先生着眼的是[Drawcall 数量的太多]。1个场景显示的模型数量庞大,每个模型又由多个材质构成,最初场景1帧的绘制有3,375次 Drawcall发生。这样GPU Stall(等待绘制处理的状态)很多导致执行低下。于是使用同一个材质进行绘制,用万能材质绘制的对象增加,Drawcall数量剧烈的消减成功(减少了85%)。GPU Stall大幅减少,实现了性能的提升。
  还有一个效果的最优化,一旦把Skining的结果Cache,会在多个Render Pass上做到最佳状态而实现高速化。但是也有场景因为之前计算负荷过多而延迟的部分。对应条件可以进行开关的调整。




有效的Drawcall最优化,红线是优化前,青线是优化后的绘制单位。



Drawcall消减前和消减后的GPU Profile,Stall剧烈的降低了

  最优化也包括细小部分,[非常一般的东西]的最优化工作也一直进行的。特别是游戏开发进行时开发最初没有进行3D模型的顶点消除,而是直接使用视觉工作部门制作的数据。

  
细小部分最优化例子,顶点数据大小的最优化有10%的效果

  在影片开头显示的是,一开始的场景,有卡车从前景到纵深,放眼望去是个巨大的山崖,实际是在那个山顶附近把山切掉一部分制作了3D的寺院模型。

进一步放大,精密制作的有寺院的大门,再放大到门把手上高细节装饰。再放到到构成装置的绳子上,光是这个绳子就使用了9W个顶点

  当说到所谓对于不到1像素的面积使用9W顶点的[把用到预渲染的数据原样拿过来]的做法是超现实的现实,会场是大爆笑。实际虽然是Z Culling后不需要绘制的部分,但要进行在Z Test前的顶点变换处理。但对于这个90MS的时间就完成了,证明了最新GPU的强大能力,岩﨑先生也很兴奋[真的很快,几乎没有做Mesh的最优化]

  但这只限于地形等静止的数据,活动的东西因为有可能成为顶点处理瓶颈需要减少顶点,Tessellator等的使用的对应也成为现实。但是因为无用顶点会影响内存使用量,装载时间,作业效率等,对应次世代水准游戏开发时的主要对策还是要消减顶点数。


  顺便说一下「Agni's Philosophy」面临的转换时间长的问题,本版本的Luminous已经解决了,据说不会再出现同样问题。「Agni's」的项目是在引擎开发一半开始的,是在那时未完成的Luminous分支才面临的问题。
    





  
隐藏在遥远山顶附近的寺院,门把手上的装饰,哪里使用的9W顶点的绳子,大体上不影响绘制性能,现在的GPU是高速的。
支撑「Agni's Philosophy」影像品质的实时Shader技术


Remi Driancourt先生(SE 技术推进部)


Napaporn Metaaphanon先生(同上)

  会议的第2日是[实时图形技术解说]和[Agni's Philosoph]使用的图形渲染技术详细披露。演讲的是技术推进部的Remi Driancourt先生和Napaporn Metaaphanon先生。

  大半部分技术解说是Driancourt先生来推进,不过情报量过于强大, 2个小时的会议不能全部解说,本稿把会议里解说的要素,把重点特别放在角色渲染上来分配字数。

  还有,就是「Agni's Philosophy」渲染品质影像的实时实现的,背景和人物使用的photo real的shading技法。进行没有毛病的线性空间的shading,为了符合场景的氛围,增加适当的色调修正,是从fp16的HDR空间到LDR的Toon Mapping的基本流程


  这上面的背景和其他对象主要使用万能型shader,人物等的重要性高的东西非常复杂的特别Shading技术,实现着向预渲染品质逼近的实时影像。下面看看详细部分。

表现出Photo Real气氛的Global Illumination

  给予场景全体的气氛感的环境光源表现,是使用自己的Global Illumination(GI)技术来制作。这种把各对象的表面光的扩散反射(间接光)加入计算的场景全体照明技法可以得到非常PhotoReal的照明效果,但比普通的实时(照明)消费要高。        因此「Agni's Philosophy」牺牲了动态光源,GI计算结果由内置工具烘培,制作成Light Map化来对应。


线性空间的HDR渲染


关于「Agni's」Global Illumination(GI)


  LightMap的每个纹素,以全方位的光源影响的球谐波函数(SH)的形式来记录,可以很好的对应视点的变化进行表面亮度的变化。这样,虽然光源和物体对象的位置不能动,但地面和墙壁可以根据摄像机的方向清楚的看到再现动态光。一边稳固的维持着包含间接光源的光线信息,一边要烘培有效率的高度静态的数据。


  动态对象的环境照明,是把立体空间分割为格子状,每个地点照到光的方式使用SH的形态来记录(SH Irradiance Volume)。虽然是会大量使用内存的方法,但lighting的结果有着和静态对象做调和的价值,也有能够在动态的模型上应用的优点

  
  用通常lighting和阴影不能表现的,包含了细部凹凸和迂回的暗部表现由Ambient Occlusion (AO)实现。除了为了高品质而使用的预先烘培的AO外,据说还有对应动态场景的Screen Based AO(SSAO),还对于大的动态物体对象的暗部制作特殊的情况,使用称为Object Based AO的技法(能在卡车的车轮周围看到) 


2D SH LightMap。静止物体用的


SH Irradiance Volumes。动态物体对象的光照使用


GI烘培的Surface印象


Screen Based AO(SSAO)



Object Based AO是大型运动物体对象使用,这个场景是卡车轮胎周围。

聪明的加入丰富表现的皮肤Shading

  在「Agni's Philosophy」中,特别要加以注意的是实现的角色渲染机能。用以前的Shader表现力完全不足,所以要准备人物的皮肤,眼球,头发的特殊Shader。再加上post process实现了有说服力的影像。

  
  首先,是人类皮肤表现基础的次级表面散射(Subsurface scattering, SSS)。这是人类皮肤(其实应该是全生物),半透明的层重叠在一起的构造和变换着眼的技法。收到的光6%直接成为反射(specular),还有94%是皮下扩散,根据角质层颜色进行颜色变化再向外部放射。

「Agni's」中是基于进行post effect的 Screen Based的SSS技法来确保可扩展性。还有,对皮下散射的模拟使用的纹素采样, 用Poisson distribution的特殊table(因为能够把旋转后Reference结果做模糊,所以也称为“disk”)进行Reference,通过权重来弥补皮下扩散模拟的信息。 


人体所有透明感的表现挑战


皮下散射的概念


Screen Based SSS的概要


施加采样方法的版本


实现的SSS的管线概念图


Screen Based的处理根据距离有很大的负荷变化。




有无SSS的比较。SSS应用的一部分产生红色,表面变的光滑。


Kelemen SzirmayーKalos的specular


两种的Specluar做混合

  同时为皮肤质感贡献的是Specular的表现。人物用Specular只使用Phong Specular是不足的,采用了基于Kelemen Szirmay-Kalos实现的Specular(BRDF,双向反射率分布函数)的技法。这是每个反射地点的不同都会给反射方向或强度带来变化的Specular处理,能够得到增加了肌肤的细小凹凸影响的Specular效果。

  这里把两种的Specular做混合。一个主要来自是SH Irradiance Volume(GI的环境光)的影像,和Cube Map的影响钝化(译者注:日文原文是钝,英文是dull)混合的Specular,就得到了“干”的质感。另外就是基于Cube Map的强的Specular,这个湿润带有闪亮的质感,由于恰当的组合他们,干的皮肤,油光发亮的皮肤,流汗等丰富多彩的质感都能表现。


一般的Phong高光


「Agni's」的Specular



一部分使用带有Mask的Wet Specular,使得汗和泪的表现成为可能

人物用的AO也被准备了。预先烘培的AO和实时附加的Screen based AO两者被分开使用,与通常的AO不同,是按照AO的level让其发生颜色位移,在暗的部分上稍微加上红色。使用这个,据说暗的部分的皮下扩散效果会倍强调为带有红色,作出了自然的表现。



给予AO的颜色计算少许变化,暗的部分有了若干的红色。



有无AO的影像比较,细小的凹凸部分有张有弛的生成了。


  还有一个,为了人物的肌肤的透明感的表现,实装了Backscatter(背景扩散)的效果。在手指和耳朵的比较薄的部分,背景的光透过,比厚的地方明亮而且可以看见红色。这样,就对象物体厚度情报的光源色颜色反映的加入就实现了。



有无Backscatter的比较,演出了自然的透明感。

  为了给予CG角色[眼力],眼球上也使用了特别的Shader。眼球不是单纯的球体,有厚度的水晶体,这里面有虹彩。如果从侧面看眼球,可以看到由于水晶体的歪曲虹彩的深度不同。为了把这个再现,用bump map表现虹彩的凹陷,parallax mapping表现折射。做出了没有违和感的真实眼球描写


漫反射是用Bump Map表现凹陷


环境光的反射使用 判定用的bump map 来突出效果


Specluar是应用两种bumpmap


合成并最终输出成这个样子





有无parallax mapping的折射表现比较,那边自然是一目了然
头发的Shading也没有疏忽!

  和眼睛一样,也加入了赋予人物印象的头发技术也。首先,作为头发的Geometry使用了2种技法。一个是用和以前一样的基于多边形的头发表现,还有一个是在Nurbs曲线上给与控制的线来模拟毛束,用Tessellation来增加头发的技法

传统手法的B-Hair


基于Nurbs的T-Hair追加了 volume up 

  技术推进里部把前者比作为[香蕉皮]B-Hair,后者是参考的是取自论文的发表者名字称作T-Hair(Tariq-Hair)。B-Hair在Maya上作为通常的Mesh来制作、T-Hair是Nurbs曲线的控制点的集合来制作。控制点像弹簧一样可以进行力学对象的模拟,受到重力或其他对象或则风等矢量场的影响来动作。


  T-Hair的控制点在DirectX 11的Compute Shader里做Smoothing的基础上,使用Tessellator增毛。增毛时给予Tessellator参数可以加上卷曲,歪曲,回旋等,不是直线而是贴上billboard texture的毛发的质量表现也能达到。根据这个,从Agni的的干爽的头发,到开头登场的男性弯曲的胡须,鬣狗风怪物的硬毛等的体毛都可以得到有说服力的表现。



T-Hair可以在召唤等男性角色的胡须还有动物的体毛上使用



Maya的数据是这样构成


Nurbs的控制点是被物理物理控制后再Smoothing,Tessllation增毛,生成billboard texture这样顺序的最终印象。



Tessellator增毛时增加变形,可以柔软的表现不同毛质

  关于头发的Shading,上述的B-Hair和T-Hair两者要看起来很好的渗透是有必要的,是个高难度的问题。「Agni's」中,采用的并实现了Steve Marschner先生所说的,由头发的颜色决定高光,二次高光用复杂要素来近似的方法。



没有specular


追加第一高光


追加第二高光,加入Phase Shift


追加CubeMap的环境反射等灯光

 关于头发形成的影子,使用PCF(Percentage Closer Filtering)Shdow的变形方法。具体的,对应遮蔽物(这个场合是毛发)的距离来衰减影子的浓度。使用Shadowmap专用的几何体来制作阴影以减轻负荷。


对PCF Shadow做了少许定制的Self Shadow技法。

  即使这样做出了那样的影子,「Agni's」中 还应用了复数的Post Process。首先,加入Unsharp Mask来突出阴影边缘,实现了头发和体毛的深度阴影表现

  再加上,关于在边缘部分Jaggies做到醒目的问题,使用由Multi Sampling做出的anti-aliasing(MSAA)、再进行Post process形态的AA(FXAA),还有景深(DOF)组合出了自然的边缘感。光是头发,体毛的表现就有非常丰富的Post Process来应用。


没有影子的印象


Shadow map用的几何体


让shadow稍微有效果


让shadow更加有效果


没有post process


Unsharp Mask 加入


没有AA        


MSAAx8


进一步加上FXAA


完成DOF

一次会议无法区分开的渲染技术

  本会议此外还选择用在衣服上的不同方向性的Specular,Volumetric Fog,瓶子或水滴描写使用的折射Shading,烟或昆虫表现使用的粒子系统等话题,为了控制在会议两个小时内,成了非常快的解说。
  因为本稿到这里字数也用尽了,这里介绍的也只是幻灯片的一部分。讲演者的Driancourt先生要说,光是一个项目的详细解说某种程度上这样就结束了,「Agni's Philosophy」是技术集大成的存在的。确实使之觉得是个的密度很深的技术日程。。

    总结「Luminous Studio」的技术情报不仅是此次开发会议,游戏业界团体CESA主办的CEDEC也被披露了,今后也会更加详细和广泛的提供情报。窥视了次世代游戏图形世界的「Agni's Philosophy」和成为支柱的「Luminous  Studio」,今后也会继续汇集世间的关注了。


各向异性Specular的印象图


【各向异性Specular】


根据角度变化使Specular起效果的情况,等到了上等品质的布料质感



【预渲染和实时渲染的影像比较】


通过之前介绍的Shading技术,实现了与预渲染映像惊人接近的品质的实时映像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值