• [转载翻译][重新整理]西川善司的”METAL GEAR SOLID 4”图形讲座(5)


     

    http://www.huanimei.com/logs/94179985.html

    利用场景深度值来制作的特效处理

    近年来的3D游戏图形中,灵活应用PIXEL SHADER的特效有很多,它们都会对渲染完成后的场景做出一些屏幕处理,就是在后期处理中描画特效的手法慢慢变的很典型。

    在这其中中被频繁利用的是场景的DEPTHBUFFER(Z BUFFER,深度BUFFER)的内容。在MGS4中当然也不会不用这样的技术,灵活应用DEPTH BUFFER,可以实现多种特效处理。之前提到的景深模拟,雾化特效等就是利用这个关键的深度值来实现的。

    在KILLZONE2中采用的Deferred Rendering的技术,在最近的PC游戏中预先渲染Z BUFFER的技术等,和深度BUFFER相关的有多种技术,但在MGS4中,我们利用的是场景渲染完成后的DEPTH BUFFER。

    但是,DEPTHBUFFER作为贴图直接使用的话ACCESS消耗会很大。原因在于深度值是以非线性的格式来存储的。而且由于在MGS4中采用的浮点格式的DEPTH BUFFER,比起整数DEPTH BUFFER,进入消耗会更大。

    MGS4中,在多数的特效SHADER中都能看到利用DEPTH值的地方,我们会把它变换到易于操作的,并用于后期处理的浮点格式的线性值W值贴图。

    把浮点数深度值变换到线性W值后生成的贴图,在之后各种SHADER中都得到了利用。

    W值的读入代码。PACK和UNPACK命令是为了在OPENGLE下把浮点数值存储到整数TEXTURE下进行操作的GEFORCE系列(RSX中也包含)的扩展命令 
    利用这个W值贴图来表现的特效,除了之前提到的模拟景深,雾化特效之外,还有SOFTPARTICLE等效果。SOFT PARTICLE就是指爆炸等粒子和背景或者角色等其他模型的多边形交叉在一起时,减少在交叉处产生明显的交界线的处理。

    具体的做法是在描画粒子的像素时,和其他物体的深度值进行比较,深度值越接近就越接近交叉线,通过判断这个程度值来增加描画时的透明度。这就是在次世代3D游戏图形中经常见到的技术。 

    SOFT PARTICLE OFF。烟尘粒子和墙体的交叉线能明显看到

    SOFT PARTICLE ON。烟尘粒子和墙体的交叉线消失了

    此外,在爆炸时附着在场景中的烧焦痕迹等动态附着的DECAL效果看上去就像是投影的贴图方式,实际上是利用W值贴图,把粒子贴到其他物体上的实现方法。

    单纯贴上去的话,是无视被贴物的物体形状直接贴上去的,但如果把粒子的深度和场景的深度(W值)进行比较的话,深度差在一定程度以上的情况下,该像素就不会进行处理,这样就能根据被DECAL物体的形状来正确地裁剪出DECAL区域来帖上DECAL。

    DECAL PARTICLE直接贴在物体上。贴到墙体的轮廓之外了。

    和场景的深度值(W值)进行比较,差值在一定值以上的情况下,就丢弃该PIXEL,能得到正确地根据物体的形状贴在物体上的结果

    我们扩展这个想法后实现的效果就是SNAKE穿着的皮肤装的特殊技能。能够描画出手榴弹的爆炸预测图。在着弹点表示出爆炸范围的指示器像被投射到场景中那样进行描画,是这种独特的视觉表现。

    令人印象深刻的爆炸预测的视觉效果

    这就是使用在着弹点贴上粒子的那种实现方法,但不同于之前的裁剪区域手法,而是会参照这个粒子在每个像素上的深度值(W值),把这个值通过视角信息,逆算到3D世界坐标下,在这个3D坐标位置下进行像素描画来实现。使用这个方法,就好象把图像投射到场景中那样,这样又同时正好能得到投射贴图的效果。

    像这样描画出的爆炸预测的视觉效果,实际上是

    把一个DECAL PARTICLE通过活用PIXEL SHADER,贴到画面上。利用深度值比较获得的特殊效果的一个例子


    MGS4CELL处理器是如何灵活应用的。物理模拟是怎么样的?

    MGS4是作为PS3平台的独占游戏软件,其引人注目的就是地方也就是PS3的CELL处理器的灵活应用了。

    CELL处理器是把一颗PowerPC970的双核主处理器 PPE(Power Processor Element)和七基础(八基中的一基被Disabled)的协同处理单元Synergistic Processor Element(简称SPE)的128bit的SIMD型向量RISC处理器集成到一个内核中的非对称型多处理器。因为PPE的PERFORMANCE并不是特别的高,所以说要发挥CELL处理器的能力,就要彻底灵活应用SPE。

    高部说到,在MGS4中SPE在声音处理,描画处理,碰撞判定,物理模拟,动画(动作)处理等方面都得到了灵活地应用。在声音处理方面主要是SPE在做专门处理,除此以外空下来的SPE就会灵活动态地进行其他处理。

    和其他公司的其他PS3游戏TITLE比较的话,在MGS4中SPE的工作效率可能是很高的。此外,在MGS4中SPE使用方法,大致分成2个大类。

    一类是SPE会为了某个具体的目的集中地进行应用的类型。这种类例如声音处理,描画处理,物理模拟等,在程序运行时的专用时段上集中地启动SPE来进行处理。

    另一类是,,把多种模块中发出的JOB动态地分配给SPE来进行处理的类型。和碰撞判定,动画处理相当。例如,敌人角色处理的模块,会把碰撞判定,动画处理先发给SPE来处理。在计算结果返回前会进行别的处理工作。这就是为了屏蔽处理延迟的问题,经常使用的常规手段。

    MGS4本来就是作为PS3独占TITLE来进行开发的,所以从开发初期就定下了应用SPE的结构,并进行了各种各样的实验。

    高部说到由于MGS4没有考虑对应多平台,所以采用大量应用SPE的设计。因此,从最初就针对CELL处理器,做了SPE的设计。采用的方针就是如果有负荷很重的处理的话,就用SPE的实现方法来降低负荷。MGS4其实并没有在多平台下就不能运行的技术壁垒,所以最后只考虑在PS3上运行反而没有很多麻烦。如果在别的平台上做的话,反而比较麻烦。这都是多亏了SPE的帮助。

    另外,从各个工作室的反应来看,CELL处理器的SPE的活用难度大 ,SONY公开了用于彻底应用SPE的库“Playstation EDGE”,MGS4应该是很有效地利用了这个库吧。还有,关于Playstation Edge的详细内容,可以参考本连载的”Playstation Edge篇”。

    物理模拟引擎在MGS4中采用的是完全自主开发的基于解析法的物理引擎。

    高部说到在MGS4中,使用到了数据压缩的库。但是在Playstation Edge中,使用SPE来处理顶点SHADER之类效果的功能是没有被活用到的。这是利用公司内部开发的相同类型的功能库来实现的。例如,根据动作捕捉数据来变化角色姿势的动作处理中的SKINNING处理。(顶点混合),MGS4团队使用先前独立开发应用的SPE GEOMETRY SYSYTEM来进行。

    高部说到“Playstation Edge”出现后由于在我们开发“MGS4“取得重大开发突破,所以我们马上开发出了相似的功能。但是,之前的SPE GEOMETRY SYSTEM的设计中关于顶点格式的压缩,也参考了Edge Geometry.

    物理模拟引擎,MGS4中是采用本公司自主开发的基于解析法的物理模拟引擎。解析法是把计算相关物体间的约束力的运动方程转化成每帧间的微分方程来求解的方法。在这方面也使用了SPE来进行。基于解析法的物理模拟在物体相互交错时,由于抵抗力产生的运动振动,或者说会不自然地跳变的错误。我们需要花功夫来避免这个问题, 
    最后,我们回顾这次制作MGS4项目的一些体会.

    高部谈到当时想要实现的技术,就是动态阴影生成的CASCADE SHADOW MAP了。一张SHADOW MAP就让我们感受到了MGS4能做到的界限。此外,在MGS4中只有镜头模糊的效果,如果能实现物体动态模糊的话就更好了。即使只用在角色细微的动作上,也能使效果看上去效果更好。这作为课题,在降低开发消耗后可以进行研究。在PS3等次世代的开发中,数据制作的开销,也就是美术人员的工作量是很大的。因此,要更多地考虑如何加入程序化的技术方法来作为对数据制作的技术支持。但反过来说,我个人认为更应先重视实时渲染中程序化的技术应用。


         MGS4会改变PS3的命运吗?

    这次我们取材MGS4,有2点感受。第一点,被称为开发难度高的PS3平台的游戏TITLE,和MGS4一样以PS3专用为大前提,必须进行十分的基础研究,在SCE的支持援助下,如果最开始就针对在PS3中实现来开发的话,就如高部所说的那样,开发并不是很困难。这番话应该给用PS3来进行游戏TITLE开发的工作室很多信心了吧。

    本来说PS3的开发难度高是指 以多平台为前提来进行游戏TITLE开发的,开发制作团队提出了大量这方面的意见。在PS3之前的,以现有的XBOX360,PC为前提来进行开发,是以XBOX360,PC为基准来设计引擎的,所以会有在PS3中实现相同的表现会很难的推断,但实际上对于在PS3并不是如人所说的那种开发极端困难的硬件。

    比起说PS3自身开发很难,不如说针对不同硬件来进行的最优化的软件的移植工作很难。其实,还不如说是从很久以前就一直延续到现在的一个定论。只是,能够像MGS4那样只针对PS3来进行特别开发的也就只有小岛开发组那样特殊的开发工作室了。这个现状倒是留下了一个课题。

    第二点,MGS4作为小岛工作组第一个PS3的作品,把PS3作为非常现实的一个游戏机平台来进行开发这一点。先不谈在开发实现中困难的课题,背负着引入并实现众多的先进技术,至少首先在把用户能够体验的一个整体游戏体验从PS2时代提升到了PS3的水准上来说开发是成功。在MGS4中,有多种SHADER EFFECT,选择1024X768的分辨率,也能有足够XX感,总体上成功地表现出超出了机能能表现的真实的丰满的映像。感觉这是特别有象征性的一点。

    PS3本机在发售当初就定下的关键词“FULL HD 1920X1080像素”被认为非常必要,感觉PS3有点孤傲。在本连载中的”RSX的128BIT、8ROP结构中提到这是很难实现的,为了实现有丰富视觉效果的游戏,未必一定要固守1920X1080全高清影像的标准。MGS4这个游戏,还是坚守了这个设计。MGS4因此可以说是挑战了PS3的3D图像表现力的极限,并且在众多游戏中表现出了最高的水准

    应该说MGS4从此就成为了PS3 游戏图形图像的一个标志性的里程碑了吧。

  • 相关阅读:
    基于项目中遇到的技术问题,谈谈SharedPreferences的使用的注意问题
    mongodb数据库从库同步主库维护js脚本
    MongoDB数据库日志备份压缩脚本
    mongodb数据库磁盘碎片整理。
    mongodb表字段处理生成域名字段
    根据当前进程号,获取进程下线程数目
    mongodb mapreduce示例
    MongoDB数据库库级锁研究分析
    mongodb库表信息监控脚本
    利用JAVA设计一个可视化日历
  • 原文地址:https://www.cnblogs.com/oiramario/p/2061596.html
Copyright © 2020-2023  润新知