Optix如何获得ray与场景的所有交点

为了获得沿光线的所有命中,最简单的方法是在每个nearest_hit之后继续射线,直到你不再击中任何东西。在OptiX中意味着到达未命中程序,在OptiX Prime中意味着没有获得命中结果。

单独使用OptiX any_hit程序来收集光线上的所有命中点将不适用于使用像SBVH或TRBVH这样的拆分的边界体积层次结构,其中基元可以在较小的BVH中出现多次。这将导致重复的命中。

在OptiX Prime中,any_hit结果本身也不起作用,因为你无法像在OptiX中那样通过调用any_hit程序中的rtIgnoreIntersection()来进行正确的遍历延续。

第一种方法:

针对发射网格中的每条射线:
 - 设置主光线原点和方向,
 - 跟踪它以获得nearest_hit结果,
 - 将下一个射线原点设置为该命中点坐标,
 - 保持光线方向沿直线收集所有交叉点,
 - 用小epsilon偏移ray.t_min以防止自相交。
 - 重复上述过程,直到没有最近相交。

这适用于OptiX或OptiX Prime以及任何BVH加速结构。

如果预先知道预期交叉点的数量,您也可以通过一次启动one launch执行此操作。这里的限制是能够在一次扫描中存储沿每条射线的所有交叉点。根据需要存储的交叉点的数量,限制将是一次存储所有这些结果的GPU RAM的数量(每条光线的命中点阵列和结束标记,例如计数或负交叉距离)。如果您事先不知道交叉点的最大数量或数据太大而无法存储,请忘记此方法并执行上述迭代方法。

https://devtalk.nvidia.com/default/topic/930666/optix/radiation-physics-problems/post/4857707/#4857707

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Optix SDK 下载 4.1 . 1 Optix 4 现在 自由 使用 在 任何 应用 , 包括 商业 和 教育 应用 。 为 下载 你 必须 NVIDIA 这些 显影剂 - 。 通过 点击 "Agree & Download"按钮 , 确认 您 已 阅读 并 同意 遵守 软件 开发者 套件 、 采样 工具 和 许可 协议 用于 封装 的 SDK 使用 。 下载 将 开始 后 立即 点击 "Agree & Download"按钮 下方 。 Windows 7 和 更 高 、 64 位 同意 & 下载 Linux 接受 & 下载 Mac OSX 10.9 或 更 高 接受 & 下载 版本 说明 ( 615kB , PDF ) 版本 说明 Optix NVIDIA ® ™ 4.1 . 1 ( 2017 年 8 月 ) 欢迎 来到 的 第一个 重大 更新 的 Optix 4 SDK 。 Optix 4 是 发展 中 的 一个 重要 里程碑 Optix , 完全 重新 实现 的 核心 组件 , 包括 一个 全新 的 基于 LLVM 编译 流水线 。 重新 设计 内部 已经 酝酿 了 几年 , 人们 对 更好 的 总体 性能 、 多 GPU 缩放 , 调试 和 配置 、 以及 其他 特性 。 4 版本 保持 向 后 兼容 现有 的 Optix 应用 提供 的 API , 易于 使用 Optix 是 已知 的 。 Optix 4 现在 自由 使用 在 任何 应用 中 , 它 是 私人 或 商业 性质 , 而 无需 任何 额外 许可 或 批文 。 4.1 版本 是 一个 维护 版本 , 提供 性能 和 鲁棒性 的 改进 以及 最近 支持 CUDA 和 Visual Studio 版本 。 改进 4.1 . 1 主机 存储器 使用量 减少 场景 的 几何 形状 的 大量 实例 。 固定 一 臭虫 , 其 原始 索引 偏移 被 忽略 , 如果 一个 仅 包含 单个 geometrygroup geometryinstance 。 把 一 臭虫 固定 在 有 Optix 素数 的 最小 有效 位 的 浮点数 可以 命中 距离 确定性 的 三角形 中 的 一些 场景 , 根据 其 位置 在 BVH 中 。 所有 样品 使用 Optix CUDA SDK 主要 通过 默认 上下文 。 固定 的 场景 时 许多 材料 共享 geometryinstances 。 固定 内存 泄漏 在 GL Interop 破坏 缓冲器 修正 当 CUDA 计算 高速缓存 有时 没有 踢 中 , 导致 长 的 编译 时间 。 架构 更新 安装程序 以 在 安装 时 避免 安全 问题 的 SDK 。 改进 到 4.1 . 0 支持 CUDA 8.0 支持 Visual Studio 2015 年 建立 自己 的 SDK 各种 错误 修复 , 包括 更 坚固 的 节点 处理 复杂 图形 的 变化 在 某些 情况 下 , 内核 性能 更好 Optix 头 现在 nvrtc 兼容 , 与 运输 带 运行 时 编译 库 ( CUDA 阅读 更 多 ) 改进 4.0 . 2 新 的 EULA , 现在 允许 不 受约束 的 在 商业 应用 中 使用 Optix &bra; 黄金 &ket; Optix 和 几个 固定 的 问题 , 导致 使用 时 故障 trbvh 大 场面 修正 了 一个 问题 , 可能 导致 不必要 的 呼叫 重建 或 BVH 时 rtcontextsetentrypointcount rtcontextsetraytypecount 但 不 改变 表达式 的 值 修正 了 一个 问题 , 可能 会 导致 编译 错误 时 使用 的 不同 原子 类型 的 单个 节目 降低 的 存储器 要求 trbvh 当 使用 多个 改进 鲁棒性 Optix 上下文 &bra; 黄金 &ket; 修正 了 一些 在 内存不足 的 情况 下 RT _ 返回 ERROR _ UNKNOWN _ ERROR 代替 RTP 存储器 分配 失败 _ _ _ 改进 4.0 . 1 固定 “ 无效 设备 ” 错误 , 当 运行 在 某些 情况 下 , 在 GPU 帕斯卡 修正 了 某些 修改 可以 触发 断言 节点 图 修正 了 CPU 回退 的 trbvh 修正 了 一个 问题 , 可能 导致 损坏 输出 当 使用 3D 展开 当 使用 固定 的 性能 问题 的 实例 主要 对 Windows Optix 改进 编译 时 启用 Optix 例外 各种 改进 错误 消息 格式 的 半 添加 处理 rtugetsizeforrtfo

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值