spv.ext.RayGenShader.rgen
// Module Version 10400
// Generated by (magic number): 80008
// Id's are bound by 58

                              Capability RayTraversalPrimitiveCullingProvisionalKHR
                              Capability RayTracingProvisionalKHR
                              Extension  "SPV_KHR_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationKHR 4  "main" 11 21 29 40 51 54 57
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_flags_primitive_culling"
                              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 29  "accEXT0"
                              Name 38  "block"
                              MemberName 38(block) 0  "dir"
                              MemberName 38(block) 1  "origin"
                              Name 40  ""
                              Name 51  "accEXT1"
                              Name 54  "imageu"
                              Name 57  "payload"
                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                              Decorate 29(accEXT0) DescriptorSet 0
                              Decorate 29(accEXT0) Binding 0
                              MemberDecorate 38(block) 0 Offset 0
                              MemberDecorate 38(block) 1 Offset 16
                              Decorate 38(block) Block
                              Decorate 51(accEXT1) DescriptorSet 0
                              Decorate 51(accEXT1) Binding 1
                              Decorate 54(imageu) DescriptorSet 0
                              Decorate 54(imageu) Binding 2
                              Decorate 57(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:             TypePointer UniformConstant 27
     29(accEXT0):     28(ptr) Variable UniformConstant
              35:      6(int) Constant 768
              36:             TypeFloat 32
              37:             TypeVector 36(float) 3
       38(block):             TypeStruct 37(fvec3) 37(fvec3)
              39:             TypePointer ShaderRecordBufferKHR 38(block)
              40:     39(ptr) Variable ShaderRecordBufferKHR
              41:             TypeInt 32 1
              42:     41(int) Constant 1
              43:             TypePointer ShaderRecordBufferKHR 37(fvec3)
              46:   36(float) Constant 1056964608
              47:     41(int) Constant 0
              50:   36(float) Constant 1061158912
     51(accEXT1):     28(ptr) Variable UniformConstant
              52:             TypeImage 6(int) 2D nonsampled format:R32ui
              53:             TypePointer UniformConstant 52
      54(imageu):     53(ptr) Variable UniformConstant
              55:             TypeVector 36(float) 4
              56:             TypePointer RayPayloadKHR 55(fvec4)
     57(payload):     56(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
              30:          27 Load 29(accEXT0)
              31:      6(int) Load 8(lx)
              32:      6(int) Load 16(ly)
              33:      6(int) Load 20(sx)
              34:      6(int) Load 24(sy)
              44:     43(ptr) AccessChain 40 42
              45:   37(fvec3) Load 44
              48:     43(ptr) AccessChain 40 47
              49:   37(fvec3) Load 48
                              TraceRayKHR 30 31 32 33 34 35 45 46 49 50 42
                              Return
                              FunctionEnd
