我有一个计算着色器,可以修改256x256纹理中的纹素。
计算着色器具有256x256x256调用,其中调用的x和y分量直接映射到纹素的u和v坐标。因此每个纹素可写入256次。
我希望每次调用计算着色器时检查给定纹理元素中当前的内容并执行一些测试以决定是否覆盖它。但是为了避免它们的并发问题,在任何其他调用写入之前都获得了texel值,我希望使用原子操作将值写入纹理。
然而,我已经被告知这会使操作并行化,因为原子操作迫使其他所有内容等待它完成,这意味着计算着色器的每次z调用都必须按顺序进行对于前一个以原子方式写入纹理。
是这种情况,如果是这样,这会影响性能吗?值得注意的是,z调用可能会发生变化,可能会超过256次