这可能不太可能,但是有一个共享全局变量的概念,可以在Metal和amp;中的片段着色器的每次传递中更新。 OpenGLES?我想在处理每个像素后更新一些统计信息。我假设在每个片段着色器并行运行时会出现很多并发问题。
答案 0 :(得分:2)
像atomic_uint一样的东西?我最近需要做类似的事情,这就是我用过的东西。请在此处查看我的问题的答案:How to implement/use atomic counter in Metal fragment shader?
答案 1 :(得分:1)
碎片着色器的原子性能很可能很老实,因为你会从多个着色器核心获得大量的并行读写,因为如果你为每个输入纹理方法找到naieve 1片段,着色器会很短。
通常的实现是将直方图编码为帧缓冲区。
从顶点着色器中的纹理读取并将单个点放置在与“直方图”坐标匹配的位置。
可以使用混合操作累积直方图。
使用glReadPixels将直方图读回CPU。