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

Parallel processing 顶点和像素着色器之间的区别是必要的还是有益的?,parallel-processing,abstraction,vertex-shader,pixel-shader,Parallel Processing,Abstraction,Vertex Shader,Pixel Shader,根据我所能得到的,顶点和像素着色器操作归结为传递数据,并对每一个可用单元执行很多相同的操作。当然,顶点着色器和像素着色器位于经典图形管道的不同部分,但是如果有更多的抽象,并能够创建任意顺序的任意数据和并行操作,不是更好吗?我想这样的抽象也可以应用于模拟OpenCL、计算着色器以及任何通用或专用的计算API。专用化可以帮助驱动程序实现最佳性能并简化应用程序代码。光栅化后会出现像素着色器。不用担心光栅化,这很好。您可以使用CUDA或OpenCL以完全不依赖图形的方式做任何您喜欢的事情。 是的。它就要

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

专用化可以帮助驱动程序实现最佳性能并简化应用程序代码。光栅化后会出现像素着色器。不用担心光栅化,这很好。您可以使用CUDA或OpenCL以完全不依赖图形的方式做任何您喜欢的事情。
是的。它就要来了。

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


对于GPGPU类型的问题,如果传统的图形管道没有意义/相关性,您可以使用计算着色器,在传统的顶点/像素着色器模型之外公开底层硬件的全部功能。从某种意义上讲,计算着色器是您正在讨论的抽象,因此,用这种抽象来“模拟”它们是没有意义的。计算着色器只是将顶点和像素着色器使用的物理硬件计算单元暴露在传统图形管道之外的一种方式。

模拟旨在在顶点/片段着色器之上提供类似“计算”的着色器,因为流通中的大多数GPU实际上不支持计算着色器。这取决于你的目标市场,可能是真的,也可能不是真的。例如,根据最新的Steam硬件调查,63%的系统具有DX11卡/Windows 7。如果你的目标是移动设备,情况显然就大不相同了。同样值得注意的是,GPGPU起源于people(ab),它使用顶点和像素着色器来执行非图形计算。对于不支持计算着色器的硬件,仍然可以这样做。但是,计算着色器提供了旧硬件无法提供的额外功能。不支持计算着色器的硬件通常不支持它们,因为它缺少所需的功能,因此您无法通过顶点或像素着色器模拟缺少的功能,而不牺牲显著的性能。