我是gamedev和Blender的新手,有些事情我无法动摇:
在Blender中,单个渲染(即使使用更高级的Cycles渲染器)在我的计算机上最多可能需要45秒钟。但是显然,在游戏中,您可以拥有惊人的图形,因此渲染显然是连续发生的,每秒实时发生多次。
因此,我还想知道,Blender的渲染看起来有多“慢”,以及游戏引擎如何实现实时(或接近实时)渲染时,断开连接是什么。
我是gamedev和Blender的新手,有些事情我无法动摇:
在Blender中,单个渲染(即使使用更高级的Cycles渲染器)在我的计算机上最多可能需要45秒钟。但是显然,在游戏中,您可以拥有惊人的图形,因此渲染显然是连续发生的,每秒实时发生多次。
因此,我还想知道,Blender的渲染看起来有多“慢”,以及游戏引擎如何实现实时(或接近实时)渲染时,断开连接是什么。
Answers:
实时渲染,甚至是现代的实时渲染,都是技巧,捷径,黑客和逼近的抓包。
以阴影为例。
我们仍然没有一个完全准确且健壮的机制来渲染任意数量的灯光和任意复杂的对象的实时阴影。我们在阴影贴图技术上确实有多种变体,但是它们都遭受着阴影贴图的众所周知的问题,甚至这些“修复”实际上只是变通和权衡的集合(根据经验,如果您会在任何东西中看到术语“深度偏差”或“多边形偏移”,但这并不是一种可靠的技术)。
实时渲染器使用的技术的另一个示例是预先计算。如果某些东西(例如照明)太慢而无法实时计算(并且这可能取决于您使用的照明系统),我们可以对其进行预先计算并将其存储出来,那么我们可以实时使用预先计算的数据时间来提高性能,通常以牺牲动态效果为代价。这是直接的内存与计算的折衷:内存通常便宜而充足,而计算通常不是,因此我们消耗额外的内存以换取节省的计算资源。
另一方面,脱机渲染器和建模工具往往更关注正确性和质量。另外,由于他们正在使用动态变化的几何体(例如正在构建的模型),因此它们必须经常重新计算事物,而实时渲染器将使用不具有此要求的最终版本。
当前的答案在解释所涉及的一般问题方面做得非常好,但是我觉得它错过了一个重要的技术细节:Blender的“ Cycles”渲染引擎与大多数游戏使用的引擎是不同的引擎。
通常,通过迭代场景中的所有多边形并分别绘制它们来渲染游戏。这是通过通过虚拟摄像机“投影”多边形坐标以生成平面图像来完成的。将该技术用于游戏的原因是围绕此技术设计了现代硬件,并且可以实时完成相对较高的细节水平。出于兴趣,这也是Blender之前的渲染引擎采用的技术,然后Blender Foundation放弃了旧引擎,转而使用Cycles引擎。
另一方面,循环就是所谓的光线追踪引擎。它无需查看多边形并单独渲染它们,而是将虚拟光线投射到场景中(最终图像中的每个像素一个),将光束从多个表面反射出去,然后使用该数据确定像素的颜色应该。光线追踪是一种非常昂贵的计算技术,这使其在实时渲染中不切实际,但由于其提供了更多级别的细节和逼真度,因此用于渲染图像和视频。
请注意,为简洁起见,我对射线追踪和多边形渲染的简短描述已被简化。如果您想了解更多有关这些技术的信息,我建议您阅读一本深入的教程或书,因为我怀疑有很多人写的解释比我想得要好。
另请注意,3D渲染涉及多种技术,某些游戏实际上出于某些目的使用了光线追踪的变体。