yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
2a5d5b323
master
1//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj 2// Test emitting logic of pointer types. 3 4 5struct Something 6{ 7 int4 field0; 8 int field1; 9}; 10 11struct ArrayType 12{ 13 Something data[2]; 14}; 15 16ArrayType getArray() 17{ 18 ArrayType rs; 19 rs.data[0].field0 = int4(1,2,3,4); 20 rs.data[0].field1 = 1; 21 rs.data[1].field0 = int4(2,3,4,5); 22 rs.data[1].field1 = 2; 23 return rs; 24} 25 26int inoutFunc(in out int param, 27 int[2] arrayParam, 28 out int[2] arrayOut, 29 Something s0, 30 out Something s1) 31{ 32 int v = 1; 33 param = v + 1; 34 35 arrayOut[0] = arrayParam[0]; 36 arrayOut[1] = arrayParam[1]; 37 38 s1.field1 = s0.field1 + 1; 39 40 return param; 41} 42 43static int globalVar = 1; 44 45int test(int inVal) 46{ 47 int p = inVal; 48 int t1[2] = {1, 2}; 49 int t2[2] = {0, 0}; 50 Something s, s_out; 51 s.field1 = -1; 52 s.field1 = s.field1 - 1; 53 s.field0[0] = 1; 54 int4 localVector = int4(1,2,3,4); 55 localVector.x = 2; 56 var array = getArray(); 57 return inoutFunc(p, t1, t2, s, s_out) + t2[0] + s_out.field1 + 58 s.field0[0] + localVector.x + array.data[1].field1 + globalVar; 59} 60 61//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):out,name=outputBuffer 62RWStructuredBuffer<int> outputBuffer : register(u0); 63 64[numthreads(4, 1, 1)] 65void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 66{ 67 uint tid = dispatchThreadID.x; 68 int inVal = outputBuffer[tid]; 69 int outVal = test(inVal); 70 outputBuffer[tid] = outVal; 71}