与PixelShader相比,我有一个关于ComputeShader的问题。 我想在缓冲区上进行一些处理,这可以通过像素着色器和计算着色器来实现,现在我想知道是否有任何优势,尤其是在速度方面。我在使用8位值时遇到了问题,但我应该可以解决这个问题。
输出中的每个数据点将通过使用它周围的总共8个数据点(MxN矩阵)来计算,所以我认为这对于像素着色器来说是完美的,因为不同的输出不会相互影响一点都不。
但是我无法找到任何比较着色器的基准测试,现在我想知道我应该针对哪一个。只有目标是速度。
答案 0 :(得分:2)
根据我的理解,着色器是着色器,因为它们只是由数据上的大量线程运行的程序。因此,与计算着色器相比,通常在像素着色器中进行计算的计算功率/速度方面不应存在任何差异。 然而 ..
要对像素着色器进行计算,你必须按摩数据,使其看起来像图像数据,这意味着你必须首先绘制四边形,但你的输出必须具有像素的“形状”( float4基本上)。然后,您的应用必须将此数据解释为有用的内容
如果你正在使用computeshader,你可以完全控制要使用的线程数,对于像素着色器,它们必须是有效的分辨率。您也可以以您喜欢的任何格式输入和输出数据,并利用无人机加速转换(我认为)
我建议使用计算机,因为它们用于进行通用计算,并且更容易使用。你的整个应用程序也可能更快,即使实际的着色器计算时间大致相同,只是因为你可以避免一些必须跳过的箍,让像素着色器做你想要的。