【发布时间】:2013-04-16 20:18:55
【问题描述】:
我想在 DirectX 计算着色器中使用 groupshared 内存来减少全局内存带宽并希望提高性能。我的输入数据是 Texture2D,我可以像这样使用 2D 索引来访问它:
Input[threadID.xy]
我想要一个共享内存的二维数组来缓存输入数据的一部分,所以我尝试了显而易见的方法:
groupshared float SharedInput[32, 32];
它不会编译。错误消息显示syntax error: unexpected token ','。
有没有办法拥有一个二维共享内存数组?如果不是,那么处理存储在 1D 共享内存数组中的 2D 数据的好技术是什么?
【问题讨论】:
-
你试过[][]吗?甚至 DX9c HLSL 也支持它,所以有一些想象力,计算着色器也应该这样做。
-
我没有尝试过
[][]。这将创建一个数组数组,这与二维数组不同。索引不如二维索引好,但比线性索引好。我想知道与一个线性阵列相比是否有任何性能差异?
标签: directx compute-shader directcompute