问题标签 [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.
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 文件。
提前致谢!
编辑:没关系我自己想出来的。错误已经告诉我我错过了链接额外的库。这就是为什么我必须前进:
qt - 在 QGLWidget 中显示 OptiX sample6
我想在 QGLWidget 中显示 OptixSDK 的 sample6。
我已经阅读了Nvidia OptiX 论坛中的主题,但我没有继续前进,因为不幸的是我不知道如何覆盖paintGL() 方法。
起初我只是尝试读取 sample6 的输出缓冲区并将其保存在 QImage 中
以及在Nvidia OptiX 论坛中提到的 bei RoboMod 方法,但在两者中我都得到了一张废话的黑色图片。不过,如果我使用提供的sutil提供的功能将输出保存在 .ppm 文件中,一切似乎都是正确的。
所以我的问题是如何正确地从 OptiX 输出缓冲区到渲染的 openGL 场景。
qt - QGLWidget - 发生失真
我想在 QGLWidget 中显示 OptixSDK 的 sample6。
我的应用程序只有 3 个用于围绕 X、Y、Z 轴和 QGLWidget 旋转的 QSlider。
据我了解,每当我的 QSlider 或 Mouseevents调用 updateGL ()时,都会调用paintGL() 。然后我初始化一个旋转矩阵并将这个矩阵应用到 PinholeCamera 以便使用新的变换后的相机坐标来跟踪场景,对吧?
跟踪完成后,我得到输出缓冲区并使用它使用glDrawPixels()绘制像素,就像在 OptiX 框架中给出的 GLUTdisplay.cpp 中一样。
但我的问题是图像歪斜/扭曲。例如,我想展示一个球,但球是极端扁平的,但旋转效果很好。当我缩小时,图像的水平缩放似乎比垂直缩放慢得多。
我几乎可以肯定/希望它必须对未正确使用的gl...()函数做一些事情。我错过了什么?有人可以帮我吗?
为了完整起见,我发布了我的paintGL()和updateGL()代码。
这是paintGL()
c++ - memcpy.asm 未找到错误
我在 Optix 使用 Visual Studio 2013 平台工作,我已经工作了一个多月,突然我收到这个错误,“找不到 memcpy.asm”。
我在 Visual Studio 文件夹中找到了这个文件,但它显示“源文件与构建模块时不同”
opengl - 在 OPTIX 3.8 中找不到 freeglut_main.c
我一直在 Optix 为我的光线追踪项目工作,我浏览了它的类和函数,我知道所有的显示函数和回调都在 glutmainloop() 中处理,它永远不会结束,我的问题是我找不到任何函数或定义 glutmainloop() 的 .c 文件?它是隐藏的吗?
谁能帮我?
nvidia - 堆栈中有什么?
我试图了解 optix 堆栈中存储的内容。
据我了解,我们设置每个上下文的堆栈大小,并且一个堆栈附加到光线生成程序中的每个线程。当光线启动时,线程会携带堆栈,该堆栈存储光线的有效负载。
我认为,例如,当我们执行递归光线追踪器时,会发生堆栈溢出,因为内存中会保留太多有效负载。但是现在,我有一个程序,它的辐射射线的有效载荷为 float + 3 uint,阴影射线只有一个浮点数,并且只有一次反弹。但是,我的堆栈需要大于 1024 以避免堆栈溢出。当然,这不仅仅是我的两个有效载荷。
所以我想知道,堆栈中还有什么?(我的意思是一般情况下,不是在我的特定情况下。除了光线有效载荷(如果有的话)之外,堆栈中存储了什么?例如,我们是否还存储有关命中的信息?关于场景树? 我们是否跟踪哪个程序调用了当前射线?)
谢谢你的帮助!
cuda - 如何通过 optix 示例在 obj 模型上绘制纹理
我对 optix 和 cuda 很陌生。我正在尝试修改 optix SDK 示例以呈现带有光线追踪的 3D 模型。我修改了“progressivePhotonMap”示例。由于缺乏optix / cuda知识,我不知道如何在3D模型上绘制纹理,熟悉SDK示例的任何人都可以帮助我吗?
我阅读了其他绘制纹理示例,例如“swimmingShark”或“cook”,并尝试找出使用的线索。然而,这些例子似乎有不同的方式来绘制纹理。
从现在开始,我知道我必须在 cpp 文件中加载纹理
并在 cuda 文件中创建 TextureSampler
,并给他们 texcoord 来绘制,像这样,
但是,我找不到 texcoord 在 cuda 文件中获取纹理坐标数据的位置。.cpp文件中似乎应该有一些这样的代码
谁能教我 texcoord 在哪里获取纹理坐标数据,以及如何匹配坐标数据和纹理以呈现带有光线追踪的 3D 模型?我在谷歌上找不到教程,我真的需要帮助或指导才能达到我的目标。谢谢你。
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 并得到相同的结果。
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(horizontal FOV) 可能是原因,在两张图片中,我的屏幕中窗口的高度似乎相同。据我所知,hfov 和 vfov 在 OpenGL 中的 gluPerspective 中是相同的。所以我认为 hfov 是我的 optix 代码中这两种相机视图不同的原因。
但是,我仍然不知道如何修改 ppm.cpp 中的 hfov。我一直认为我给 InitialCameraData 的 FOV 可以表示 hfov 和 vfov。如果这个想法是错误的,我应该在哪里修改 hfov?我只能调整 vfov 参数作为源代码显示。熟悉progressivePhotonMap示例的任何人都可以告诉我在哪里修改hfov吗?感谢任何回应!
optix - Nvidia Optix :rtProgramCreateFromPTXFile 或 rtProgramCreateFromPTXString 返回 RT_ERROR_INVALID_SOURCE?
代码结果是
我的项目可以生成PTX文件,并且配置了cuda和optix。
我该如何解决这个问题?