spv.ext.RayGenSBTlayoutscalar.rgen
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 74

                              Capability Int64
                              Capability RayTracingKHR
                              Extension  "SPV_KHR_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationKHR 4  "main" 11 21 38 60
                              Source GLSL 460
                              SourceExtension  "GL_ARB_gpu_shader_int64"
                              SourceExtension  "GL_EXT_ray_tracing"
                              SourceExtension  "GL_EXT_scalar_block_layout"
                              Name 4  "main"
                              Name 8  "lx"
                              Name 11  "gl_LaunchIDEXT"
                              Name 16  "ly"
                              Name 20  "sx"
                              Name 21  "gl_LaunchSizeEXT"
                              Name 24  "sy"
                              Name 36  "block"
                              MemberName 36(block) 0  "dir"
                              MemberName 36(block) 1  "origin"
                              MemberName 36(block) 2  "i"
                              MemberName 36(block) 3  "aHandle32"
                              MemberName 36(block) 4  "aHandle64"
                              MemberName 36(block) 5  "arr"
                              MemberName 36(block) 6  "a"
                              MemberName 36(block) 7  "arr3"
                              MemberName 36(block) 8  "packme"
                              MemberName 36(block) 9  "b"
                              MemberName 36(block) 10  "c"
                              Name 38  ""
                              Name 60  "payload"
                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                              Decorate 34 ArrayStride 8
                              Decorate 35 ArrayStride 12
                              MemberDecorate 36(block) 0 Offset 0
                              MemberDecorate 36(block) 1 Offset 12
                              MemberDecorate 36(block) 2 Offset 24
                              MemberDecorate 36(block) 3 Offset 28
                              MemberDecorate 36(block) 4 Offset 40
                              MemberDecorate 36(block) 5 Offset 48
                              MemberDecorate 36(block) 6 Offset 64
                              MemberDecorate 36(block) 7 Offset 68
                              MemberDecorate 36(block) 8 Offset 92
                              MemberDecorate 36(block) 9 Offset 96
                              MemberDecorate 36(block) 10 Offset 104
                              Decorate 36(block) Block
               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:             TypeFloat 32
              28:             TypeVector 27(float) 3
              29:             TypeInt 32 1
              30:             TypeVector 6(int) 2
              31:             TypeInt 64 0
              32:             TypeVector 27(float) 2
              33:      6(int) Constant 2
              34:             TypeArray 32(fvec2) 33
              35:             TypeArray 28(fvec3) 33
       36(block):             TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float)
              37:             TypePointer ShaderRecordBufferKHR 36(block)
              38:     37(ptr) Variable ShaderRecordBufferKHR
              39:     29(int) Constant 3
              40:             TypePointer ShaderRecordBufferKHR 30(ivec2)
              43:             TypeAccelerationStructureKHR
              49:     29(int) Constant 1
              50:             TypePointer ShaderRecordBufferKHR 28(fvec3)
              53:   27(float) Constant 1056964608
              54:     29(int) Constant 0
              57:   27(float) Constant 1061158912
              58:             TypeVector 27(float) 4
              59:             TypePointer RayPayloadKHR 58(fvec4)
     60(payload):     59(ptr) Variable RayPayloadKHR
              61:     29(int) Constant 4
              62:             TypePointer ShaderRecordBufferKHR 31(int64_t)
         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
              41:     40(ptr) AccessChain 38 39
              42:   30(ivec2) Load 41
              44:          43 ConvertUToAccelerationStructureKHR 42
              45:      6(int) Load 8(lx)
              46:      6(int) Load 16(ly)
              47:      6(int) Load 20(sx)
              48:      6(int) Load 24(sy)
              51:     50(ptr) AccessChain 38 49
              52:   28(fvec3) Load 51
              55:     50(ptr) AccessChain 38 54
              56:   28(fvec3) Load 55
                              TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload)
              63:     62(ptr) AccessChain 38 61
              64: 31(int64_t) Load 63
              65:          43 ConvertUToAccelerationStructureKHR 64
              66:      6(int) Load 8(lx)
              67:      6(int) Load 16(ly)
              68:      6(int) Load 20(sx)
              69:      6(int) Load 24(sy)
              70:     50(ptr) AccessChain 38 49
              71:   28(fvec3) Load 70
              72:     50(ptr) AccessChain 38 54
              73:   28(fvec3) Load 72
                              TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload)
                              Return
                              FunctionEnd
