光线跟踪计算

rap*_*ash 2 math graphics raytracing

我正在尝试做一些涉及光线追踪的计算,但有点困惑.假设我有一个n-by-n图像,包含N个几何图元,l个光源和kxk超级采样.在最坏的情况下,我会计算多少个光线交叉点?如果我在深度d的反射/折射中加入怎么办?

Ale*_*iad 7

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

所以,总计:k ^ 2 xn ^ 2 x d.

这不计算交叉点计算,它不会添加任何光线,但会增加很多复杂性.

但是,有许多简化.

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