5

我有一个关于计算着色器的问题。DX 9 中是否提供计算着色器?如果 GPU 上没有计算着色器片段,是否仍然可以使用带有 DX9 驱动程序的计算着色器?(SGX 545 没有它,但 SGX 6X 一代将拥有它),据 IMG 所说。我想知道我是否可以使用 DirectX9 或 OpenGL 驱动程序在 SGXs GPU 上进行一些简单的通用编程。

另外,无论如何我可以使用 OpenGL 顶点着色器进行 GPGPU 编程吗?这是我的想法:我将把我的矩阵/数据加载到顶点缓冲区中,并将它们绑定到程序上下文。我会将其他一些静态变量加载到统一变量中,并将我的实际计算程序加载到顶点着色器中。到目前为止,它看起来是可行的(是吗?),但顶点着色器的输出将经过光栅化,并将被馈送到片段着色器(根据 openGL 中的情况)。无论如何我可以阻止数据通过整个图形管道,或者我可以在顶点着色器完成执行后拦截,并以某种方式读取执行所需的值和时间?

4

2 回答 2

4

无论如何我可以使用OpenGL顶点着色器进行GPGPU编程吗?

从顶点着色器出来的东西通常在激光化阶段进行插值。在旧版本的 openGL 中,您可以指定对于特定变量是否应该或不应该发生这种插值。我不知道您是否仍然可以这样做...是的,您仍然可以(感谢 datenwolf 的提示)...但是在我看来,更好的方法是使用片段着色器。使用一个简单的顶点着色器渲染到一个完整的帧,该着色器渲染两个覆盖整个帧的三角形(一个四边形),就像任何后期处理效果一样,并在片段着色器中进行计算。将您想要用作输入的数据放入纹理中,并使用帧缓冲对象 (FBO) 将结果渲染到其他纹理。

于 2013-09-06T20:14:54.740 回答
3

无论如何我可以阻止数据通过整个图形管道,或者我可以在顶点着色器完成执行后拦截,并以某种方式读取执行所需的值和时间?

是的。
您可能会使用顶点着色器进行计算,关闭曲面细分阶段和几何着色器并截取来自变换反馈的结果。

下面是OpenGL 渲染管线

可选阶段有条纹边框。
可编程阶段是蓝色的。

OpenGL 渲染管线

于 2013-09-06T20:23:02.510 回答