可以通过在不同机器上计算不同像素的颜色来并行执行光线追踪图像。但是,这仍然要求每台机器都可以访问要渲染的整个场景。有没有一种方法可以细分场景,以便不同的机器可以访问场景的不同部分,但仍然可以正确计算其分配的像素?

我无法想象一种通常可以实现的场景。有什么特殊的情况可以实现吗?

#1 楼

是的,这样的事情是可能的。这样做有几种不同的方法,但是基本思想是将场景分成多个块,并将这些块分配给不同的机器。然后,每台机器都在其分配的块中局部跟踪光线。

,棘手的问题当然是当光线离开一个块时,在这种情况下,机器需要同步并交换跨越局部块边界的光线。今年EGSR的最新论文《分布式随机核渐进光子贴图》描述了如何有效地进行渐进光子贴图,尽管其他光传输方法也可能可行。

尽管可以进行这种分布式射线跟踪,但它肯定不是最有效的并行化形式,而且不均匀的照明直接转化为工作负载的不均匀分布。只有当场景的大小远远超过一台机器的内存时,它才真正有用。

#2 楼

在一般情况下,不会。反射,折射和阴影都可以生成可以到达任何地方的辅助射线,从而需要整个场景。

在没有辅助射线的特殊渲染情况下,您可以快速生成远景缓冲区(本质上是加速度层次结构到屏幕的映射),以确定每个像素可能可见的对象,并相应地分布场景的一部分。