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

                              Capability RayTracingNV
                              Extension  "SPV_NV_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationNV 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 LaunchIdNV
                              Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
                              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 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:             TypeAccelerationStructureNV
              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 ShaderRecordBufferNV 37(block)
              39:     38(ptr) Variable ShaderRecordBufferNV
              40:             TypeInt 32 1
              41:     40(int) Constant 1
              42:             TypePointer ShaderRecordBufferNV 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 RayPayloadNV 51(fvec4)
     53(payload):     52(ptr) Variable RayPayloadNV
         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
