我想在DirectX Compute Shader中使用groupshared
内存来减少全局内存带宽,并希望提高性能。我的输入数据是Texture2D
,我可以使用2D索引来访问它,如下所示:
Input[threadID.xy]
我想有一个共享内存的2D数组来缓存部分输入数据,所以我尝试了显而易见的事实:
groupshared float SharedInput[32, 32];
它不会编译。错误消息显示为syntax error: unexpected token ','
。
有没有办法拥有共享内存的2D数组?如果没有,那么处理存储在一维共享存储器阵列中的2D数据的好方法是什么?
答案 0 :(得分:2)
groupshared
数组无法使用多维索引编制索引。您可以获得的最接近的是一个数组数组,其中每个维度都是独立索引的。
groupshared float SharedInput[32][32];
它不如多维索引那么好,但至少你不必手动计算线性索引。