yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
3072cfea9
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-shaderobj -vk 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-shaderobj -mtl 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUFFER):-cpu -compute -entry computeMain 4 5//TEST_INPUT:ubuffer(data=[9 9 9 9 9 9 9 9 9 9 9 9], stride=4):out,name=outputBuffer 6RWStructuredBuffer<int> outputBuffer; 7 8void test<let TSize : uint>() 9{ 10 // Test array initialization with generic size 11 int array[TSize] = {}; 12 13 // BUFFER: 0 14 outputBuffer[0] = array[0]; 15 // BUFFER-NEXT: 0 16 outputBuffer[1] = array[1]; 17 // BUFFER-NEXT: 0 18 outputBuffer[2] = array[2]; 19 // BUFFER-NEXT: 3 20 outputBuffer[3] = array.getCount(); 21 22 vector<int, TSize> vec = {}; 23 24 // BUFFER-NEXT: 0 25 outputBuffer[4] = vec[0]; 26 // BUFFER-NEXT: 0 27 outputBuffer[5] = vec[1]; 28 // BUFFER-NEXT: 0 29 outputBuffer[6] = vec[2]; 30 // BUFFER-NEXT: 3 31 outputBuffer[7] = vec.getCount(); 32 33 matrix<float, TSize, TSize-1> mat = {}; 34 35 // BUFFER-NEXT: 0 36 outputBuffer[8] = (int)mat[0][0]; 37 // BUFFER-NEXT: 0 38 outputBuffer[9] = (int)mat[1][1]; 39 // BUFFER-NEXT: 0 40 outputBuffer[10] = (int)mat[2][1]; 41 // BUFFER-NEXT: 3 42 outputBuffer[11] = mat.getCount(); // this is a bad name, getCount() is actually get the number of row. 43} 44 45[shader("compute")] 46[numthreads(1, 1, 1)] 47void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 48{ 49 test<3>(); 50}