yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
c0726e1d5
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -compile-arg -obfuscate -shaderobj -output-using-type 2//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -compute -compile-arg -obfuscate -shaderobj -output-using-type 3 4//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer 5RWStructuredBuffer<float> outputBuffer; 6 7float testBool<let doStuff : bool>() 8{ 9 if (doStuff) 10 { 11 return 1.0; 12 } 13 else 14 { 15 return 2.0; 16 } 17} 18 19enum Color { 20 RED, 21 GREEN 22} 23 24float testEnum<let e : Color>() 25{ 26 if (e == Color::RED) 27 { 28 return 3.0; 29 } 30 else 31 { 32 return 4.0; 33 } 34} 35 36[shader("compute")] 37void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 38{ 39 // CHECK: 1.0 40 outputBuffer[0] = testBool<true>(); 41 // CHECK: 2.0 42 outputBuffer[1] = testBool<false>(); 43 44 // CHECK: 3.0 45 outputBuffer[2] = testEnum<Color::RED>(); 46 // CHECK: 4.0 47 outputBuffer[3] = testEnum<Color::GREEN>(); 48}