spv.AnyHitShader.rahit
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 81

                              Capability RaytracingNVX
                              Extension  "SPV_NVX_raytracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint AnyHitNVX 4  "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67
                              Source GLSL 460
                              SourceExtension  "GL_NVX_raytracing"
                              Name 4  "main"
                              Name 9  "v0"
                              Name 11  "gl_LaunchIDNVX"
                              Name 13  "v1"
                              Name 14  "gl_LaunchSizeNVX"
                              Name 18  "v2"
                              Name 20  "gl_PrimitiveID"
                              Name 22  "v3"
                              Name 23  "gl_InstanceID"
                              Name 25  "v4"
                              Name 26  "gl_InstanceCustomIndexNVX"
                              Name 31  "v5"
                              Name 33  "gl_WorldRayOriginNVX"
                              Name 35  "v6"
                              Name 36  "gl_WorldRayDirectionNVX"
                              Name 38  "v7"
                              Name 39  "gl_ObjectRayOriginNVX"
                              Name 41  "v8"
                              Name 42  "gl_ObjectRayDirectionNVX"
                              Name 45  "v9"
                              Name 47  "gl_RayTminNVX"
                              Name 49  "v10"
                              Name 50  "gl_RayTmaxNVX"
                              Name 52  "v11"
                              Name 53  "gl_HitTNVX"
                              Name 56  "v12"
                              Name 58  "gl_HitKindNVX"
                              Name 62  "v13"
                              Name 64  "gl_ObjectToWorldNVX"
                              Name 66  "v14"
                              Name 67  "gl_WorldToObjectNVX"
                              Name 71  "incomingPayload"
                              Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX
                              Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX
                              Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
                              Decorate 23(gl_InstanceID) BuiltIn InstanceId
                              Decorate 26(gl_InstanceCustomIndexNVX) BuiltIn InstanceCustomIndexNVX
                              Decorate 33(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX
                              Decorate 36(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX
                              Decorate 39(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX
                              Decorate 42(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX
                              Decorate 47(gl_RayTminNVX) BuiltIn RayTminNVX
                              Decorate 50(gl_RayTmaxNVX) BuiltIn RayTmaxNVX
                              Decorate 53(gl_HitTNVX) BuiltIn HitTNVX
                              Decorate 58(gl_HitKindNVX) BuiltIn HitKindNVX
                              Decorate 64(gl_ObjectToWorldNVX) BuiltIn ObjectToWorldNVX
                              Decorate 67(gl_WorldToObjectNVX) BuiltIn WorldToObjectNVX
                              Decorate 71(incomingPayload) Location 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeInt 32 0
               7:             TypeVector 6(int) 2
               8:             TypePointer Function 7(ivec2)
              10:             TypePointer Input 7(ivec2)
11(gl_LaunchIDNVX):     10(ptr) Variable Input
14(gl_LaunchSizeNVX):     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_InstanceCustomIndexNVX):     19(ptr) Variable Input
              28:             TypeFloat 32
              29:             TypeVector 28(float) 3
              30:             TypePointer Function 29(fvec3)
              32:             TypePointer Input 29(fvec3)
33(gl_WorldRayOriginNVX):     32(ptr) Variable Input
36(gl_WorldRayDirectionNVX):     32(ptr) Variable Input
39(gl_ObjectRayOriginNVX):     32(ptr) Variable Input
42(gl_ObjectRayDirectionNVX):     32(ptr) Variable Input
              44:             TypePointer Function 28(float)
              46:             TypePointer Input 28(float)
47(gl_RayTminNVX):     46(ptr) Variable Input
50(gl_RayTmaxNVX):     46(ptr) Variable Input
  53(gl_HitTNVX):     46(ptr) Variable Input
              55:             TypePointer Function 6(int)
              57:             TypePointer Input 6(int)
58(gl_HitKindNVX):     57(ptr) Variable Input
              60:             TypeMatrix 29(fvec3) 4
              61:             TypePointer Function 60
              63:             TypePointer Input 60
64(gl_ObjectToWorldNVX):     63(ptr) Variable Input
67(gl_WorldToObjectNVX):     63(ptr) Variable Input
              69:             TypeVector 28(float) 4
              70:             TypePointer IncomingRayPayloadNVX 69(fvec4)
71(incomingPayload):     70(ptr) Variable IncomingRayPayloadNVX
              72:   28(float) Constant 1056964608
              73:   69(fvec4) ConstantComposite 72 72 72 72
              75:     16(int) Constant 1
              76:             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
         52(v11):     44(ptr) Variable Function
         56(v12):     55(ptr) Variable Function
         62(v13):     61(ptr) Variable Function
         66(v14):     61(ptr) Variable Function
              12:    7(ivec2) Load 11(gl_LaunchIDNVX)
                              Store 9(v0) 12
              15:    7(ivec2) Load 14(gl_LaunchSizeNVX)
                              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_InstanceCustomIndexNVX)
                              Store 25(v4) 27
              34:   29(fvec3) Load 33(gl_WorldRayOriginNVX)
                              Store 31(v5) 34
              37:   29(fvec3) Load 36(gl_WorldRayDirectionNVX)
                              Store 35(v6) 37
              40:   29(fvec3) Load 39(gl_ObjectRayOriginNVX)
                              Store 38(v7) 40
              43:   29(fvec3) Load 42(gl_ObjectRayDirectionNVX)
                              Store 41(v8) 43
              48:   28(float) Load 47(gl_RayTminNVX)
                              Store 45(v9) 48
              51:   28(float) Load 50(gl_RayTmaxNVX)
                              Store 49(v10) 51
              54:   28(float) Load 53(gl_HitTNVX)
                              Store 52(v11) 54
              59:      6(int) Load 58(gl_HitKindNVX)
                              Store 56(v12) 59
              65:          60 Load 64(gl_ObjectToWorldNVX)
                              Store 62(v13) 65
              68:          60 Load 67(gl_WorldToObjectNVX)
                              Store 66(v14) 68
                              Store 71(incomingPayload) 73
              74:     16(int) Load 18(v2)
              77:    76(bool) IEqual 74 75
                              SelectionMerge 79 None
                              BranchConditional 77 78 80
              78:               Label
                                IgnoreIntersectionNVX
                                Branch 79
              80:               Label
                                TerminateRayNVX
                                Branch 79
              79:             Label
                              Return
                              FunctionEnd
