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

                              Capability RayQueryProvisionalKHR
                              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:             TypeRayQueryProvisionalKHR
              11:             TypePointer Function 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)
              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
    89(rayQuery):     11(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
