我想在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];
它不像多维索引那么好,但至少你不必手动计算线性索引