yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
6437f2d37
master
1//TEST:SIMPLE(filecheck=CHK): -target spirv -entry computeMain 2 3// Delegated constructors 4struct Impl 5{ 6 float x; 7 8 __init(float val) 9 { 10 x = val; 11 } 12 13 __init() 14 { 15 float val = 2.0; 16 17 // Shouldn't trigger a warning here 18 return Impl(val); 19 } 20} 21 22// Calling a method from a constructor to initialize fields 23struct HitInfo 24{ 25 float3 barycentrics; 26 uint primitiveIndex; 27 28 [[mutating]] void init(float2 hitBarycentrics, uint hitPrimitiveIndex) 29 { 30 barycentrics = { 1.0 - hitBarycentrics.x - hitBarycentrics.y, hitBarycentrics.x, hitBarycentrics.y }; 31 primitiveIndex = hitPrimitiveIndex; 32 } 33 34 __init(float2 hitBarycentrics, uint hitPrimitiveIndex) 35 { 36 init(hitBarycentrics, hitPrimitiveIndex); 37 } 38 39 __init(BuiltInTriangleIntersectionAttributes attr) 40 { 41 init(attr.barycentrics, PrimitiveIndex()); 42 } 43} 44 45//CHK-NOT: warning 41020 46//CHK-NOT: warning 41021 47 48 49[Shader("compute")] 50[NumThreads(4, 1, 1)] 51void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) 52{ 53} 54