顶点和像素着色器之间的区别是必要的还是有益的?

时间:2013-05-14 20:24:31

标签: parallel-processing abstraction vertex-shader pixel-shader

从我能够得到的结果来看,顶点和像素着色器操作都归结为传递数据并为每个可用单元执行大量相同操作。当然,顶点和像素着色器位于经典图形管道的不同部分,但是拥有更多抽象并且能够创建任意数据和并行操作的任意顺序不是更好吗?我想这样的抽象也可以应用于模拟OpenCL,计算着色器以及任何通用或专用计算API。

2 个答案:

答案 0 :(得分:0)

专业化可帮助驱动程序以最佳方式执行并简化应用程序代码。光栅化后会出现像素着色器。很高兴不必担心光栅化。您可以使用CUDA或OpenCL以完全图形无关的方式执行您喜欢的任何操作。 Alt键。是。它即将到来。

答案 1 :(得分:0)

历史上,区别是必要的,因为顶点和像素着色器是在具有不同功能的不同硬件单元中物理实现的。如今几乎所有PC GPU甚至许多移动GPU都具有统一的着色器架构,其中顶点和像素着色器在相同的硬件计算单元上执行,因此区别不太必要。然而,在图形管道的上下文中它仍然是有用的,因为输入和输出及其含义由渲染管道中顶点和像素着色器的逻辑位置决定。

对于GPGPU类型问题,传统图形管道没有意义/相关性,您可以使用计算着色器,在传统的顶点/像素着色器模型之外公开底层硬件的全部功能。计算着色器在某种意义上你正在谈论的抽象,所以谈论用这样的抽象“模仿”它们并没有多大意义。计算着色器只是一种公开顶点和像素着色器使用的物理硬件计算单元的方法,以便在传统图形管道之外使用。