为什么我们使用CPU进行光线跟踪而不是GPU?

时间:2016-06-25 14:49:27

标签: gpu cpu hardware raytracing rasterizing

在对光栅化和光线追踪进行一些研究之后。我发现没有太多关于CPU如何在互联网上提供光线跟踪的信息。我偶然发现了关于皮克斯的文章,以及他们如何在CPU上预渲染汽车2。这花了他们每帧11.5小时。 GPU是否会以相同的图像质量更快地渲染? http://gizmodo.com/5813587/12500-cpu-cores-were-required-to-render-cars-2 https://www.engadget.com/2014/10/18/disney-big-hero-6/ http://www.firstshowing.net/2009/michael-bay-presents-transformers-2-facts-and-figures/ 干杯, 萨姆

1 个答案:

答案 0 :(得分:82)

我是大型VFX和动画功能工作室的渲染软件架构师之一,拥有专有的渲染器(不是皮克斯,虽然我很久以前就曾经是渲染软件架构师)。

几乎所有高质量的电影渲染(在所有大型工作室,所有主要的渲染器)都只是CPU。出现这种情况的原因有很多。没有特别的顺序,一些非常引人注目的,给你的问题的味道:

  • 只有当所有内容都在内存中时,GPU才会快速运行。最大的GPU卡有12GB左右,它必须保持一切。好吧,我们经常渲染具有30GB几何体的场景,并引用1TB或更多纹理。无法将其加载到GPU内存中,它实际上只有两个数量级太大。所以GPU根本无法处理我们最大(甚至是平均)的场景。 (使用CPU渲染器,我们可以在需要时从磁盘中分页.GPU并不擅长。)

  • 不要相信大肆宣传,使用GPU进行射线追踪并不是对CPU的明显胜利。 GPU非常适合高度连贯的工作(同时对大量数据执行相同的操作)。光线跟踪非常不连贯(每条光线可以朝不同的方向,与不同的物体相交,遮蔽不同的材质,访问不同的纹理),因此这种访问模式会严重降低GPU性能。直到最近,GPU光线跟踪才能与最好的基于CPU的光线跟踪代码相匹配,即使它已经超越它,但它并不足以摒弃所有旧代码和开始新鲜的GPU有毛病脆弱的代码。最大,最昂贵的场景是GPU速度稍快的场景。在简单的场景中快速加快对我们来说并不重要。

  • 如果您在基于CPU的渲染器中有50或100人年的生产强化代码,那么您就不要将其抛弃并重新开始以获得2倍的加速。软件工程的努力,稳定性等等,更重要,成本更高。

  • 同样,如果您的工作室投资于拥有20,000个CPU核心的数据中心,所有这些都是最小,最省电和最节能的外形,那么这也是您的沉重成本投资不要扔掉。用包含顶级GPU的新机器替换它们会大大增加渲染场的成本,而且它们更大并产生更多热量,因此它可能不适合您的建筑物。

  • Amdahl的法律:实际的"呈现"本身只是生成场景的一个阶段,而GPU并没有帮助它。让我们说完全生成并将场景导出到渲染器需要1个小时,然后9个小时到#34;渲染"并且在9个小时内,一个小时正在读取纹理,体积,和来自磁盘的其他数据。因此,在用户体验渲染的总共10小时内(按钮直到最终图像准备就绪),GPU可能加速8小时。因此,即使GPU的速度是CPU的10倍,你也可以从10小时变为1 + 1 + 0.8 =接近3小时。因此,10倍GPU加速仅转换为3倍实际增益。如果GPU比光线追踪的速度快1000,000倍,那么你仍然有1 + 1 +微小的速度,这只是加速的5倍。

但游戏的不同之处是什么?为什么GPU适合游戏但不适合电影?

首先,当你制作游戏时,请记住它必须实时渲染 - 这意味着你最重要的约束是60Hz(或其他)的帧速率,你牺牲质量或功能在必要的地方实现这一点。相比之下,对于电影而言,坚不可摧的约束是让导演和视觉特效总监对他或她想要的质量和外观感到满意,以及你需要多长时间才能获得(在某种程度上)中学。

此外,通过游戏,您可以逐帧渲染,生活在每个用户面前。但是对于电影来说,你实际上是在渲染ONCE,而且送到影院的是一部电影文件 - 所以电影观众永远不会知道或关心每帧花费你10个小时,但他们会注意到它是不是#39看起来不错。再说一次,只要它们看起来很棒,那么花费很长时间的渲染就会受到较少的惩罚。

通过游戏,您不会真正知道要渲染的帧,因为玩家可能会在世界各地漫步,几乎可以在任何地方观看。你不能也不应该试图让它变得完美,你只是希望它一直都很好。但对于一部电影来说,镜头都是手工制作的!每个镜头都有大量的人工时间用于构图,动画,光照和合成,然后你只需渲染一次。想想经济学 - 一旦10天的日历(和工资)进入照明和合成镜头恰到好处,在一小时(甚至一分钟)与一夜之间渲染它的优势相当小,而且不值得任何牺牲质量或可实现的图像复杂性。