问题标签 [optix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
3d - 平行于相机视图的区域光
我正在尝试渲染图像,并且我知道相机的坐标和观察对象。我想在相机后面创建一个区域光(平面),但与相机视图平行。
我想我应该使用相机的右和上向量。但我不知道该怎么做。让我向您展示一些代码示例:
然后我从github复制了一些代码来生成区域光:
使用上面的 v1 和 v2,我只能在天花板上创建区域光。
这是createParallelogram
功能:
我想知道如何设置 v1 和 v2 以便平面图可以平行于相机视图以照亮对象(观察方向)。先感谢您!!
更新1:
根据@Blindman67 所说,我尝试设置createParallelogram((eye - look_dir)* .1, right * 2.0, newup * 0.5)
后发现图片很暗,我将其更改为createParallelogram( -(eye - look_dir)* .1, right * 2.0, newup * 0.5)
,现在我的区域光正对着物体[图1],并且更亮了。但是,当我设置 时createParallelogram((eye - look_dir)* .7, right * 2.0, newup * 0.5)
,我可以在渲染图像中看到区域光(矩形)。我不想看到这个形状。你知道我应该如何控制这个灯的大小或位置吗?谢谢!
c++ - VS 19 的 CMake 中标准输出目录的变量
当谈到 CMake 时,我绝对是个菜鸟,并且在过去的三天里一直被困在这个问题上。我正在开发的 OptiX 应用程序读取从 .cu 文件编译的 .ptx 文件。我正在努力将文件编译到与 .exe 相同的目录中。
我没有设置 CMake 文件,所以我正在尝试调整 SDK 示例。.exe get 编译成 bin/release/ 或 bin/debug 没有问题。
我希望根据 VS 中的构建模式将 .ptx 编译为 bin/release/ptx 或 bin/debug/ptx。是否有一个变量可以让我访问 bin/release bin/debug 路径?我能做的最好的事情是 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} 让我得到 bin/ 文件夹。(如果有帮助,根CMakeLists.txt的 pastebin ,第 252 行:
谢谢你的帮助,我希望我能把自己说清楚!
c++ - optix 6.0.0 示例代码中的运行时异常
下载optix6.0.0 sdk
并编译包含的示例项目后,我在运行任何示例项目(例如optixHello
,optixWhitted
)时遇到运行时异常,并显示错误消息:
我的环境是:vs2015
, cuda11.0
.
代码对于(cmake、compile、runtime)来说工作得很好ooptix sdk 7.0.0
,并且大多数预编译的示例项目工作得很好。.exe
sdk 6.0.0
raytracing - 有没有办法遍历 OptiX 7 加速结构来找到最接近给定点的几何图形?
我知道这不是 OptiX 的主要目标,但是当光线行进(球体行进)标记距离场时它是相关的,所以我想我会尝试。我最初为此创建了自己的 BVH,但我希望从最近的所有光线追踪工作和 RTX 加速中受益。
我假设对 OptiX 7 API 有一些基本的了解。
我最初的尝试涉及将optixTrace
光线方向设置为,{0, 0, 0}
但这只会触发光线原点位于 AABB 内部的形状的交叉点(有意义)。{inf, inf, inf}
然后,我设置似乎触发每个基元的相交调用的光线方向,无论 AABB 距离或报告tMax
值如何。
我尝试了其他一些光线方向和tMax
/tMin
值的组合,我考虑了各种OPTIX_RAY_FLAGS
但似乎没有任何效果。
理想情况下,最好只查询tMax
距离射线原点不远的边界框。这显然是与 ray-aabb 交叉点不同的检查,但我很好奇是否可能有一些我遗漏的 API 标志/掩码/功能允许这样做。直接访问加速结构层次结构在这里也可以提供帮助,但我在编程指南中没有看到任何相关内容。
c++ - 如何设置 Visual Studio 2017 以正确识别 Optix 项目中的 Cuda 代码
我尝试进入 Optix 项目,但在识别 Visual Studio 2017 中的 Cuda 代码时遇到问题。我可以构建和执行代码(甚至是 .cu 文件中的代码),但 .cu 文件中的变量和函数, 被标记为无法识别(红色)。有可能解决这个问题吗?
cuda - CUDA 和其他 OptiX 组件中固有的射线三角形相交
有没有什么方法可以在不使用OptiX的情况下直接在CUDA中使用硬件加速的射线三角相交?这类似于如何在 CUDA 中直接使用张量核进行小矩阵乘法,请参阅https://developer.nvidia.com/blog/programming-tensor-cores-的 CUDA 9.0 中对张量核的编程访问部分cuda-9/ . 似乎这至少应该可以使用内联 PTX 以不受支持的方式实现(可能通过 OptiX 二进制文件的一些逆向工程)。
更一般地说,OptiX 的任何子组件是否可以在不使用完整管道的情况下使用?就像 OptiX 可以只用于生成单独使用的加速度数据结构吗?或者可以使用 RT 内核来遍历不是由 Optix 从设备代码中生成的自定义 BVH?
nvidia - 正确创建 Optix 7.1 TLAS 实例加速结构
我正在尝试弄清楚如何正确构建 TLAS。使用 OptiX 7.1 附带的示例和Ingo Wald 的 Optix 7 示例,从三角形开始(只是保存几何的 BLAS),它工作正常(将 SDK 的三角形示例移动到 Wald 的示例框架)。接下来,我介绍了一个带有一个实例(即之前的 BLAS)的 TLAS,并在着色器中使用了该 TLAS,但我没有得到任何结果。我做错了什么?
我没有使用上面函数的返回值,而是将它提供给下面的 TLAS 创建函数,并在着色器中使用它的输出句柄:
作为参考着色器代码(当 OptixTraversableHandle 来自上面的第一个函数时,它工作得很好:
}
c++ - 在获取 OptiX 的 CUDA 上下文时未定义对“cuCtxGetCurrent”的引用
我正在尝试学习如何在我的 C++ 项目中实现 OptiX。第一步是获取当前的 CUDA 上下文cuCtxGetCurrent(&some_CUcontext_variable)
,但是我收到一个编译时错误,说我对cuCtxGetCurrent
.
这是我所拥有的:
- 我正在关注此 repo中的代码以了解 OptiX,并且我在示例 2 中(您可以在其中获得 CUDA 上下文)。
- 在我的代码 (
main.cpp
) 中,我包含了cuda_runtime.h
、device_launch_parameters.h
、optix.h
和optix_stubs.h
,但在编译时我仍然收到错误消息。 - 有趣的是,我的 IDE,JetBrains 的 CLion,没有显示任何未定义的参考错误/警告内联。错误仅在我编译时出现。
- 在我的
CMakeLists.txt
,我曾经find_package(CUDAToolkit REQUIRED)
得到 CUDA。然后我用来target_link_libraries{ ... CUDA::cudart}
链接CUDA。
我相信这个错误与链接器有关,所以我假设我在我的 CMakeLists 中遗漏了一些东西,但我不知道是什么。请让我知道如何解决此问题!
提前感谢您的帮助!
更新 #2:已解决
正是这样的时刻让我大吃一惊:我所要做的就是将cuda
我的目标链接库放入其中。不是-lcuda
或CUDA::cuda
,只是cuda
。不知何故,它链接在驱动程序中,现在看起来正在编译。
[旧,但仅供参考] 更新 #1:这是我的CMakeLists.txt
.
抱歉,我的原始帖子中缺少代码。我试图避免粘贴大块任意代码。
cuda - Cuda/Optix 是否提供硬件加速的最小/最大光线投射?
我想知道是否可以在 Cuda 或 Optix 中加速计算沿 3D 体积中从一个点投射到另一个点的线/射线的最小值和最大值。
如果没有,Nvidia GPU 上是否有任何特殊硬件可以加速此功能(特别是在 Volta GPU 或 Tesla K80 上)?