您的位置:>资讯中心>游戏趣闻>

游戏特效为什么做不到像电影特效里的那样真实

   一句话:「计算成本不一样。」

  在《Real-Time Rendering, Third Edition (豆瓣)》(2008)的第19.1节谈论到动画电影和游戏在渲染上的一些比较,例如《美食总动员 (豆瓣)》(2007)中:

  使用的机器群集大概有3100个核,每个可使用16GB内存

  平均每帧花费 6.5个CPU小时(更正前误写为小时),复杂的场景要花上数十小时

电影特效
电影特效

  对于游戏来说,基本要求是30FPS,即约0.033秒渲染一帧。那么如果想达到2007年动画电影的水平,即从6.5小时加速至0.033秒,简单计算比例的话大约要该CPU(更正前误写为集群)的70万倍的计算能力。

  在21世纪初因游戏而延生的GPU,其运算量比CPU要高,单以浮点计算量来说,这篇博文作了一张比较图:

比较图
比较图

  2007年的Xeon大概是每核10 GFLOPS,现在的GTX Titan是4500 GFLOPS,假设现在的GPU计算能力是2007年CPU的450倍,而GPU继续类似摩尔定律,以每年翻倍的速度提升,大概在16年后,即2030年,实时游戏渲染的计算量能达到1997年动画电影渲染的计算量。

  当然,这个问题还有许多因素,我尝试以乐观和悲观去分类。

  乐观因素:

  实时渲染的算法与离线渲染的算法不同,同样的品质下可以用更少的计算量

  游戏中一些计算可以通过预计算减少每帧重复运算(其实离线渲染也有……)

  人们不单纯追求真实性,也需要抽象性及艺术表现

  悲观因素

  除了计算量,其他方面可能追不上(内存频宽、总綫频宽)

  游戏需要低延迟(low latency)而不单纯是高吞吐量(high throughput),实时渲染的问题比上述的计算量问题更难

  游戏一般希望最坏的情况下达30 FPS而不是平均情况

  但总终而言,根据以上分析,同年份的动画渲染及游戏渲染可能有相差数十万倍的性能。除非离线渲染在未来已达到人类视觉的极限(与现实无异)而不需要再提升,游戏渲染难以在同年到达动画渲染的水平。

  基于计算量的差异,目前动画和游戏在渲染上的区别:

  动画的模型非常精细,并且大多使用镶嵌(tessellation)技术提高曲面圆滑程度。游戏通常使用较小的模型。

  离线渲染通常采用光线追踪(ray tracing)、路径追踪(path tracing)等渲染方式。游戏通常使用基于光栅化(rasterization)方式。

  游戏渲染采取更大幅度的近似化(approximation)。

  另外,游戏渲染含有一些和动画渲染不同的需求:

  摄像机可以有限度由玩家操控,场景要更完整。动画有时候只需要在镜头内的场境有足够细节便可以。

  玩家角色和非玩家角色(NPC)的动画都需要互动,并考虑不同动作之间的过度,制作方式更复杂。

  一些游戏支持日夜、天气等变化,光照不能简单地预计算。

  由於游戏的不确定性,许多参数需要自动生成(例如Tone Mapping),这需要额外的计算。

  简单地讲,游戏渲染有较多动态部分,动画渲染有较多静态部分。

  作为游戏开发者,也仅是希望在有限的资源内做到最好。最后发两张截图比较游戏渲染的进展。

  2000年的《American McGee\'s_Alice》
2000年的《American McGee\'s_Alice》
  2011年的《Alice: Madness Returns》
2011年的《Alice: Madness Returns》

  除了模型精细程度之外,好像没有一个回答提到最关键的一点——电影场景的渲染和游戏场景的渲染用的根本不是同样的算法!

  电影场景的渲染,需要那么强的计算能力,是因为用的光线追踪(ray-tracing)算法。简单来讲,就是把场景里的每一个发光物体分割成若干发光片,每个发光片引出无数条光线,这些光线或者直射,或者在环境的物体上经过反射、折射、透射等各种光学变换在虚拟摄影机上产生光斑、颜色、强度都会被一一记录下来。若干次光学变换后,才认为该光线产生的影响可以忽略。

  所有这样的发光片对场景的发光效果的叠加,成为最终渲染的场景图象。递归地来讲,每次都是把上次的发光片分成更细的碎片,同时把反射、折射、透射的光学变换在更多的面上做细,直到前后两次产生的图象差值小于某个给定阈值,才算递归结束。详细的解释可以参照wiki的光线跟踪部分。

  很明显,这样的算法纯粹是仿真自然界光线成像的原理,所以只要建模足够精细,产生的渲染结果会非常真实——因为现实中光线就是这么产生图象的。当然,这样的算法需要强大的计算能力,模型越复杂,图象越精细,计算能力的要求就越高。实际上美国有很多这样的公司叫做渲染农场(直译render farm),他们的服务器就是为这样高度并行的计算优化,承接各种电影特效的渲染计算。在云计算这个词出现之前,这种云计算平台早就存在了。你以为皮克斯(Pixar)只是动画工作室吗?错!它首先是一个超级计算机(甚至出租他们的计算服务renderman)。精美的渲染是非常非常昂贵的,需要砸重金进去的,这就是为什么国内特效惨不忍睹的原因之一。

  游戏场景的渲染,当然不可能有那么强的计算能力供玩家随意调配,所以用的是各种近似算法。显卡的计算能力都是为这些近似算法服务的。显然这些近似算法也只能做到一定程度的近似,特别是各种复杂的光线场景,都是预先贴好反射、计算好散射的效果,在纹理贴图上就已经考虑进去。当然,这种效果看起来就是不那么真实。

[编辑:亚硫酸不存在]

游戏特效游戏问答游戏特效电影特效

上一篇:玩到蛋疼誓不罢休!各平台硬核游戏大赏 下一篇:在现实生活中玩《俄罗斯方块》的游戏达人

随便看看