spv.ext.RayGenShaderArray.rgen
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 89

                              Capability ShaderNonUniformEXT
                              Capability RuntimeDescriptorArrayEXT
                              Capability RayTracingProvisionalKHR
                              Extension  "SPV_EXT_descriptor_indexing"
                              Extension  "SPV_KHR_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationKHR 4  "main" 11 21 30 36 60 88
                              Source GLSL 460
                              SourceExtension  "GL_EXT_nonuniform_qualifier"
                              SourceExtension  "GL_EXT_ray_tracing"
                              Name 4  "main"
                              Name 8  "lx"
                              Name 11  "gl_LaunchIDEXT"
                              Name 16  "ly"
                              Name 20  "sx"
                              Name 21  "gl_LaunchSizeEXT"
                              Name 24  "sy"
                              Name 30  "accEXT0"
                              Name 34  "block"
                              MemberName 34(block) 0  "dir"
                              MemberName 34(block) 1  "origin"
                              MemberName 34(block) 2  "i"
                              Name 36  ""
                              Name 60  "accEXT1"
                              Name 88  "payload"
                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                              Decorate 30(accEXT0) DescriptorSet 0
                              Decorate 30(accEXT0) Binding 0
                              MemberDecorate 34(block) 0 Offset 0
                              MemberDecorate 34(block) 1 Offset 16
                              MemberDecorate 34(block) 2 Offset 28
                              Decorate 34(block) Block
                              Decorate 36 DescriptorSet 0
                              Decorate 36 Binding 2
                              Decorate 60(accEXT1) DescriptorSet 0
                              Decorate 60(accEXT1) Binding 1
                              Decorate 75 DecorationNonUniformEXT
                              Decorate 76 DecorationNonUniformEXT
                              Decorate 77 DecorationNonUniformEXT
                              Decorate 88(payload) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypePointer Function 6(int)
               9:             TypeVector 6(int) 3
              10:             TypePointer Input 9(ivec3)
11(gl_LaunchIDEXT):     10(ptr) Variable Input
              12:      6(int) Constant 0
              13:             TypePointer Input 6(int)
              17:      6(int) Constant 1
21(gl_LaunchSizeEXT):     10(ptr) Variable Input
              27:             TypeAccelerationStructureKHR
              28:             TypeRuntimeArray 27
              29:             TypePointer UniformConstant 28
     30(accEXT0):     29(ptr) Variable UniformConstant
              31:             TypeFloat 32
              32:             TypeVector 31(float) 3
              33:             TypeInt 32 1
       34(block):             TypeStruct 32(fvec3) 32(fvec3) 33(int)
              35:             TypePointer ShaderRecordBufferKHR 34(block)
              36:     35(ptr) Variable ShaderRecordBufferKHR
              37:     33(int) Constant 2
              38:             TypePointer ShaderRecordBufferKHR 33(int)
              41:             TypePointer UniformConstant 27
              48:     33(int) Constant 1
              49:             TypePointer ShaderRecordBufferKHR 32(fvec3)
              52:   31(float) Constant 1056964608
              53:     33(int) Constant 0
              56:   31(float) Constant 1061158912
              57:      6(int) Constant 2
              58:             TypeArray 27 57
              59:             TypePointer UniformConstant 58
     60(accEXT1):     59(ptr) Variable UniformConstant
              86:             TypeVector 31(float) 4
              87:             TypePointer RayPayloadKHR 86(fvec4)
     88(payload):     87(ptr) Variable RayPayloadKHR
         4(main):           2 Function None 3
               5:             Label
           8(lx):      7(ptr) Variable Function
          16(ly):      7(ptr) Variable Function
          20(sx):      7(ptr) Variable Function
          24(sy):      7(ptr) Variable Function
              14:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 12
              15:      6(int) Load 14
                              Store 8(lx) 15
              18:     13(ptr) AccessChain 11(gl_LaunchIDEXT) 17
              19:      6(int) Load 18
                              Store 16(ly) 19
              22:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12
              23:      6(int) Load 22
                              Store 20(sx) 23
              25:     13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17
              26:      6(int) Load 25
                              Store 24(sy) 26
              39:     38(ptr) AccessChain 36 37
              40:     33(int) Load 39
              42:     41(ptr) AccessChain 30(accEXT0) 40
              43:          27 Load 42
              44:      6(int) Load 8(lx)
              45:      6(int) Load 16(ly)
              46:      6(int) Load 20(sx)
              47:      6(int) Load 24(sy)
              50:     49(ptr) AccessChain 36 48
              51:   32(fvec3) Load 50
              54:     49(ptr) AccessChain 36 53
              55:   32(fvec3) Load 54
                              TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48
              61:     38(ptr) AccessChain 36 37
              62:     33(int) Load 61
              63:     41(ptr) AccessChain 60(accEXT1) 62
              64:          27 Load 63
              65:      6(int) Load 8(lx)
              66:      6(int) Load 16(ly)
              67:      6(int) Load 20(sx)
              68:      6(int) Load 24(sy)
              69:     49(ptr) AccessChain 36 48
              70:   32(fvec3) Load 69
              71:     49(ptr) AccessChain 36 53
              72:   32(fvec3) Load 71
                              TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48
              73:     38(ptr) AccessChain 36 37
              74:     33(int) Load 73
              75:     33(int) CopyObject 74
              76:     41(ptr) AccessChain 30(accEXT0) 75
              77:          27 Load 76
              78:      6(int) Load 8(lx)
              79:      6(int) Load 16(ly)
              80:      6(int) Load 20(sx)
              81:      6(int) Load 24(sy)
              82:     49(ptr) AccessChain 36 48
              83:   32(fvec3) Load 82
              84:     49(ptr) AccessChain 36 53
              85:   32(fvec3) Load 84
                              TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48
                              Return
                              FunctionEnd
