我正在使用D语言编写一个相对简单的光线跟踪器/路径跟踪器(http://dsource.org/projects/stacy),即使进行了全面优化,仍需要每个光线数千个处理器周期。有没有其他方法可以加速它?更一般地说,您是否知道用于光线跟踪的良好优化/更快方法?
编辑:这是我已经做过的。
- 代码已经高度并行化运行
- 临时数据以高效缓存的方式结构化,并对齐到16b
- 屏幕分成32x32个瓷砖
- 目标数组的排列方式使得瓷砖中所有后续像素在内存中都是连续的
- 执行基本场景图优化
- 替换了常见的对象组合(例如盒子中的平面-平面CSG)与预优化的对象
- 向量结构能够利用GDC的自动向量化支持
- 通过惰性计算来找到射线上的后续命中;这可以防止不必要的CSG计算
- 只支持普通原始形状以及CSG操作和基本材质属性,不支持三角形
- 支持边界