问题标签 [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.

0 投票
1 回答
432 浏览

c++ - 使用 Qt Creator 编译 Optix - 链接问题

我正在尝试使用 Qt-Creator 编译从 Nvidia OptiX SDK 提供的一些示例项目。

我编写了 .pro 文件,并在使用 Qt Creator 编译 Optix 的帮助下根据自己的需要对其进行了编辑!

我有完全相同的 .pro 文件,除了我编辑了 CUDA 和 OptiX 的方向,但我无法完全编译,因为(小片段但所有错误在这里都有相同的原因)

这可能源于NVIDIA-OptiX-SDK-X.X.X-linux64/SDK/sutil.

但是,如果我注释掉该行optix.CONFIG += no_link,则从 .cu 文件生成的 .ptx 文件将链接到目标文件。因此 .ptx 文件被视为目标文件,Qt 给了我语法错误。

所以总而言之,optix.CONFIG += no_link给出未定义的引用,如果没有这一行,编译器会尝试链接 .ptx 文件并返回语法错误

Qt 有没有办法在链接步骤中只忽略某种类型的文件,或者我在其他地方有错误?在这两种情况下,构建步骤都会生成正确的 .ptx 文件(与给定的 SDK 预编译样本相比)和一个 .o 文件。

提前致谢!

编辑:没关系我自己想出来的。错误已经告诉我我错过了链接额外的库。这就是为什么我必须前进:

0 投票
1 回答
150 浏览

qt - 在 QGLWidget 中显示 OptiX sample6

我想在 QGLWidget 中显示 OptixSDK 的 sample6。

我已经阅读了Nvidia OptiX 论坛中的主题,但我没有继续前进,因为不幸的是我不知道如何覆盖paintGL() 方法。

起初我只是尝试读取 sample6 的输出缓冲区并将其保存在 QImage 中

以及在Nvidia OptiX 论坛中提到的 bei RoboMod 方法,但在两者中我都得到了一张废话的黑色图片。不过,如果我使用提供的sutil提供的功能将输出保存在 .ppm 文件中,一切似乎都是正确的。

所以我的问题是如何正确地从 OptiX 输出缓冲区到渲染的 openGL 场景。

0 投票
1 回答
119 浏览

qt - QGLWidget - 发生失真

我想在 QGLWidget 中显示 OptixSDK 的 sample6。

我的应用程序只有 3 个用于围绕 X、Y、Z 轴和 QGLWidget 旋转的 QSlider。

据我了解,每当我的 QSlider 或 Mouseevents调用 updateGL ()时,都会调用paintGL() 。然后我初始化一个旋转矩阵并将这个矩阵应用到 PinholeCamera 以便使用新的变换后的相机坐标来跟踪场景,对吧?

跟踪完成后,我得到输出缓冲区并使用它使用glDrawPixels()绘制像素,就像在 OptiX 框架中给出的 GLUTdisplay.cpp 中一样。

但我的问题是图像歪斜/扭曲。例如,我想展示一个球,但球是极端扁平的,但旋转效果很好。当我缩小时,图像的水平缩放似乎比垂直缩放慢得多。

我几乎可以肯定/希望它必须对未正确使用的gl...()函数做一些事情。我错过了什么?有人可以帮我吗?

为了完整起见,我发布了我的paintGL()updateGL()代码。

这是paintGL()

0 投票
1 回答
6465 浏览

c++ - memcpy.asm 未找到错误

我在 Optix 使用 Visual Studio 2013 平台工作,我已经工作了一个多月,突然我收到这个错误,“找不到 memcpy.asm”。

我在 Visual Studio 文件夹中找到了这个文件,但它显示“源文件与构建模块时不同”

0 投票
1 回答
93 浏览

opengl - 在 OPTIX 3.8 中找不到 freeglut_main.c

我一直在 Optix 为我的光线追踪项目工作,我浏览了它的类和函数,我知道所有的显示函数和回调都在 glutmainloop() 中处理,它永远不会结束,我的问题是我找不到任何函数或定义 glutmainloop() 的 .c 文件?它是隐藏的吗?

谁能帮我?

0 投票
1 回答
180 浏览

nvidia - 堆栈中有什么?

我试图了解 optix 堆栈中存储的内容。

据我了解,我们设置每个上下文的堆栈大小,并且一个堆栈附加到光线生成程序中的每个线程。当光线启动时,线程会携带堆栈,该堆栈存储光线的有效负载。

我认为,例如,当我们执行递归光线追踪器时,会发生堆栈溢出,因为内存中会保留太多有效负载。但是现在,我有一个程序,它的辐射射线的有效载荷为 float + 3 uint,阴影射线只有一个浮点数,并且只有一次反弹。但是,我的堆栈需要大于 1024 以避免堆栈溢出。当然,这不仅仅是我的两个有效载荷。

所以我想知道,堆栈中还有什么?(我的意思是一般情况下,不是在我的特定情况下。除了光线有效载荷(如果有的话)之外,堆栈中存储了什么?例如,我们是否还存储有关命中的信息?关于场景树? 我们是否跟踪哪个程序调用了当前射线?)

谢谢你的帮助!

0 投票
1 回答
457 浏览

cuda - 如何通过 optix 示例在 obj 模型上绘制纹理

我对 optix 和 cuda 很陌生。我正在尝试修改 optix SDK 示例以呈现带有光线追踪的 3D 模型。我修改了“progressivePhotonMap”示例。由于缺乏optix / cuda知识,我不知道如何在3D模型上绘制纹理,熟悉SDK示例的任何人都可以帮助我吗?

我阅读了其他绘制纹理示例,例如“swimmingShark”或“cook”,并尝试找出使用的线索。然而,这些例子似乎有不同的方式来绘制纹理。

从现在开始,我知道我必须在 cpp 文件中加载纹理

并在 cuda 文件中创建 TextureSampler

,并给他们 texcoord 来绘制,像这样,

但是,我找不到 texcoord 在 cuda 文件中获取纹理坐标数据的位置。.cpp文件中似乎应该有一些这样的代码

谁能教我 texcoord 在哪里获取纹理坐标数据,以及如何匹配坐标数据和纹理以呈现带有光线追踪的 3D 模型?我在谷歌上找不到教程,我真的需要帮助或指导才能达到我的目标。谢谢你。

0 投票
1 回答
876 浏览

visual-studio - 使用 CMake 编译 OptiX SDK 3.9 时出现错误

我正在使用 Win10-x64。
我按顺序安装了 Visual Studio 2010、CUDA 7.5、OptiX SDK 3.9.0 和 CMake 3.5。

然后我按照 OptiX/SDK/ 中的 INSTALL-WIN.txt 并尝试编译示例。我按配置,然后:

然后我复制/../lib64/*/../lib/*/../bin64/*/../bin/*

上面的错误似乎已修复,但新的错误:

我尝试 CMake3.0 并得到相同的结果。

0 投票
2 回答
418 浏览

c++ - 为什么 optix 中的相机视图与 OpenGL 中的不同?

我正在通过 Nvidia Optix 样本拍摄 3D 模型的照片。我修改了 Optix SDKprogressivePhotonMap 以达到我的目标。我的progressovePhotonMap 代码和OpenGL 代码中具有相同的相机位置、相同的相机方向和相同的视野(FOV)。但是,相机的视图彼此有很大不同,如下所示。

输出图像:

在此处输入图像描述

左边是progressivePhotonMap的输出图片,另一边是OpenGL的输出。您可以看到左下电源点(由两条红线的交点表示)在两张图片中不在同一位置。

我知道 Optix 是基于 OpenGL 编写的,所以我很困惑为什么这两张图片(相机视图)在相同的相机参数中不一样。

这是我认为的原因:

1.可能是near和far参数的问题,因为在GlutDisplay.cpp中显示帧,gluPerspective()没用。我不能给出近和远参数。(即使在 ppm.cpp 中)那么我如何以及在哪里添加这两个参数?

2.也许optix投影平面不在近平面?在OpenGL中,我们可以将近平面视为投影平面,但在optix中却不行?

3.也许optix中3D模型的呈现方式与OpenGL不同???(我发现这两张图片有不同的失真)所以我不能避免这种情况吗?

我跟踪了整个项目并没有找到任何有用的信息,有人可以帮助我或就为什么会发生这种情况提供一些想法/建议吗?我将非常感谢任何回应。谢谢!

有一些简短的源代码,希望对您有所帮助。

在 OpenGL 中:

在 optix 中:

更新于 4/21 16:11 重新输出图像

我重新输出图片并发现 hfov(horizo​​ntal FOV) 可能是原因,在两张图片中,我的屏幕中窗口的高度似乎相同。据我所知,hfov 和 vfov 在 OpenGL 中的 gluPerspective 中是相同的。所以我认为 hfov 是我的 optix 代码中这两种相机视图不同的原因。

但是,我仍然不知道如何修改 ppm.cpp 中的 hfov。我一直认为我给 InitialCameraData 的 FOV 可以表示 hfov 和 vfov。如果这个想法是错误的,我应该在哪里修改 hfov?我只能调整 vfov 参数作为源代码显示。熟悉progressivePhotonMap示例的任何人都可以告诉我在哪里修改hfov吗?感谢任何回应!

0 投票
1 回答
211 浏览

optix - Nvidia Optix :rtProgramCreateFromPTXFile 或 rtProgramCreateFromPTXString 返回 RT_ERROR_INVALID_SOURCE?

代码结果是

我的项目可以生成PTX文件,并且配置了cuda和optix。

我该如何解决这个问题?