0

是否可以在 GLSL ES 下按顺序组合多个片段着色器?我想使用两个着色器 S1 和 S2,其中 S2 使用 S1 输出的几个片段。例如,我想按顺序应用两个卷积,在这种情况下,第二个卷积需要在一堆像素位置访问第一个卷积的输出。

4

1 回答 1

1

是的,但是这需要使用两种技术之一。第一个最简单的方法称为多通道渲染。在其中,您将 S1 的结果渲染到纹理,然后渲染 S2 从保存 S1 结果的纹理中读取。然而,这有点低效,因为它消除了 GPU 可能实现的一些并行性。所以通常建议你使用一种叫做管道的东西。这有点复杂。

  1. 创建 2*N 个纹理,其中 N 是着色器的数量。这样每个着色器都可以具有读取和写入纹理。
  2. 一次渲染每个着色器,从它之前的着色器的读取纹理中读取,并写入写入纹理。
  3. 在每一帧结束时,交换读取和写入纹理。

这导致同时计算多个迭代。然而,每次迭代在 N 次迭代后完成。

于 2012-06-21T22:27:58.510 回答