yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
cfef0c6f6
master
1 2//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj 3//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj 4//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj 5//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj 6//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj 7 8//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer 9 10RWStructuredBuffer<int> outputBuffer; 11 12// Check Enum without base type 13 14enum Enum 15{ 16 A = 10, 17 B = 20, 18}; 19 20enum Enum8 : uint8_t 21{ 22 A = 20, 23 B = 19, 24}; 25 26// Check type aliases 27 28typedef Enum EnumTypeDef; 29typealias EnumTypeAlias = Enum; 30 31[numthreads(8, 1, 1)] 32void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 33{ 34 const int idx = asint(dispatchThreadID.x); 35 36 int size = 0; 37 switch (idx) 38 { 39 case 0: size = sizeof(Enum); break; 40 case 1: size = sizeof(EnumTypeDef); break; 41 case 2: size = sizeof(EnumTypeAlias); break; 42 case 3: size = sizeof(idx); break; 43 case 4: size = sizeof(Enum::A); break; 44 case 5: size = sizeof(Enum.B); break; 45 case 6: size = sizeof(Enum8::A); break; 46 case 7: size = sizeof(Enum8.B); break; 47 default: break; 48 } 49 50 outputBuffer[idx] = size; 51}