我有一个关于ComputeShader与PixelShader相比的问题。 我想在缓冲区上做一些处理,并且这对像素着色器和计算着色器都是可能的,现在我想知道在另一个中是否有任何优势,特别是在速度方面。我遇到了只使用8位值的问题,但我应该可以解决这个问题。ComputeShader与PixelShader的速度
输出中的每个数据点将通过使用它周围的总共8个数据点(MxN矩阵)进行计算,所以我认为这对于像素着色器来说是完美的,因为不同的输出不会影响每个其他所有。
但我无法找到任何比较着色器的基准,现在我不知道应该瞄准哪一个。只有目标是速度。
您通常还可以有至少8个输出缓冲区,以便为每个像素提供32个字节的可能输出数据。然后你可以把它们写成“out vec4 out0; out vec4 out1;等等......”。然后创建多个缓冲区并将其分配给GL_COLOR_ATTACHMENT,其中X是缓冲区号。在着色器中写入之后,可以通过执行glReadBuffer(GL_COLOR_ATTACHMENT ),然后使用glReadPixels从特定缓冲区中获取数据来读出它们。您可以通过查询glGetIntegerv(GL_MAX_DRAW_BUFFERS,&maxDrawBuf)来查看可以输出多少个缓冲区。 –
Martin
2018-01-02 02:40:49