是否可以在没有 CUDA/OpenCL 等的情况下使用 GPU 进行光线追踪?

Posted

技术标签:

【中文标题】是否可以在没有 CUDA/OpenCL 等的情况下使用 GPU 进行光线追踪?【英文标题】:Is it possible to use GPU for raytracing without CUDA/OpenCL etc? 【发布时间】:2011-03-03 01:58:39 【问题描述】:

我正在使用不支持 CUDA 或 OpenCL 等功能的 Windows Phone 7。我是 GPU 方面的新手,GPU 上有什么东西可以用来帮助加速光线追踪吗?像三角形相交测试?还是从纹理中选择正确的颜色?

【问题讨论】:

【参考方案1】:

CUDA 等实际上只是用于编程着色器的高级语言,因此任何支持可编程着色器的平台都允许您在 gpu 上运行通用计算。

不幸的是,它看起来像Windows Phone 7 does not support custom programmable shaders,因此目前无法真正实现光线追踪器的 GPU 加速。即使是这样,也很难有效地使用 GPU 进行光线追踪,因为有几个非常反 GPU 的特性:

    内存一致性差(每条光线都可以轻松与完全不同的几何体进行交互) 高分支因子(着色器最适合始终遵循单一路径的代码) 大型工作集(必须随时在内存中访问大量几何图形,才能计算甚至单条射线的结果)

如果您的目标是编写光线追踪器,那么完全在 CPU 上完成可能会容易得多,然后才考虑更深奥的优化。

【讨论】:

【参考方案2】:

即使在现代普通台式电脑上,光线追踪仍然有点慢。您可以通过只拍摄主光线来加快速度,但是光栅化方法实际上会更好更快。

您确定要在计算能力比 PC 还低的手机上进行光线追踪吗?它们不是为做那种工作而设计的。

【讨论】:

以上是关于是否可以在没有 CUDA/OpenCL 等的情况下使用 GPU 进行光线追踪?的主要内容,如果未能解决你的问题,请参考以下文章

GPU 中的并行性 - CUDA / OpenCL

用于光线追踪器的 OpenGL 或 CUDA/OpenCL? [关闭]

在没有数组边界检查、强制转换检查等的情况下运行 Java

在没有 ListView 等的情况下刷新 Flutter 中的小部件或页面

银行冲突是不是发生在非 GPU 硬件上?

如何在没有绑定的情况下运行 Azure Function