spv.ext.IntersectShader.rint
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 81

                              Capability RayTracingProvisionalKHR
                              Extension  "SPV_KHR_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint IntersectionKHR 4  "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 65 69 73
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_tracing"
                              Name 4  "main"
                              Name 9  "v0"
                              Name 11  "gl_LaunchIDEXT"
                              Name 13  "v1"
                              Name 14  "gl_LaunchSizeEXT"
                              Name 18  "v2"
                              Name 20  "gl_PrimitiveID"
                              Name 22  "v3"
                              Name 23  "gl_InstanceID"
                              Name 25  "v4"
                              Name 26  "gl_InstanceCustomIndexEXT"
                              Name 31  "v5"
                              Name 33  "gl_WorldRayOriginEXT"
                              Name 35  "v6"
                              Name 36  "gl_WorldRayDirectionEXT"
                              Name 38  "v7"
                              Name 39  "gl_ObjectRayOriginEXT"
                              Name 41  "v8"
                              Name 42  "gl_ObjectRayDirectionEXT"
                              Name 45  "v9"
                              Name 47  "gl_RayTminEXT"
                              Name 49  "v10"
                              Name 50  "gl_RayTmaxEXT"
                              Name 54  "v11"
                              Name 56  "gl_ObjectToWorldEXT"
                              Name 58  "v12"
                              Name 59  "gl_WorldToObjectEXT"
                              Name 64  "v13"
                              Name 65  "gl_ObjectToWorld3x4EXT"
                              Name 68  "v14"
                              Name 69  "gl_WorldToObject3x4EXT"
                              Name 73  "iAttr"
                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                              Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                              Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
                              Decorate 23(gl_InstanceID) BuiltIn InstanceId
                              Decorate 26(gl_InstanceCustomIndexEXT) BuiltIn InstanceCustomIndexKHR
                              Decorate 33(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
                              Decorate 36(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR
                              Decorate 39(gl_ObjectRayOriginEXT) BuiltIn ObjectRayOriginKHR
                              Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR
                              Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR
                              Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
                              Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR
                              Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
                              Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
                              Decorate 69(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
               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_LaunchIDEXT):     10(ptr) Variable Input
14(gl_LaunchSizeEXT):     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_InstanceCustomIndexEXT):     19(ptr) Variable Input
              28:             TypeFloat 32
              29:             TypeVector 28(float) 3
              30:             TypePointer Function 29(fvec3)
              32:             TypePointer Input 29(fvec3)
33(gl_WorldRayOriginEXT):     32(ptr) Variable Input
36(gl_WorldRayDirectionEXT):     32(ptr) Variable Input
39(gl_ObjectRayOriginEXT):     32(ptr) Variable Input
42(gl_ObjectRayDirectionEXT):     32(ptr) Variable Input
              44:             TypePointer Function 28(float)
              46:             TypePointer Input 28(float)
47(gl_RayTminEXT):     46(ptr) Variable Input
50(gl_RayTmaxEXT):     46(ptr) Variable Input
              52:             TypeMatrix 29(fvec3) 4
              53:             TypePointer Function 52
              55:             TypePointer Input 52
56(gl_ObjectToWorldEXT):     55(ptr) Variable Input
59(gl_WorldToObjectEXT):     55(ptr) Variable Input
              61:             TypeVector 28(float) 4
              62:             TypeMatrix 61(fvec4) 3
              63:             TypePointer Function 62
65(gl_ObjectToWorld3x4EXT):     55(ptr) Variable Input
69(gl_WorldToObject3x4EXT):     55(ptr) Variable Input
              72:             TypePointer HitAttributeKHR 61(fvec4)
       73(iAttr):     72(ptr) Variable HitAttributeKHR
              74:   28(float) Constant 1056964608
              75:   28(float) Constant 0
              76:   28(float) Constant 1065353216
              77:   61(fvec4) ConstantComposite 74 74 75 76
              78:      6(int) Constant 1
              79:             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
         64(v13):     63(ptr) Variable Function
         68(v14):     63(ptr) Variable Function
              12:    7(ivec3) Load 11(gl_LaunchIDEXT)
                              Store 9(v0) 12
              15:    7(ivec3) Load 14(gl_LaunchSizeEXT)
                              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_InstanceCustomIndexEXT)
                              Store 25(v4) 27
              34:   29(fvec3) Load 33(gl_WorldRayOriginEXT)
                              Store 31(v5) 34
              37:   29(fvec3) Load 36(gl_WorldRayDirectionEXT)
                              Store 35(v6) 37
              40:   29(fvec3) Load 39(gl_ObjectRayOriginEXT)
                              Store 38(v7) 40
              43:   29(fvec3) Load 42(gl_ObjectRayDirectionEXT)
                              Store 41(v8) 43
              48:   28(float) Load 47(gl_RayTminEXT)
                              Store 45(v9) 48
              51:   28(float) Load 50(gl_RayTmaxEXT)
                              Store 49(v10) 51
              57:          52 Load 56(gl_ObjectToWorldEXT)
                              Store 54(v11) 57
              60:          52 Load 59(gl_WorldToObjectEXT)
                              Store 58(v12) 60
              66:          52 Load 65(gl_ObjectToWorld3x4EXT)
              67:          62 Transpose 66
                              Store 64(v13) 67
              70:          52 Load 69(gl_WorldToObject3x4EXT)
              71:          62 Transpose 70
                              Store 68(v14) 71
                              Store 73(iAttr) 77
              80:    79(bool) ReportIntersectionKHR 74 78
                              Return
                              FunctionEnd
