yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
447b7e0e2
master
1//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj 2 3/* Tuple experiment. 4 5Works. 6 */ 7 8//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer 9RWStructuredBuffer<int> outputBuffer; 10 11struct Tuple2<T0, T1> 12{ 13 T0 _0; 14 T1 _1; 15}; 16 17struct Tuple3<T0, T1, T2> 18{ 19 T0 _0; 20 T1 _1; 21 T2 _2; 22}; 23 24Tuple2<T0, T1> makeTuple<T0, T1>(T0 t0, T1 t1) 25{ 26 Tuple2<T0, T1> t; 27 t._0 = t0; 28 t._1 = t1; 29 return t; 30} 31 32Tuple3<T0, T1, T2> makeTuple<T0, T1, T2>(T0 t0, T1 t1, T2 t2) 33{ 34 Tuple3<T0, T1, T2> t; 35 t._0 = t0; 36 t._1 = t1; 37 t._2 = t2; 38 return t; 39} 40 41int doThing(Tuple2<float, int> v) 42{ 43 return v._0 + v._1; 44} 45 46[numthreads(4, 1, 1)] 47void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 48{ 49 int index = dispatchThreadID.x; 50 51 let t = makeTuple(index + 1.0f, index - 1); 52 53 outputBuffer[index] = doThing(t); 54} 55