首页 > 解决方案 > 计算着色器最佳实践/现代风格示例

问题描述

我一直在以最糟糕的风格编写 gpgpu 计算着色器(即只有一个整体程序)。我认为问题是我已经阅读了不是这样的虚拟代码,所以我希望有人能指出一些代码来学习风格。

我希望以更具功能性的风格进行编程(对于我的并行减少、蝴蝶等),并且想知道是否可以使用宏来实现某些目标。(扫描被认为是 gpgpu 的原语)

我正在寻找的东西包括:

groupshared uint4 UInt4Array[4];
void main(...)
{
    float Float1Array[16] = (float[16])UInt4Array;
}
void square(float input, out float ans)
{
   ans = input*input
}

groupshared float shared[THREAD_GROUP_LENGTH];

numthreads(THREAD_GROUP_LENGTH, 1, 1)]
void main(uint3 position : SV_DispatchThreadID)
{
    square(position.x, shared[position.x])
}

另外,如果有人有任何这样的风格提示,请发布。

标签: gpgpuhlslcompute-shaderdirectcompute

解决方案


推荐阅读