spv.RayGenShader11.rgen
// Module Version 10300
// Generated by (magic number): 8000a
// Id's are bound by 53

                              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  "accNV"
                              Name 37  "block"
                              MemberName 37(block) 0  "dir"
                              MemberName 37(block) 1  "origin"
                              Name 39  ""
                              Name 52  "payload"
                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
                              Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
                              Decorate 29(accNV) DescriptorSet 0
                              Decorate 29(accNV) Binding 0
                              MemberDecorate 37(block) 0 Offset 0
                              MemberDecorate 37(block) 1 Offset 16
                              Decorate 37(block) Block
                              Decorate 39 DescriptorSet 0
                              Decorate 39 Binding 1
                              Decorate 52(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(accNV):     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:             TypeVector 35(float) 4
              51:             TypePointer RayPayloadKHR 50(fvec4)
     52(payload):     51(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(accNV)
              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
