rayQuery-initialize.rgen
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 103

                              Capability RayQueryKHR
                              Capability RayTracingNV
                              Extension  "SPV_KHR_ray_query"
                              Extension  "SPV_NV_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationKHR 4  "main" 23 28
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_query"
                              SourceExtension  "GL_NV_ray_tracing"
                              Name 4  "main"
                              Name 8  "launchIndex("
                              Name 14  "Ray"
                              MemberName 14(Ray) 0  "pos"
                              MemberName 14(Ray) 1  "tmin"
                              MemberName 14(Ray) 2  "dir"
                              MemberName 14(Ray) 3  "tmax"
                              Name 19  "doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;"
                              Name 17  "rayQuery"
                              Name 18  "ray"
                              Name 23  "gl_LaunchIDNV"
                              Name 28  "gl_LaunchSizeNV"
                              Name 50  "rtas"
                              Name 69  "index"
                              Name 71  "ray"
                              Name 72  "Ray"
                              MemberName 72(Ray) 0  "pos"
                              MemberName 72(Ray) 1  "tmin"
                              MemberName 72(Ray) 2  "dir"
                              MemberName 72(Ray) 3  "tmax"
                              Name 74  "Rays"
                              MemberName 74(Rays) 0  "rays"
                              Name 76  ""
                              Name 89  "rayQuery"
                              Name 90  "param"
                              Decorate 23(gl_LaunchIDNV) BuiltIn LaunchIdKHR
                              Decorate 28(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
                              Decorate 50(rtas) DescriptorSet 0
                              Decorate 50(rtas) Binding 0
                              MemberDecorate 72(Ray) 0 Offset 0
                              MemberDecorate 72(Ray) 1 Offset 12
                              MemberDecorate 72(Ray) 2 Offset 16
                              MemberDecorate 72(Ray) 3 Offset 28
                              Decorate 73 ArrayStride 32
                              MemberDecorate 74(Rays) 0 Offset 0
                              Decorate 74(Rays) BufferBlock
                              Decorate 76 DescriptorSet 0
                              Decorate 76 Binding 2
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeFunction 6(int)
              10:             TypeRayQueryKHR
              11:             TypePointer Private 10
              12:             TypeFloat 32
              13:             TypeVector 12(float) 3
         14(Ray):             TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
              15:             TypePointer Function 14(Ray)
              16:             TypeFunction 2 11(ptr) 15(ptr)
              21:             TypeVector 6(int) 3
              22:             TypePointer Input 21(ivec3)
23(gl_LaunchIDNV):     22(ptr) Variable Input
              24:      6(int) Constant 2
              25:             TypePointer Input 6(int)
28(gl_LaunchSizeNV):     22(ptr) Variable Input
              29:      6(int) Constant 0
              33:      6(int) Constant 1
              48:             TypeAccelerationStructureKHR
              49:             TypePointer UniformConstant 48
        50(rtas):     49(ptr) Variable UniformConstant
              52:      6(int) Constant 16
              53:             TypeInt 32 1
              54:     53(int) Constant 0
              55:             TypePointer Function 13(fvec3)
              58:     53(int) Constant 1
              59:             TypePointer Function 12(float)
              62:     53(int) Constant 2
              65:     53(int) Constant 3
              68:             TypePointer Function 6(int)
         72(Ray):             TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float)
              73:             TypeRuntimeArray 72(Ray)
        74(Rays):             TypeStruct 73
              75:             TypePointer Uniform 74(Rays)
              76:     75(ptr) Variable Uniform
              78:             TypePointer Uniform 72(Ray)
    89(rayQuery):     11(ptr) Variable Private
              94:      6(int) Constant 32
         4(main):           2 Function None 3
               5:             Label
       69(index):     68(ptr) Variable Function
         71(ray):     15(ptr) Variable Function
       90(param):     15(ptr) Variable Function
              70:      6(int) FunctionCall 8(launchIndex()
                              Store 69(index) 70
              77:      6(int) Load 69(index)
              79:     78(ptr) AccessChain 76 54 77
              80:     72(Ray) Load 79
              81:   13(fvec3) CompositeExtract 80 0
              82:     55(ptr) AccessChain 71(ray) 54
                              Store 82 81
              83:   12(float) CompositeExtract 80 1
              84:     59(ptr) AccessChain 71(ray) 58
                              Store 84 83
              85:   13(fvec3) CompositeExtract 80 2
              86:     55(ptr) AccessChain 71(ray) 62
                              Store 86 85
              87:   12(float) CompositeExtract 80 3
              88:     59(ptr) AccessChain 71(ray) 65
                              Store 88 87
              91:     14(Ray) Load 71(ray)
                              Store 90(param) 91
              92:           2 FunctionCall 19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;) 89(rayQuery) 90(param)
              93:          48 Load 50(rtas)
              95:     55(ptr) AccessChain 71(ray) 54
              96:   13(fvec3) Load 95
              97:     59(ptr) AccessChain 71(ray) 58
              98:   12(float) Load 97
              99:     55(ptr) AccessChain 71(ray) 62
             100:   13(fvec3) Load 99
             101:     59(ptr) AccessChain 71(ray) 65
             102:   12(float) Load 101
                              RayQueryInitializeKHR 89(rayQuery) 93 33 94 96 98 100 102
                              Return
                              FunctionEnd
 8(launchIndex():      6(int) Function None 7
               9:             Label
              26:     25(ptr) AccessChain 23(gl_LaunchIDNV) 24
              27:      6(int) Load 26
              30:     25(ptr) AccessChain 28(gl_LaunchSizeNV) 29
              31:      6(int) Load 30
              32:      6(int) IMul 27 31
              34:     25(ptr) AccessChain 28(gl_LaunchSizeNV) 33
              35:      6(int) Load 34
              36:      6(int) IMul 32 35
              37:     25(ptr) AccessChain 23(gl_LaunchIDNV) 33
              38:      6(int) Load 37
              39:     25(ptr) AccessChain 28(gl_LaunchSizeNV) 29
              40:      6(int) Load 39
              41:      6(int) IMul 38 40
              42:      6(int) IAdd 36 41
              43:     25(ptr) AccessChain 23(gl_LaunchIDNV) 29
              44:      6(int) Load 43
              45:      6(int) IAdd 42 44
                              ReturnValue 45
                              FunctionEnd
19(doInitialize(rq1;struct-Ray-vf3-f1-vf3-f11;):           2 Function None 16
    17(rayQuery):     11(ptr) FunctionParameter
         18(ray):     15(ptr) FunctionParameter
              20:             Label
              51:          48 Load 50(rtas)
              56:     55(ptr) AccessChain 18(ray) 54
              57:   13(fvec3) Load 56
              60:     59(ptr) AccessChain 18(ray) 58
              61:   12(float) Load 60
              63:     55(ptr) AccessChain 18(ray) 62
              64:   13(fvec3) Load 63
              66:     59(ptr) AccessChain 18(ray) 65
              67:   12(float) Load 66
                              RayQueryInitializeKHR 17(rayQuery) 51 29 52 57 61 64 67
                              Return
                              FunctionEnd
