是否可以在没有 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 进行光线追踪?的主要内容,如果未能解决你的问题,请参考以下文章
用于光线追踪器的 OpenGL 或 CUDA/OpenCL? [关闭]