DirectX Compute Shaders是否支持共享内存中的2D数组?



我想在DirectX计算着色器中使用groupshared内存来减少全局内存带宽,并希望提高性能。我的输入数据是一个Texture2D,我可以使用2D索引访问它,如下所示:

Input[threadID.xy]

我想有一个2D的共享内存数组来缓存输入数据的部分,所以我尝试了显而易见的:

groupshared float SharedInput[32, 32];

无法编译。错误信息显示syntax error: unexpected token ',' .

有没有办法有一个二维数组的共享内存?如果不是,那么处理存储在共享内存的1D数组中的2D数据的好技术是什么?

不能对groupshared数组进行多维索引。你能得到的最接近的是一个数组的数组,其中每个维度都是独立索引的。

groupshared float SharedInput[32][32];

它不像多维索引那么好,但至少你不必手动计算线性索引

最新更新