【西川善司】PLAYSTATION4图形讲座(后篇) [

西川善司为了3D游戏粉丝的[PlayStation 4]的图形讲座(后篇)

翻译:Trace
校对:千里马肝


PS4时代的游戏图形的关键是新搭载的技术!

2月21日正式发表(当地时间)

虽然在前篇中看了关于PS4硬件规格和图形性能的基本部分,后篇中,要试着聚焦在关于在PS3的GPU上没有的新时代机能到底能实现出怎样的游戏图形这部分。 

PS4时代的游戏图形会变成这样(3)---革新的图形管线

PS4的GPU是基于DirectX 11.1时代SM5.0架构。PS3的GPU是DirectX 9.0时代SM3.0架构,之间进化了两个时代,在这两代中,GPU的渲染管线有了很大的进化。渲染管线的进化本身,让PS4时代游戏图形也直接进化了。

PS3时代的图形管线中,有进行顶点单位的坐标变换,顶点单位的照明(lighting)和着色(Shading),纹理地址运算的[顶点着色器 Vertex Shader],还有像素单位的照明以及着色的[像素着色器 Pixel Shader]这两种Shader。

[PS3,XBOX360时代的图形管线]

PS3,XBOX360所代表的DirectX 9/SM3.0时代图形管线。


在PS4时代的图形管线中,新增设了控制多边形(primitive)增减,显示和消失的[Geometry Shader],以及实现多边形(primitive)分割和移动的[Tessellation Stage],还有能把GPU在图形渲染以外使用的ComputeShader(GPGPU)。顺便说一句,任天堂的Wii U因为采用的是DirectX 10.1时代的RADEON HD 4000系列GPU,也实装了[Geometry Shader](虽然也对应GPGPU,但那个潜力稍微有限制) 。

Wii U时代的图形管线

Wii U所代表的DirectX 10/SM4.0时代的图形管线。

PS4时代的图形管线

PS4(和大概要出的下一代XBOX)代表的DirectX 11/SM5.0时代的图形管线。

Geometry Shader,Tessellation Stage,ComputeShader这些新增加的着色器,在PC世界里已经实用化很久了,但对应到游戏上,只是保留在局部使用的程度,可以说是[one point relief的使用]。还有目前为止的游戏开发技术,主要还是以活用主流游戏平台PS3和Xbox360的DirectX 9时代SM3.0架构的图形管线作为主轴来设计的。

在PS4时代(还有下一代XBOX)以后,当然还会有新增加的着色器,所以游戏开发技术的进化应该会加速。现在已经开始倡导新世代的游戏引擎,在各游戏引擎上,实践着这些新着色器的积极活用。

PS4时代的游戏图形会变成这样(4)---GPU粒子系统超过100万粒子的表现

能够控制多边形增减,出现和消失的Geometry Shader,在新时代引擎中,为全新概念的粒子系统的构筑做了很大的贡献。

表现烟,水,火焰等无形态物体时使用的粒子,其实只是贴上纹理的方型多边形。当然,虽然很多情况是对每一个都施加特殊的着色,结果起决定性的还是资源数量。在PS3时代,经常描画出数千到数万的粒子,但如果处理压倒性数量的粒子的运动,并且要全部进行绘制,这个负荷的程度就是就算是外行人也很容易联想到。

如果是水、火、烟之类的,必须要把流体物理模拟通过数万个粒子来实现。在以前的渲染管线上,这类运动和更新的计算是放在CPU上实现的,之后还要把绘制命令发送到GPU上。

但在PS4上使用了Geometry Shader,粒子系统不需要CPU协助,几乎只用GPU就可以实现了。模拟的部分,在后述的ComputeShader上做实现(也有利用Pixel Shader的情况)。这样,和CPU运作完全异步的大量粒子都可以进行控制了。把这样只用GPU实现的粒子系统称为[GPU粒子系统]。

[Agni's Philosophy]里控制10万只萤火虫的行动
http://v.youku.com/v_show/id_XNDA5MTE2MDQw.html

史克威尔艾尼克斯的[Agni's Philosophy]的一个场景。展示了GPU粒子系统,只用GPU实现了10万只萤火虫的动作控制和绘制。萤火虫是拥有的几何构造的3D模型,Luminous Studio的GPU粒子系统,可以认为是同一个模型的使用不同参数驱动进行复数绘制机能[Geometry Instance]的对应。

史克威尔艾尼克斯的Luminous Studio,Epic Games的Unreal Engine4,都实现了GPU粒子系统.可以说他们能实现超出10W个复杂模拟粒子或超过100W个简单粒子的运动控制和绘制功能。

[Unreal Engine4]的100万个粒子控制

Epic Games的Unreal Engine4的DEMO中,可以看到拥有力场的100万个粒子分别运动的样子。

[Unreal Engine4的技术演示Elemental 2013]
http://v.youku.com/v_show/id_XNDEwMDA3NDEy.html

 

通过使用Tessellation Stage,实现了高品质的全新表现。

[Tessellation Stage]在PS4时代的游戏图形中是最为被期待使用的要素。

Tessellation Stage,实际上是由Hull Shader,Tessellator Shader,Domain Shader三个着色器构成。

Tessellation Stage,可以描述为通过可编程的方式把多边形进行分割和移动变形的机能,Hull Shader负责对这个的分割做规划,Tessellator Shader实际根据这个规划实行对变形的分割,Domain Shader负责让Tessellator Shader分割的多边形做移动变形的工作。

[Tessellation Stage]

Tessellation Stage的各个着色器的示意图。

关于Tessellation Stage的使用方法已经做了各种讨论,首先想到的最直接的用法,就是把LOD(Level of Detail)全部交给GPU处理。

LOD,就是把离视点很近,有特写的3D模型用大量多边形来表现,离视点远的,绘制面积很小的3D模型使用少量的多边形来表现,为了实现这个,在游戏引擎上(CPU的部分)做切换的结构。

如果只用高模,离视点远的3D模型,每个多边形都要对同一像素做多次绘制,给GPU增加了无谓的负荷。而且在内存里预先存放着低模和高模两套模型,又会变得很冗长,进行高模和低模切换的处理还需要在游戏引擎(CPU)上进行,还有在切换的瞬间,这个3D模型也有可能在用户面前暴露出膨胀或萎缩的popping现象。        

如果活用Tessellation Stage,可以根据视点的距离,自动(可编程的)进行多边形分割,可以无缝的实现高模化。能够把LOD系统委托给GPU,因为是无缝的高模化,所以也不会引起popping现象。

但是,这种Tessellation Stage的LOD的使用,一开始说是[可以],而实际上游戏制作方变的不是很积极,这其中有几个理由。

在这种Tessellation Stage的LOD使用的实践中,如果要按预想的在运行时无缝的分割多边形,那就必须在3D建模时就进行Tessellation控制的设定和加入。但是,这种建模方法,和PS3、XBOX360的DirectX 9/SM 3.0时代的3D建模制作手法完全的不同,现在游戏平台的主流还是PS3和XBOX360,不能随意的切换成以Tessellation Stage为前提的内容(Content)管线,这就是理由之一。

可是,今后的PS4时代,还有下一代XBOX都应该搭载了DirectX 11时代的GPU,以Tessellation Stage为前提,构筑起内容管线也应该没问题了。

那么,至今Tessellation Stage没有被活用的另一个理由是专利问题。

Catmull-Clark
高精度高品质的Tessellation方法中有个被称作Catmull-Clark的方法。Catmull-Clark,很多的3D CG软件(DCC工具)都支持,说起来是Tessellation在CG业界的标准方法。Catmull-Clark,也有个有名的轻量级的版本,那就把Catmull-Clark曲面用Bezier patch近似的Approximating Catmull-Clark(ACC)方法。

[Geri's Game]

[Geri's Game]的图片。本作成为了采用Catmull-Clark方法的皮克斯第一个CG动画作品。

广泛掌握Catmull-Clark方法相关专利的是制作CG电影[玩具总动员]等著名的皮克斯工作室。在电影作品中,包含使用Catmull-Clark方法的影像没有任何问题,但如果是游戏,实时运行时包含Catmull-Clark方法的程序代码会和专利抵触。

不过,皮克斯在2012年夏天,宣布这个的自由许可,包括游戏业界都可以自由的使用。作为使用实时高速动作的Catmull-Clark方法的程序代码进行开发的开源项目[OpenSubdiv]也公布了。Catmull-Clark方法,终于可以利用到游戏上了。

开源项目[OpenSubdiv]

皮克斯把Catmull-Clark方法的相关专利自由许可化。为了把Catmull-Clark在各种平台上实现,开源项目[OpenSubdiv]也开始了。

使用Approximating Catmull-Clark(ACC)的Tessellation方法,考虑到让艺术家参与到Tessellation Stage内容管线的革新的游戏引擎,在这次的PS4发布会上公开了,那就是CAPCOM的新游戏引擎[Panta Rhei]。

CAPCOM的Panta Rhei,是作为和MT Framework完全不同系统的游戏引擎被介绍的,根据相关人员介绍,这是个全新的引擎,作为完全重新构建(Full Scratch Build)的新设计引擎来开始的,可以实现Tessellation Stage的完全活用。

根据相关人员介绍,是一个完全新设计的引擎。作为完全从头开始的新设计的引擎,从开发开始,也许就把曲面细分阶段作到活用而实现的。

CAPCOM的新世代游戏引擎[Panta Rhei]

在PS4发布会上发表的CAPCOM的新时代游戏引擎[Panta Rhei],可以说是把Tessellation Stage在深层活用的游戏引擎。以[Panta Rhei]为基础的游戏项目[deep down]也明确了正在开发。

[deep down -working title -Teaser Trailer]

[deep down](临时名称)的屏幕截图

[失落星球2]里的选择

2010年,CAPCOM在开发[失落星球2] PC版时,决定使用Tessellation Stage。但是,因为3D模型资源要与PS3和XBOX 360共享,最后决定放弃采用Catmull-Clark的方法来实现。

[Panta Rhei上采用了ACC法吗?]

负责Tessellation Stage的最终阶段的Domain Shader,虽然担当了让被分割的多边形模型变形移动的处理,但这个位移量可以用纹理(Displaced Texture)来给予。例如,对于人形角色的基本形状,给出怪物形状的位移纹理就能作出怪物的模型,给予普通人类形状的位移纹理也能作出人类模型。或者在Domain Shader里从驱动人类形状的位移纹理到怪物形状纹理逐渐变化,就能实现人类到怪物的变形表现了。

[Displaced Subdivision Surfaces]

在PS4时代的角色模型设计中,要准备粗糙和细节的表现的两个位移纹理。在运行时,根据视点的距离,实时的用Tessellation来实现必要详细度的高模化(曲面化),而且在位移纹理上,要加入或抠出细节,就可以得到最终品质的画面。

[Tessellation]

对同一个粗糙模型,实现了不同的Tessellation,使用不同的位移纹理给予细节,那么也可以作出不同角色的模型表现。

[SAMARITAN DEMO]里的变形表现

Epic Games的[SAMARITAN DEMO]中,有效的使用了Tessellation Stage的Domain Shader,从人类到岩石超人,实现了实时的变形表现。这样的表现,在PS4时代的游戏图形中大概会流行吧。

还有,Tessellation Stage在毛发表现上的使用也值得期待。Tessellation Stage不光是多边形,也能够处理线段,所以用线段把给出的头发按需要的精度做分割,也可以做到曲线化。

使用Tessellation Stage处理线段的特别模式[Isoline Tessellation]也被期待能够在头发的表现上使用。Isoline Tessellation,是在给出的线段上隔开一定距离空间后,生成出复制了那个线段的等值线(Isoline)的模式,应用这个能够一根一根的增加头发。

使用了这个Tessellation Stage的头发表现,也应用在了NVIDIA的DirectX 11时代技术的DEMO以及史克威尔艾尼克斯以Luminous Studio为基础的Agni’s Philosophy上。

[DirectX 11时代]的Tessellation 

DirectX 11时代GPU上能够利用到的Tessellation模式(pattern) 。

从被输入的线段生成等值线的Isoline Tessellation,估计能够利用在头发的表现上。

[Agni’s Philosophy]的毛发处理

[Agni’s Philosophy]中头发的渲染流程。

 

PS4时代的游戏图形会变成这样(5)---代替CELL处理器被活用的[GPGPU]的新概念

正如前篇中解说的一样,PS4不再搭载CELL处理器。当初PS3登场时,虽然CELL处理器被评价为[非常的难以理解],搭载了8个(其中一个不工作)超高速128位SIMD型RISC处理器SPE(Synergistic Processor Element)的使用,之后的几年里被不停得推进着。在最近的PS3游戏中,已经被相当深度的使用,技术上变得成熟起来。

前期对SPE的主要使用,是在物理模拟、动画控制(动作控制)和AI(人工智能)等方面,要对大量的数据应用高度的逻辑,就像是从大量数据中导出高度的逻辑一样,对于[数据并行处理]的实现做了很大的贡献。顺便说一句,把PS3的GPU的最大弱点[顶点着色器能力的不足],由SPE来承担上的使用,就是现在基础中的基础。

[CELL处理器的SPE替代品已经准备好了]的结论或许粗暴了一点,但为了把SPE擅长的数据并行处理在PS4上实现,最有效的就是GPGPU了(General Purpose GPU)。

GPGPU,是让本来实现图形渲染的处理器GPU,进行通用目的(General Purpose)演算的全新概念。也许有人想过[这样的GPGPU,如此荒唐的东西,能在游戏上应用吗?],但GPGPU在计算机科学的世界中,已经是非常流行的技术。顺便说一下,在2012年末的“世界上最快的超级计算机”排名的TOP500中,美国橡树岭国家实验室的超级电脑[TITAN],超过了日本理化学研究所的基于CPU的超级计算机[京]成为了第一位,[TITAN]就是基于GPGPU的超级计算机。

不过很凄惨的是,CELL处理器正如前篇中描述的一样,进化的路线图被关闭了,强烈的感受到要从计算机科学世界的舞台上退出了。SCE舍弃了CELL处理器,改为给PS4配备了现在的数据并行处理的主流GPGPU,某种意义上也许可以给出[英明的决断]这样的评价。

在笔者的采访中,虽然可以判断PS4的游戏开发环境是基于Windows的,但关于GPGPU的平台还没有获得明确的信息。但是,通过常识性的思考,微软的DirectX不太可能,可能是基于OpenGL 4.3的某种独特的扩展版。
*注:笔者从SCE里认识的人那里采访得到消息,OpenGL和DirectX都没有使用,而是独立的方法,和DirectX比较接近。还有,关于GPGPU,现在还没有准备出像OpenCL那样的库。

这样的话,[ComputeShader]以及[OpenCL]是能够作为GPGPU平台使用的。

ComputeShader和OpenCL,这两个的不同之处是有各自的使用目的。ComputeShader,可以用在和图形的配合上。前述的GPU粒子系统,还有伴随碰撞判定的物理模拟等,都可以说是面向GPGPU平台的实践。

而OpenCL和图形没有关系,更加面向通用目的的GPGPU平台,把大量数据按特定逻辑导出的[数据挖掘]处理,或作为[AI]使用,作为更低一层的处理,在[图像识别]和[声音识别]那样的信号处理等方面被认为是有用的。

在这次的PS4发布会上,HAVOK物理模拟中间件的全局物理模拟技术DEMO,在PS4开发机上实时运行的样子被公开了,这确实是GPGPU所擅长的领域。

[HAVOK的物理模拟]

这次的PS4发表会中公开的HAVOK的全局物理模拟。当然,是由GPGPU运算的。

虽然没有确认,但同样在这次的PS4发布会上,可以看到公开的PS4新作[KNACK],也积极的活用了GPGPU。[KNACK]是一款主人公把几百几千个物体裹在身上,让那些东西实时的变形,陆续的放出攻击和防御的动作游戏,无数的物体每一个的碰撞判定,运动的控制,使用GPGPU来处理的可能性非常高。

[KNACK]
  

从SCE日本工作室亲自制作的[KNACK]截图。主角把无数的3D物体裹在身上战斗,对无数的3D物体使用了全局的物理模拟。

[Knack Announce Trailer(PS4)
http://v.youku.com/v_show/id_XNTE3MDMwODA4.html

 

PS4时代的游戏图形会变成这样(7)---[环境的识别]和[知性],还有把这些相互结合所产生的新表现。

虽然GPGPU被真正的利用起来了,物理模拟、AI和动画控制的各个技术在游戏场景中更加得进化了。不过,在次世代游戏(PS4时代游戏)中,开发者在研究开发中开始挑战的新课题是如何将这些相互结合的有效机制。因为这是非常复杂的逻辑,也可以说是引擎和中间件应该实现的课题。

例如,在PS3时代的游戏中,敌人可以根据基本的AI进行路径探索,采取包围玩家之类的行为。然后,敌人发动攻击时,攻击的手法可能是比较差的随机选择。稍微好一点的方法,也只是识别玩家的状态来给出伤害。还有,那个动作只是播放预先设定好的攻击动画。当然,播放这个攻击动作时,不能和周围的墙壁和树木,敌人的友军等发生重叠在一起的情况。

对于这些,今后要实现物理模拟、AI和动画控制的相互结合时,状况会稍微有些改变。

首先,敌人在采取包围玩家时,不一定会选择最短的路线。而是可以识别这个游戏的场景。如果有遮蔽物,要一边隐蔽一边移动,如果有多个相同势力的人还会相互配合,作出一个人从左侧走着靠近,另一个人从右侧快速接近的行动选择。如果被追赶的玩家周围有墙壁,大概会作出把他追赶到墙角的行为。

还有,那些敌人角色,不光能识别玩家的状态,还可以识别周围的环境,作出最合适的攻击动作。当然敌人攻击我方时不会出现攻击动作打入到墙壁或树木里的情况。玩家方面,在游戏系统中,作为反击动作,即使只有横斩和纵斩,也要可以判断贴着墙的手拿着剑是不能挥动的,这时能够表现出自动把武器换到另外一只手上进行攻击的动作。

关于动画控制,在PS4时代中也实现了进化。

根据动作捕获,准备好[向上挥剑]和[向下挥剑]的动作,非常短的动作部件, PS3时代中,如果连续发动这个动作,只是进行了快速的连续播放,或是进行了动作混合的连续动作。

但是,在PS4时代中,在上面应用了基于人体解剖学的人体物理模拟,会根据实际人体,取得动作和动作之间的活动,同时考虑到这个时刻各个部分上的物理法则之后自动的生成动作。

比如,根据手中剑的重量,自动的对手臂的活动来调整姿势,如果那时的手臂的轨迹发生了变化,不只是手臂,还会根据人体解剖学,进行把腰的转动自发并动态加入的自动动作生成。

[关于动作的公开演示]

不同的两个动作连续播放时,在两个动作之间插入了程序化生成的动作的技术演示。本图引自史克威尔艾尼克斯的[Luminous Studio]开发组的其中一人:向井智彦的论文。

[高尔夫球的正常示范]

[同样是从向井智彦先生的论文而来。高尔夫球的演示原形]

[高尔夫球杆重量模拟时的挥杆]

高尔夫球杆重量增加时的挥杆,这个是在原有高尔夫挥杆的基础上,增加了挥舞很重的球杆的模拟调节后的动作。这样的技术,称为[力学的Retargeting]技术,实现了即使操作对象物体的重量改变,也可以加上对原动作的重心位置维持上的控制。

这样的技术被称作程序化动画(procedure animation),full body IK(Inverse Kinematics)技术,是被预计为次世代游戏中最为进化的技术领域。还有在PS3时代中,也有非同一般的IK技术,比如移动人体部位的一部分,其他连接的部分也移动到自然形态的技术。但是full body IK技术,是即使没有关联的其他部位,也能够基于人的经验和知性的行为冲动,生成让其全体一起运动的动作。

[Euphoria]的演示影像
视频请看:
http://v.youku.com/v_show/id_XNDQzOTMyNzUy.html 
http://v.youku.com/v_show/id_XNDQzOTI3NDQ0.html 
http://v.youku.com/v_show/id_XNDQzOTI3OTQ4.html 

让人感觉到智能的Natural Motion公司的对应full body IK的程序化人体动画中间件[Euphoria]的演示影像。

总结起来,在PS4时代中,游戏图形的[运动]方面,会有加重[环境的识别]和[智能]的印象。虽然也有人会联想到机器人的研究,这个理解可以说是相当的敏锐。最近,研究机器人领域的人进入游戏业界中的事已经不算新奇了。

[二进制领域(BINARY DOMAIN)]程序化的双腿步行
视频请看:http://v.youku.com/v_show/id_XMjg1MzA2MjEy.html 

结合AI和动画技术所作出的动作游戏,在PS3和XBOX360时代也存在。那就是世嘉的二进制领域(BINARY DOMAIN)]。这个是游戏里的一个BOSS,蜘蛛型的多脚机器人,8条腿被玩家破坏后,当只剩下相邻的两条腿时,BOSS会站起来用两条腿行走。但是,对于这个最为吃惊的,可以说是开发者自己。这个蜘蛛型机器人,为了支撑很重的身体重心,自己会主动地站起来。这个两腿步行并不是在预想中的,不过最后在完成版中保留了下来。

结束语
对于PS4的规格喜欢或不喜欢的人,都有各自的想法,但做为笔者个人,对于时隔7年的游戏平台革新还是非常喜悦的。

对于云游戏的崛起,社交游戏的席卷等,现在游戏的环境,和7年前PS3登场时虽然已是相当大的不同,但游戏这个媒体今后应该不会消失吧。本连载是以游戏图形作为主题,PS4的登场,在环境上确实的进化了,未来应该会让我们更饱眼福。在这之后会出现的应该是微软的次世代主机XBOX,对于它的动向也敬请期待。

posted @ 2013-04-01 14:11  千里马肝  阅读(2523)  评论(1编辑  收藏  举报