是否可以在 GLSL ES 下按顺序组合多个片段着色器?我想使用两个着色器 S1 和 S2,其中 S2 使用 S1 输出的几个片段。例如,我想按顺序应用两个卷积,在这种情况下,第二个卷积需要在一堆像素位置访问第一个卷积的输出。
问问题
354 次
1 回答
1
是的,但是这需要使用两种技术之一。第一个最简单的方法称为多通道渲染。在其中,您将 S1 的结果渲染到纹理,然后渲染 S2 从保存 S1 结果的纹理中读取。然而,这有点低效,因为它消除了 GPU 可能实现的一些并行性。所以通常建议你使用一种叫做管道的东西。这有点复杂。
- 创建 2*N 个纹理,其中 N 是着色器的数量。这样每个着色器都可以具有读取和写入纹理。
- 一次渲染每个着色器,从它之前的着色器的读取纹理中读取,并写入写入纹理。
- 在每一帧结束时,交换读取和写入纹理。
这导致同时计算多个迭代。然而,每次迭代在 N 次迭代后完成。
于 2012-06-21T22:27:58.510 回答