gpt4 book ai didi

performance - 提高光线追踪器的性能

转载 作者:行者123 更新时间:2023-12-03 13:24:19 32 4
gpt4 key购买 nike

我正在 D ( http://dsource.org/projects/stacy ) 中编写一个相对简单的光线跟踪器/路径跟踪器,但即使进行了全面优化,每条光线仍然需要数千个处理器周期。我还能做些什么来加快速度吗?更一般地说,你知道光线追踪的良好优化/更快的方法吗?

编辑:这就是我已经在做的。

  • 代码已经高度并行运行
  • 临时数据以缓存高效的方式构建,并与 16b
  • 对齐。
  • 屏幕分为 32x32 块
  • 目标阵列的排列方式使得图块中的所有后续像素在内存中都是顺序的
  • 执行基本的场景图优化
  • 对象的常见组合(如盒子中的平面-平面 CSG)被预先优化的对象替换
  • 能够利用 GDC 的自动矢量化支持的矢量结构
  • 通过惰性求值找到射线的后续命中;这可以防止对 CSG 进行不必要的计算
  • 三角形既不支持也不优先。仅限普通基元,以及 CSG 操作和基本 Material 属性
  • 支持边界
  • 最佳答案

    光线追踪器速度的典型一阶改进是某种空间分区方案。仅根据您的项目大纲页面,您似乎还没有这样做。

    可能最常用的方法是八叉树,但最好的方法很可能是方法的组合(例如空间分区树和邮箱之类的东西)。边界框/球体测试是一种快速廉价且讨厌的方法,但您应该注意两件事:1)它们在许多情况下没有多大帮助 2)如果您的对象已经是简单的基元,您将不会获得太多(甚至可能会输)。您可以更轻松地(比八叉树)实现用于空间分区的规则网格,但它仅适用于有点均匀分布的场景(就表面位置而言)

    在很大程度上取决于您表示的对象的复杂性、您的内部设计(即您是否允许局部变换、对象的引用副本、隐式曲面等),以及您想要达到的准确度。如果您正在编写具有隐式表面的全局照明算法,则权衡可能与您为网格对象或其他任何内容编写基本光线跟踪器时有所不同。我没有详细查看您的设计,因此我不确定您是否已经考虑过上述内容(如果有的话)。

    与任何性能优化过程一样,您将必须首先进行测量以找到您实际花费时间的地方,然后改进事情(根据偏好在算法上,然后根据需要编写代码)

    关于performance - 提高光线追踪器的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/777997/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com