首页 文章

Metal或OpenGLES中Fragment着色器中的共享变量

提问于
浏览
1

这可能不太可能,但有一个共享全局变量的概念,可以在Metal和OpenGLES中的片段着色器的每次传递中更新吗?我想在处理每个像素后更新一些统计数据 . 我假设每个片段着色器并行运行会出现很多并发问题 .

2 回答

  • 1

    有点像atomic_uint吗?我最近需要做类似的事情,这就是我用过的东西 . 在这里查看我的问题的答案:How to implement/use atomic counter in Metal fragment shader?

  • 2

    碎片着色器的原子性能很可能很老实,因为你会从多个着色器核心获得大量并行读取和写入,因为如果你为每个输入纹理元素方法选择naieve 1片段,着色器将非常短 .

    通常的实现是将直方图编码为帧缓冲区 .

    从顶点着色器中的纹理读取并将单个点放置在与“直方图”坐标匹配的位置 .

    可以使用混合操作累积直方图 .

    使用glReadPixels将直方图读回CPU .

相关问题