-2

如果 OpenGL 可以实现快速(相对)帧速率,因为部分管道由 GPU 处理,那么在没有 GPU 的情况下它会如何执行,即纯粹在软件中完成?会和光线追踪一样的订单速度吗?慢点?

GPU 能否支持部分光线追踪算法?光线追踪能否变得足够快以用于未来的互动场景或游戏?

4

2 回答 2

3

你真的无法以这种方式比较 OpenGL 和光线追踪。OpenGL 是一个光栅绘图API,即它只是将单个点、线和三角形放到屏幕上。没有像场景或连贯的几何对象这样的东西。

即使在软件中实现,像 OpenGL 这样的光栅化器也可以非常快,非常容易。光栅化器的渲染复杂性主要取决于输入几何图形的数量。由于一切都发生在本地(= 一次一个三角形),它也非常适合缓存。

光线追踪是一种全局渲染模型。因此,您需要将整个场景保存在内存中,并且对于投射到场景中的每条光线,理论上它都可以与场景的每个部分进行交互。通常,交互的截止值是预设的,这意味着渲染帧的总复杂度仅取决于采样的数量,即像素渲染。

于 2012-06-06T08:02:20.423 回答
1

对于大多数场景,光线追踪本质上比标准 OpenGL 渲染等基于光栅化的方法需要更多的工作,因此也更慢。

对于某些应用程序,情况正好相反。例如,如果您有大量球体并存储在正确类型的搜索数据结构中,则通过场景发射光线可能比在每个球体顶部绘制视锥体中的所有球体更快其他。

GPU现在确实支持光线追踪算法,而且他们已经这样做了好几年了。您通常必须自己实现这些算法,没有什么能像使用 OpenGL 获得的用于光栅化的预打包算法一样。我确信 nVidia 在他们的 CUDA SDK 中有示例。实时 3D 图形中的许多高端效果都会跟踪一些光线,即使它们不是纯粹的光线跟踪算法。

您可以为在标准 GPU 上实时运行的简单场景编写简单的光线追踪器,而无需太多关于如何优化它的知识。

谷歌有关“实时光线追踪”的科学论文,以获得更先进的方法。看看 nVidia 的 CUDA SDK。也许 AMD 也有例子。

于 2012-06-06T08:27:53.023 回答