29 lines
568 B
Plaintext
29 lines
568 B
Plaintext
struct MyStruct {
|
|
uint a;
|
|
uint b;
|
|
uint c;
|
|
};
|
|
|
|
struct MyStructs {
|
|
uint count;
|
|
MyStruct data[];
|
|
};
|
|
|
|
StructuredBuffer<MyStructs> sb;
|
|
StructuredBuffer<MyStruct> o;
|
|
|
|
groupshared MyStruct s[128];
|
|
static const MyStruct deflt = { 1u, 2u, 3u };
|
|
|
|
[numthreads(128, 1, 1)]
|
|
void main(uint id : SV_GroupIndex)
|
|
{
|
|
s[0] = deflt;
|
|
uint count = sb.Load(0).count;
|
|
MyStruct ms = id > count ? s[id - count] : sb.Load(0).data[id];
|
|
|
|
InterlockedAdd(o[0].a, ms.a);
|
|
InterlockedAdd(o[0].b, ms.b);
|
|
InterlockedAdd(o[0].c, ms.c);
|
|
}
|