yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
efa8d1ab4
master
1//TEST:SIMPLE(filecheck=CHECK): -stage compute -entry computeMain -target glsl 2//TEST:REFLECTION: -stage compute -entry computeMain -target glsl 3 4// CHECK-DAG: layout(binding = 0, set = 1) 5// CHECK-DAG: texture2D g_TextureHeap_1[] 6 7// CHECK-DAG: layout(binding = 0, set = 1) 8// CHECK-DAG: utexture2D g_TextureHeap_0[] 9 10[vk::binding(0, 1)] 11__DynamicResource<__DynamicResourceKind.General> g_TextureHeap[]; 12 13// CHECK-DAG: layout(binding = 2, set = 1) 14// CHECK-DAG: sampler g_SamplerHeap_0[] 15[vk::binding(2, 1)] 16__DynamicResource<__DynamicResourceKind.Sampler> g_SamplerHeap[]; 17 18// CHECK-DAG: layout(binding = 0, set = 2) 19// CHECK-DAG: texture2D g_SingleDynamicResourceA_0; 20[vk::binding(0, 2)] 21__DynamicResource g_SingleDynamicResourceA; 22 23// CHECK-DAG: layout(binding = 1, set = 2) 24// CHECK-DAG: texture2D g_SingleDynamicResourceB_0; 25[vk::binding(1, 2)] 26__DynamicResource g_SingleDynamicResourceB; 27 28// CHECK-DAG: layout(std430, binding = 2, set = 2) buffer 29[vk::binding(2, 2)] 30__DynamicResource g_SingleDynamicResourceC; 31 32// CHECK: IndirectAccess_0 33// CHECK: g_TextureHeap_0[_S1] 34[noinline] 35float4 IndirectAccess(__DynamicResource resource, int2 pos) 36{ 37 let texture = resource.as<Texture2D<uint4>>(); 38 return texture[pos] / 255.0; 39} 40 41// CHECK: main 42// CHECK-DAG: g_TextureHeap_1[3] 43// CHECK-DAG: g_SamplerHeap_0[2] 44[numthreads(16)] 45void computeMain(int2 tid: SV_DispatchThreadID) 46{ 47 Texture2D texture = g_TextureHeap[3]; 48 SamplerState sampler = g_SamplerHeap[2].as<SamplerState>(); 49 50 float4 value = texture.SampleLevel(sampler, tid / 64.0, 0.0); 51 52 value += IndirectAccess(g_TextureHeap[1], tid); 53 54 value += g_SingleDynamicResourceA.as<Texture2D>()[tid]; 55 value += g_SingleDynamicResourceB.as<Texture2D>()[tid]; 56 57 RWStructuredBuffer<float4> outputBuffer = g_SingleDynamicResourceC; 58 outputBuffer[tid.x + tid.y * 64] = value; 59}