yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f02b08490
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -render-feature cooperative-vector -emit-spirv-directly 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-dx12 -render-feature cooperative-vector -dx12-experimental -output-using-type -profile cs_6_9 -Xslang... -Xdxc -Vd -X. 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu 4 5// CHECK: 0 6// CHECK-NEXT: 0 7// CHECK-NEXT: 1 8// CHECK-NEXT: 2 9// CHECK-NEXT: 0 10// CHECK-NEXT: 0 11// CHECK-NEXT: 1 12// CHECK-NEXT: 2 13// CHECK-NEXT: 0 14// CHECK-NEXT: 0 15// CHECK-NEXT: 1 16// CHECK-NEXT: 2 17 18//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer 19RWByteAddressBuffer outputBuffer; 20 21//TEST_INPUT:ubuffer(data=[4 3 5 7], stride=4),name=input1 22ByteAddressBuffer input1; 23 24//TEST_INPUT:ubuffer(data=[2 3 4 5], stride=4),name=input2 25ByteAddressBuffer input2; 26 27[numthreads(1, 1, 1)] 28void computeMain() 29{ 30 let vec1 = coopVecLoad<4, int32_t>(input1); 31 let vec2 = coopVecLoad<4, int32_t>(input2); 32 33 let vec3 = CoopVec<float, 4>(vec1); 34 let vec4 = CoopVec<float, 4>(vec2); 35 36 let vec5 = CoopVec<uint, 4>(vec1); 37 let vec6 = CoopVec<uint, 4>(vec2); 38 39 let result = vec1 % vec2; 40 let result2 = CoopVec<int, 4>(vec3 % vec4); 41 let result3 = CoopVec<int, 4>(vec5 % vec6); 42 43 result.store(outputBuffer); 44 result2.store(outputBuffer, 16); 45 result3.store(outputBuffer, 32); 46}