据我所知,顶点着色器和像素着色器操作都归结为传递数据并为每个可用单元做很多相同的事情。当然,顶点和像素着色器位于经典图形管道的不同部分,但是拥有更多抽象并能够创建任意数据的任意顺序并使用它进行并行操作不是更好吗?我想这样的抽象也可以应用于模拟 OpenCL、计算着色器以及任何通用或专用计算 API。
user2341104
问问题
325 次
2 回答
0
从历史上看,这种区别是必要的,因为顶点和像素着色器是在具有不同功能的不同硬件单元中物理实现的。如今,几乎所有 PC GPU 甚至许多移动 GPU 都具有统一的着色器架构,其中顶点着色器和像素着色器在相同的硬件计算单元上执行,因此区别不大。然而,它在图形管道的上下文中仍然很有用,因为输入和输出及其含义由渲染管道中顶点和像素着色器的逻辑位置决定。
对于传统图形管道没有意义/不相关的 GPGPU 类型问题,您可以使用计算着色器,在传统顶点/像素着色器模型之外公开底层硬件的全部功能。从某种意义上说,计算着色器是您正在谈论的抽象,因此用这样的抽象谈论“模拟”它们并没有真正的意义。计算着色器只是一种公开顶点和像素着色器使用的物理硬件计算单元的方式,以便在传统图形管道之外使用。
于 2013-10-16T18:45:56.930 回答
0
专业化有助于驱动程序以最佳方式执行并简化应用程序代码。像素着色器出现在光栅化之后。不必担心光栅化真是太好了。您可以使用 CUDA 或 OpenCL 以完全与图形无关的方式做任何您喜欢的事情。替代。是的。它来了。
于 2013-05-15T00:23:00.497 回答