我见过关于平铺光线追踪的提法,但在Google上找不到更多。

谁能解释它的作用和原理?

#1 楼

平铺光线追踪是加快渲染速度的一种方法。您不必以像素为单位在整个图像上逐行渲染,而是以2D组(例如32x32瓦片)进行渲染。由于相邻的光线倾向于相交相同的对象,因此可以提高CPU级别的缓存命中率。

以较小的比例,使用2x2级别的平铺可让您使用SSE / AVX / etc计算四个只需一条CPU指令即可发出光线,进一步加快处理速度。

评论


$ \ begingroup $
您是否碰巧链接到有关平铺射线追踪的更多信息?我猜图块可以通过多种方式提供帮助,人们利用这些好处的方式可能也有所不同。尝试掌握一些信息,以更深入地了解现有技术。
$ \ endgroup $
–艾伦·沃尔夫(Alan Wolfe)
15年8月13日在3:39

$ \ begingroup $
@AlanWolfe,没有什么真正有用的。 2x2拼贴是我几年前阅读的一篇论文,现在找不到了,而较大的拼贴只是网页上的提及。
$ \ endgroup $
–马克
15年8月13日在5:20

#2 楼

我相信这是您批处理并立即做一个像素块或“平铺”的地方。

这意味着一次计算多个像素的最终颜色。想象一下,将您的像素窗口分成包含像素的正方形,通常约为每平方2x2像素。然后只需对它们进行处理即可。

这会由于许多不同的原因而导致速度提高,具体取决于您的实现和硬件。如果可以的话,请查看Ingo Wald的有关实时光线追踪的博士学位论文,他使用处理器中的AVX(高级矢量扩展)之类的东西对批处理进行了大量引用,以提高速度。当您为一定数量的相似像素计算颜色时,这些功能可以提高速度。一切都很酷,绝对值得研究,您可以在这里阅读更多内容:https://en.wikipedia.org/wiki/Advanced_Vector_Extensions

基本上,您可以使用浮点矢量表示相似像素的相似数据并一次进行全部相同的计算,从而节省了周期。 Picture Bart Simpson会在黑板上一次写出相同的单词,而不是在Simpsons开口处逐行写出:)

此外,在进行实时光线追踪时,您可能正在使用图形卡和通过总线发送所有数据是一个很大的瓶颈。由于总线开销,您不希望将所有数据发送到卡上以仅计算一个像素的值-因此,在准备下一个块时,您希望发送适量的数据以进行检查。

所以,至少对我来说,“平铺”射线追踪只是“分批”射线追踪。

我希望这会有所帮助。