yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
d961f4438
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-shaderobj -vk -output-using-type 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-shaderobj -output-using-type 3 4struct NonCStyle 5{ 6 int x = 3; 7 float y = 4.0f; 8 int z[2] = {5, 6}; 9 float2 w = {7.0f, 8.0f}; 10 11 __init(int x) 12 { 13 this.x = x; 14 } 15 16 __init(int x, float y) 17 { 18 this.x = x; 19 this.y = y; 20 } 21 22 __init(int arr[2]) 23 { 24 this.z[0] = arr[0]; 25 this.z[1] = arr[1]; 26 } 27 28 __init(float2 vec) 29 { 30 this.w= vec; 31 } 32} 33 34//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer 35RWStructuredBuffer<float> outputBuffer; 36void test() 37{ 38 int idx = 0; 39 NonCStyle s1 = NonCStyle(1); 40 outputBuffer[idx++] = s1.x; 41 // BUFFER: 1 42 outputBuffer[idx++] = s1.y; 43 // BUFFER: 4.0 44 outputBuffer[idx++] = s1.z[0]; 45 // BUFFER: 5 46 outputBuffer[idx++] = s1.z[1]; 47 // BUFFER: 6 48 outputBuffer[idx++] = s1.w.x; 49 // BUFFER: 7 50 outputBuffer[idx++] = s1.w.y; 51 // BUFFER: 8 52 53 NonCStyle s2 = NonCStyle(1, 12.0); 54 outputBuffer[idx++] = s2.x; 55 // BUFFER: 1 56 outputBuffer[idx++] = s2.y; 57 // BUFFER: 12.0 58 outputBuffer[idx++] = s2.z[0]; 59 // BUFFER: 5 60 outputBuffer[idx++] = s2.z[1]; 61 // BUFFER: 6 62 outputBuffer[idx++] = s2.w.x; 63 // BUFFER: 7 64 outputBuffer[idx++] = s2.w.y; 65 // BUFFER: 8 66 67 NonCStyle s3 = NonCStyle(Array<int, 2>(21u, 22u)); 68 outputBuffer[idx++] = s3.x; 69 // BUFFER: 3 70 outputBuffer[idx++] = s3.y; 71 // BUFFER: 4.0 72 outputBuffer[idx++] = s3.z[0]; 73 // BUFFER: 21 74 outputBuffer[idx++] = s3.z[1]; 75 // BUFFER: 22 76 outputBuffer[idx++] = s3.w.x; 77 // BUFFER: 7 78 outputBuffer[idx++] = s3.w.y; 79 // BUFFER: 8 80 81 NonCStyle s4 = NonCStyle(float2(31, 32)); 82 outputBuffer[idx++] = s4.x; 83 // BUFFER: 3 84 outputBuffer[idx++] = s4.y; 85 // BUFFER: 4.0 86 outputBuffer[idx++] = s4.z[0]; 87 // BUFFER: 5 88 outputBuffer[idx++] = s4.z[1]; 89 // BUFFER: 6 90 outputBuffer[idx++] = s4.w.x; 91 // BUFFER: 31 92 outputBuffer[idx++] = s4.w.y; 93 // BUFFER: 32 94} 95 96[shader("compute")] 97void computeMain() 98{ 99 test(); 100}