Math 射线追踪计算

Math 射线追踪计算,math,graphics,raytracing,Math,Graphics,Raytracing,我试图做一些涉及光线追踪的计算,但有点困惑。假设我有一个n×n的图像,包含n个几何图元、l个光源和k×k超采样。在最坏的情况下,我要计算多少光线交点?如果我添加了深度为d的反射/折射,会怎么样 您必须为图像的每个n x n像素发射k x k射线。对于这些光线中的每一条,您都必须进行碰撞测试,以一种非常简单且低效的方式,这将转换为N次比较(每个比较取决于基本体的复杂性)。现在,如果这些光线中的任何一条击中镜面反射或半透明曲面,则必须分割光线并递归调用。但是,这一次不进行超级采样,因此只在反射/折射

我试图做一些涉及光线追踪的计算,但有点困惑。假设我有一个n×n的图像,包含n个几何图元、l个光源和k×k超采样。在最坏的情况下,我要计算多少光线交点?如果我添加了深度为d的反射/折射,会怎么样

您必须为图像的每个n x n像素发射k x k射线。对于这些光线中的每一条,您都必须进行碰撞测试,以一种非常简单且低效的方式,这将转换为N次比较(每个比较取决于基本体的复杂性)。现在,如果这些光线中的任何一条击中镜面反射或半透明曲面,则必须分割光线并递归调用。但是,这一次不进行超级采样,因此只在反射/折射方向发送一条光线。对于深度d,您将发送该数量的额外光线,每个递归调用一条

总的来说,k^2xn^2xd

这不包括相交计算,相交计算不会添加更多光线,但会增加很多复杂性

然而,有许多简化

  • 自适应多重采样,减少k^2因子
  • 像素插值,减少n^2因子
  • 使用一些空间分区结构,如BSP和/或八叉树进行冲突测试
  • 使用一些启发式方法来减少递归

    • 但这并不是一个完整的答案。。。。
      请参阅本文:您可能可以使用经过修改的计数代码,在执行跟踪时自动将这些统计信息提供给您:P

      很抱歉,但是您想要什么样的示例?这个问题没有提到实现,所以我不知道应该提供什么样的示例。如果是关于我提到的优化,那可能是另一个问题的主题。无论如何,非常感谢你的投票。虽然这不是一个确切的答案,但它确实给出了一个非常有趣的例子,以一种奇怪和有趣的方式。我自己发现LINQ的这种用法非常令人印象深刻。如果你认为它令人印象深刻,请看我的JavaScript版本。认真地说;谢谢你的好话,先生,不知何故,我觉得我不配听到这些话,但是我会非常温顺地接受它们。非常感谢