yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

jsmall-nvidiaLanguage experiments (#2068)447b7e0e2

master
881 B55 linesraw
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