yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
35f8e092f
master
1//TEST:SIMPLE(filecheck=SPIRV): -stage closesthit -entry chit -target spirv -fvk-use-c-layout 2struct RayPayload 3{ 4 float3 color; 5}; 6 7struct A { 8 int64_t a1; 9 int32_t a2; 10}; 11 12struct B { 13 A a; 14 uint32_t b; 15}; 16 17struct Push { 18 B *p; 19}; 20 21[[vk::push_constant]] Push push; 22 23struct C { 24 int i; 25 A a; 26}; 27 28struct D { 29 C c; 30 int j; 31}; 32 33[[vk::shader_record]] 34cbuffer ShaderRecord 35{ 36 D d; 37} 38 39[[shader("closesthit")]] 40void chit(inout RayPayload payload : SV_RayPayload, in float2 barys_yz : SV_IntersectionAttributes) { 41 let barys = float3(1.0 - barys_yz.x - barys_yz.y, barys_yz); 42 payload.color = barys; 43 44 push.p->b = d.j + d.c.i; 45} 46 47// SPIRV: OpMemberDecorate %A_c 0 Offset 0 48// SPIRV: OpMemberDecorate %A_c 1 Offset 8 49// SPIRV: OpMemberDecorate %C_c 0 Offset 0 50// SPIRV: OpMemberDecorate %C_c 1 Offset 8 51// SPIRV: OpMemberDecorate %D_c 0 Offset 0 52// SPIRV: OpMemberDecorate %D_c 1 Offset 24 53// SPIRV: OpMemberDecorate %B_c 0 Offset 0 54// SPIRV: OpMemberDecorate %B_c 1 Offset 16 55 56// SPIRV: %_ptr_PushConstant_Push_c = OpTypePointer PushConstant %Push_c 57// SPIRV: %_ptr_ShaderRecordBufferKHR_SLANG_ParameterGroup_ShaderRecord_c = OpTypePointer ShaderRecordBufferKHR %SLANG_ParameterGroup_ShaderRecord_c