【发布时间】:2012-02-25 02:32:56
【问题描述】:
有什么方法可以发射更多,例如。来自 GLSL 片段着色器的 4 个字节,如果实现不支持多个 FBO 缓冲区附件或“深”缓冲区格式?
例如,在使用 WebGL 或 OpenGL ES 时,如果必须在多个通道中重复部分计算以获得更多输出通道,则每个片段被限制为 RGBA 输出会使复杂的计算效率极低。
【问题讨论】:
标签: opengl-es glsl webgl fragment-shader fbo
有什么方法可以发射更多,例如。来自 GLSL 片段着色器的 4 个字节,如果实现不支持多个 FBO 缓冲区附件或“深”缓冲区格式?
例如,在使用 WebGL 或 OpenGL ES 时,如果必须在多个通道中重复部分计算以获得更多输出通道,则每个片段被限制为 RGBA 输出会使复杂的计算效率极低。
【问题讨论】:
标签: opengl-es glsl webgl fragment-shader fbo
你输出的不是字节,而是组件。每个图像只能存储四个分量,因此每个输出图像只能输出四个分量。
如果您的硬件可以输出更多数据,那么它将允许您输出更多图像。它可以通过扩展来暴露它。如果没有这样的扩展,那么硬件就不能,因此你也不能。
请注意,NVIDIA 有such an extension,所以他们支持 ES 的硬件可能能够做到这一点。
【讨论】:
不,没有办法比通常的频道更有效地输出。这意味着需要在不止一次的过程中完成具有更多输出的计算。具有多个输出且共享代价高昂的中间结果的计算可能会将中间结果计算为之前的附加通道,但是开销很可能会消耗掉所获得的任何性能优势。
【讨论】: