【发布时间】:2020-11-01 15:01:46
【问题描述】:
这将是我下一个光线追踪项目中的一个重要设计决策。
我们知道“有效负载”结构用于将数据从最近命中着色器传递到 raygen 着色器。对于递归 PBRT 系统,基本上,我有 2 个选项:
- 用它来存储命中点的射线表面交互信息(无论是 BRDF 还是 BSDF)
- 用它来存储下一条要追踪的光线的信息
第一个选项很直观。射线-表面相互作用有一个通用的表示。最近的着色器将该信息返回给 raygen 着色器,该信息在 raygen 着色器中被统一处理以修改集成颜色并生成下一条光线。这种设计的一个问题是 BSDF 表示在 PBRT 系统中可能很大而且很复杂。对于 VKRay/DXR,我们希望 Payload 尽可能小。
第二个选项将光线-表面交互的评估留给最近命中的着色器。每个最近命中着色器都可以有自己的光线-表面交互表示,这可以非常简单(取决于几何表示)。在这种情况下,Payload 存储评估结果,例如要跟踪的下一条射线的信息。一个可能的问题是,最近命中的着色器是执行流程中的分歧部分,它们的效率会低于 raygen 着色器吗?
你更喜欢哪一个,为什么?
【问题讨论】:
标签: graphics shader vulkan raytracing