【问题标题】:Realtime raytracing -- Sult (Loonies, 4k Intro)实时光线追踪——Sult (Loonies, 4k Intro)
【发布时间】:2011-10-03 19:52:35
【问题描述】:

我想知道 Sult(链接:http://www.youtube.com/watch?v=FWmv1ykGzis)的效果是如何实现的。这个介绍怎么可能进行实时光线追踪?

【问题讨论】:

    标签: 3d raytracing demoscene


    【解决方案1】:

    如前所述,甚至还有实现实时光线追踪的软件渲染演示,例如 Heaven7Nature Suxx。我记得当时在奔腾 MMX 上以 200Mhz 的速度以 320*200 的分辨率运行它们。这些通过将屏幕细分为图块并对图块角落中的像素进行光线跟踪,并且只有在细分差异很大的值并在 4*4 图块或 2*2 图块等中进行更多计算时,这些方法才能如此快速地工作。否则,在两者之间插入值。

    如今,使用着色器代码在 GPU 上优化光线追踪变得更加容易,并且可以在高清分辨率下以良好的帧速率对许多球体进行每像素光线追踪。 Sult 只是使用另一种称为 raymarching 的技术,但本质上它是另一种光线追踪方式(取决于您如何定义术语),具有优点和缺点,例如它非常适合小尺寸的介绍和特定的扭曲对象以及空间中对象的重复使用传统的光线追踪无法轻松或快速地实现这些目标。

    但是根据您最初问题的措辞,我想您可能还会想,为什么这些人会这样做,而我们却没有在主流中看到它?我们都从游戏行业的开发者那里听说,光线追踪是未来的东西,在游戏中还无法实现。那么,为什么一些来自演示场景的爱好者可以让它成为可能,但行业资深人士说还不是时候呢?从技术上讲,我们已经可以在 50 个球体上进行光线追踪,或者对同一个球体重复进行 raymarch 并使其扭曲和扭曲。但是,游戏正在使用数十万或数百万个多边形。对照数百万个多边形检查单条射线是完全不同的故事。我知道,有一些方法,比如空间的 kd-tree 细分,只检查局部多边形很少的光线,但即使使用强大的 GPU,这仍然是一个非常困难的问题。除了免费拥有完美的阴影和反射(在多边形引擎中你必须用繁琐的方式来实现它)之外,也许没有什么可以得到的,而且会失去很多。而演示场景介绍大多是在具有抽象几何形状、隐式函数或体素数据的场景中进行光线追踪,这些对于现实生活中的 3D 几何场景和视频游戏角色来说都是非常抽象的。而且大部分场景都很小,在开放的沙盒游戏中不容易工作。

    因此,虽然这些介绍确实实现了实时光线追踪,而且我们自 2000 年以来甚至在 CPU 上都做到了,但对于多边形引擎在现实世界中仍然更加高效和有用的游戏开发来说,这并不实用。因此,您会听到专业人士声称硬件尚未准备好进行光线追踪(在他们的百万多边形场景中),但看到一些业余爱好者在 GPU 上甚至在 4k 尺寸上进行此操作。

    【讨论】:

      【解决方案2】:

      实际上,这个产品是使用类似于光线追踪的非常好的算法编写的......光线行进有符号距离场。

      这是我使用相同技术制作的 4k 演示: http://www.youtube.com/watch?v=t7anicyRI3w

      这里有关于算法的精彩介绍: http://www.iquilezles.org/www/material/nvscene2008/rwwtt.pdf

      【讨论】:

        【解决方案3】:

        可以是简单的反射立方体映射。尤其是在快速移动的场景中,很难找到立方体贴图而不是光线追踪的不准确之处。然而,介绍中的实时光线追踪并非闻所未闻:有一个名为“天堂 7”的 64k 介绍

        http://www.pouet.net/prod.php?which=5

        还有一篇开发者关于技术细节的文章:

        http://www.exceed.hu/h7/subsample.htm

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-07
          • 1970-01-01
          • 2016-01-08
          • 2019-11-29
          • 2011-12-08
          相关资源
          最近更新 更多