据我了解,实现延迟着色的唯一方法是使用 MRT 并绑定(bind)不同的纹理以将数据存储到颜色附件。问题是WebGL specifications定义单一颜色附件:COLOR_ATTACHMENT0。是否有可能在具有此限制的 WebGL 中实现延迟着色?
最佳答案
您可以通过渲染到纹理来实现延迟着色,但您需要重新绘制每个 channel 的所有几何图形(漫反射、深度等),或者想出一种方法将您需要的所有信息存储到单个 RGBA 纹理中。然后在着色器中对这些纹理进行采样以产生最终结果。
您可能想要使用 float 纹理的扩展,但不能保证在任何地方都能工作。
正如您可能了解的那样,延迟在 WebGL 中并不是最佳选择:)
关于webgl - 是否可以在 WebGL 中实现延迟着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820496/