yum-mirror/slang

Making it easier to work with shaders

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

Yong HeImplement explciit binding for metal and wgsl. (#5778)7dabfa76c

master
789 B40 linesraw
1// user-defined-initializer.slang
2
3// Confirm that user-defined initializer/constructor
4// methods in a type work as expected.
5
6//TEST(compute):COMPARE_COMPUTE: -shaderobj
7//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
8
9struct Pair
10{
11	int head;
12	int tail;
13
14	__init(int h, int t)
15	{
16		head = h;
17		tail = t;
18	}
19
20	int getHead() { return head; }
21	int getTail() { return tail; }
22}
23
24int test(int value)
25{
26	Pair p = Pair(value, value+1);
27	return p.getHead()*16 + p.getTail();
28}
29
30//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):out,name=outputBuffer
31RWStructuredBuffer<int> outputBuffer;
32
33[numthreads(4, 1, 1)]
34void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
35{
36	uint tid = dispatchThreadID.x;
37	int inVal = outputBuffer[tid];
38	int outVal = test(inVal);
39	outputBuffer[tid] = outVal;
40}