spv.IntersectShader.rint
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 71

                              Capability RayTracingNV
                              Extension  "SPV_NV_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint IntersectionNV 4  "main" 11 14 20 23 26 33 36 39 42 47 50 56 59
                              Source GLSL 460
                              SourceExtension  "GL_NV_ray_tracing"
                              Name 4  "main"
                              Name 9  "v0"
                              Name 11  "gl_LaunchIDNV"
                              Name 13  "v1"
                              Name 14  "gl_LaunchSizeNV"
                              Name 18  "v2"
                              Name 20  "gl_PrimitiveID"
                              Name 22  "v3"
                              Name 23  "gl_InstanceID"
                              Name 25  "v4"
                              Name 26  "gl_InstanceCustomIndexNV"
                              Name 31  "v5"
                              Name 33  "gl_WorldRayOriginNV"
                              Name 35  "v6"
                              Name 36  "gl_WorldRayDirectionNV"
                              Name 38  "v7"
                              Name 39  "gl_ObjectRayOriginNV"
                              Name 41  "v8"
                              Name 42  "gl_ObjectRayDirectionNV"
                              Name 45  "v9"
                              Name 47  "gl_RayTminNV"
                              Name 49  "v10"
                              Name 50  "gl_RayTmaxNV"
                              Name 54  "v11"
                              Name 56  "gl_ObjectToWorldNV"
                              Name 58  "v12"
                              Name 59  "gl_WorldToObjectNV"
                              Name 63  "iAttr"
                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV
                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
                              Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
                              Decorate 23(gl_InstanceID) BuiltIn InstanceId
                              Decorate 26(gl_InstanceCustomIndexNV) BuiltIn InstanceCustomIndexNV
                              Decorate 33(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
                              Decorate 36(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
                              Decorate 39(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
                              Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
                              Decorate 47(gl_RayTminNV) BuiltIn RayTminNV
                              Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxNV
                              Decorate 56(gl_ObjectToWorldNV) BuiltIn ObjectToWorldNV
                              Decorate 59(gl_WorldToObjectNV) BuiltIn WorldToObjectNV
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 3
               8:             TypePointer Function 7(ivec3)
              10:             TypePointer Input 7(ivec3)
11(gl_LaunchIDNV):     10(ptr) Variable Input
14(gl_LaunchSizeNV):     10(ptr) Variable Input
              16:             TypeInt 32 1
              17:             TypePointer Function 16(int)
              19:             TypePointer Input 16(int)
20(gl_PrimitiveID):     19(ptr) Variable Input
23(gl_InstanceID):     19(ptr) Variable Input
26(gl_InstanceCustomIndexNV):     19(ptr) Variable Input
              28:             TypeFloat 32
              29:             TypeVector 28(float) 3
              30:             TypePointer Function 29(fvec3)
              32:             TypePointer Input 29(fvec3)
33(gl_WorldRayOriginNV):     32(ptr) Variable Input
36(gl_WorldRayDirectionNV):     32(ptr) Variable Input
39(gl_ObjectRayOriginNV):     32(ptr) Variable Input
42(gl_ObjectRayDirectionNV):     32(ptr) Variable Input
              44:             TypePointer Function 28(float)
              46:             TypePointer Input 28(float)
47(gl_RayTminNV):     46(ptr) Variable Input
50(gl_RayTmaxNV):     46(ptr) Variable Input
              52:             TypeMatrix 29(fvec3) 4
              53:             TypePointer Function 52
              55:             TypePointer Input 52
56(gl_ObjectToWorldNV):     55(ptr) Variable Input
59(gl_WorldToObjectNV):     55(ptr) Variable Input
              61:             TypeVector 28(float) 4
              62:             TypePointer HitAttributeNV 61(fvec4)
       63(iAttr):     62(ptr) Variable HitAttributeNV
              64:   28(float) Constant 1056964608
              65:   28(float) Constant 0
              66:   28(float) Constant 1065353216
              67:   61(fvec4) ConstantComposite 64 64 65 66
              68:      6(int) Constant 1
              69:             TypeBool
         4(main):           2 Function None 3
               5:             Label
           9(v0):      8(ptr) Variable Function
          13(v1):      8(ptr) Variable Function
          18(v2):     17(ptr) Variable Function
          22(v3):     17(ptr) Variable Function
          25(v4):     17(ptr) Variable Function
          31(v5):     30(ptr) Variable Function
          35(v6):     30(ptr) Variable Function
          38(v7):     30(ptr) Variable Function
          41(v8):     30(ptr) Variable Function
          45(v9):     44(ptr) Variable Function
         49(v10):     44(ptr) Variable Function
         54(v11):     53(ptr) Variable Function
         58(v12):     53(ptr) Variable Function
              12:    7(ivec3) Load 11(gl_LaunchIDNV)
                              Store 9(v0) 12
              15:    7(ivec3) Load 14(gl_LaunchSizeNV)
                              Store 13(v1) 15
              21:     16(int) Load 20(gl_PrimitiveID)
                              Store 18(v2) 21
              24:     16(int) Load 23(gl_InstanceID)
                              Store 22(v3) 24
              27:     16(int) Load 26(gl_InstanceCustomIndexNV)
                              Store 25(v4) 27
              34:   29(fvec3) Load 33(gl_WorldRayOriginNV)
                              Store 31(v5) 34
              37:   29(fvec3) Load 36(gl_WorldRayDirectionNV)
                              Store 35(v6) 37
              40:   29(fvec3) Load 39(gl_ObjectRayOriginNV)
                              Store 38(v7) 40
              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNV)
                              Store 41(v8) 43
              48:   28(float) Load 47(gl_RayTminNV)
                              Store 45(v9) 48
              51:   28(float) Load 50(gl_RayTmaxNV)
                              Store 49(v10) 51
              57:          52 Load 56(gl_ObjectToWorldNV)
                              Store 54(v11) 57
              60:          52 Load 59(gl_WorldToObjectNV)
                              Store 58(v12) 60
                              Store 63(iAttr) 67
              70:    69(bool) ReportIntersectionNV 64 68
                              Return
                              FunctionEnd
