我在 HLSL 计算着色器中遇到了关于 intelocked 的问题。这是我的代码
RWTexture2D<uint> TileNum:register(u0);
//Texture size is same with all group size(Context->Dispantch(x,y,z))
[numthreads(32, 32, 1)]//max 1024
void main(uint3 TileIndex : SV_GROUPID)
{
uint src=0;
InterlockedAdd(TileLightNum[TileIndex.xy],1,src);
}
然后我将纹理数据读取到 cpu。实际上,一个组的线程数是1024(最大)。我想每个(x,y)坐标值是1024。但是值是64(专用卡)或32(集成卡)。有人能告诉我吗发生在 hlsl 中?太感谢了!