【发布时间】:2019-09-04 23:22:37
【问题描述】:
我需要设置一个 GLSL 片段着色器来更改当前正在处理的片段以外的片段的颜色。由于这似乎不太理想,我将提供一个非常简短的上下文。
该项目利用渲染通道将给定模型绘制到 FBO 中,该 FBO 具有与纹理贴图中的 UV 坐标相对应的独特颜色。然后对这些颜色进行采样并转换为图像坐标,以便可以根据相机可见的内容更新模型的纹理贴图。本质上:
Render model to FBO
For each FBO pixel
1. sample secondary texture based on FBO pixel position
2. convert color at current pixel to image coordinate for the model's texture map
3. update model's texture with sampled secondary texture at calculated coordinate
End loop
问题是当前的实现非常受 CPU 限制,所以我从 FBO 中读取像素然后对其进行操作。理想情况下,由于我已经在片段着色器中处理了片段的颜色,因此我只想完成该过程的最后几个步骤,并将所有内容都保留在 GPU 上。
我遇到的具体问题是我不太清楚如何(或者是否有可能)让片段着色器设置它未处理的片段的颜色。如果我无法通过使用超大 FBO 并仅偏移我想要设置颜色的片段来处理某些内容,我可以处理直接写入纹理的内容吗?
有什么帮助/建议吗?
【问题讨论】: