spv.RayGenShader.rgen
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 54

                              Capability RayTracingNV
                              Extension  "SPV_NV_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationKHR 4  "main" 11 21
                              Source GLSL 460
                              SourceExtension  "GL_NV_ray_tracing"
                              Name 4  "main"
                              Name 8  "lx"
                              Name 11  "gl_LaunchIDNV"
                              Name 16  "ly"
                              Name 20  "sx"
                              Name 21  "gl_LaunchSizeNV"
                              Name 24  "sy"
                              Name 29  "accNV0"
                              Name 37  "block"
                              MemberName 37(block) 0  "dir"
                              MemberName 37(block) 1  "origin"
                              Name 39  ""
                              Name 50  "accNV1"
                              Name 53  "payload"
                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
                              Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
                              Decorate 29(accNV0) DescriptorSet 0
                              Decorate 29(accNV0) Binding 0
                              MemberDecorate 37(block) 0 Offset 0
                              MemberDecorate 37(block) 1 Offset 16
                              Decorate 37(block) BufferBlock
                              Decorate 39 DescriptorSet 0
                              Decorate 39 Binding 2
                              Decorate 50(accNV1) DescriptorSet 0
                              Decorate 50(accNV1) Binding 1
                              Decorate 53(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_LaunchIDNV):     10(ptr) Variable Input
              12:      6(int) Constant 0
              13:             TypePointer Input 6(int)
              17:      6(int) Constant 1
21(gl_LaunchSizeNV):     10(ptr) Variable Input
              27:             TypeAccelerationStructureKHR
              28:             TypePointer UniformConstant 27
      29(accNV0):     28(ptr) Variable UniformConstant
              35:             TypeFloat 32
              36:             TypeVector 35(float) 3
       37(block):             TypeStruct 36(fvec3) 36(fvec3)
              38:             TypePointer ShaderRecordBufferKHR 37(block)
              39:     38(ptr) Variable ShaderRecordBufferKHR
              40:             TypeInt 32 1
              41:     40(int) Constant 1
              42:             TypePointer ShaderRecordBufferKHR 36(fvec3)
              45:   35(float) Constant 1056964608
              46:     40(int) Constant 0
              49:   35(float) Constant 1061158912
      50(accNV1):     28(ptr) Variable UniformConstant
              51:             TypeVector 35(float) 4
              52:             TypePointer RayPayloadKHR 51(fvec4)
     53(payload):     52(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_LaunchIDNV) 12
              15:      6(int) Load 14
                              Store 8(lx) 15
              18:     13(ptr) AccessChain 11(gl_LaunchIDNV) 17
              19:      6(int) Load 18
                              Store 16(ly) 19
              22:     13(ptr) AccessChain 21(gl_LaunchSizeNV) 12
              23:      6(int) Load 22
                              Store 20(sx) 23
              25:     13(ptr) AccessChain 21(gl_LaunchSizeNV) 17
              26:      6(int) Load 25
                              Store 24(sy) 26
              30:          27 Load 29(accNV0)
              31:      6(int) Load 8(lx)
              32:      6(int) Load 16(ly)
              33:      6(int) Load 20(sx)
              34:      6(int) Load 24(sy)
              43:     42(ptr) AccessChain 39 41
              44:   36(fvec3) Load 43
              47:     42(ptr) AccessChain 39 46
              48:   36(fvec3) Load 47
                              TraceNV 30 31 32 33 34 12 44 45 48 49 41
                              Return
                              FunctionEnd
