spv.MissShader.rmiss
// Module Version 10000
// Generated by (magic number): 80007
// Id's are bound by 60

                              Capability RaytracingNVX
                              Extension  "SPV_NVX_raytracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint MissNVX 4  "main" 11 14 21 24 27 30 35 38
                              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 19  "v2"
                              Name 21  "gl_WorldRayOriginNVX"
                              Name 23  "v3"
                              Name 24  "gl_WorldRayDirectionNVX"
                              Name 26  "v4"
                              Name 27  "gl_ObjectRayOriginNVX"
                              Name 29  "v5"
                              Name 30  "gl_ObjectRayDirectionNVX"
                              Name 33  "v6"
                              Name 35  "gl_RayTminNVX"
                              Name 37  "v7"
                              Name 38  "gl_RayTmaxNVX"
                              Name 42  "accNV"
                              Name 57  "localPayload"
                              Name 59  "incomingPayload"
                              Decorate 11(gl_LaunchIDNVX) BuiltIn LaunchIdNVX
                              Decorate 14(gl_LaunchSizeNVX) BuiltIn LaunchSizeNVX
                              Decorate 21(gl_WorldRayOriginNVX) BuiltIn WorldRayOriginNVX
                              Decorate 24(gl_WorldRayDirectionNVX) BuiltIn WorldRayDirectionNVX
                              Decorate 27(gl_ObjectRayOriginNVX) BuiltIn ObjectRayOriginNVX
                              Decorate 30(gl_ObjectRayDirectionNVX) BuiltIn ObjectRayDirectionNVX
                              Decorate 35(gl_RayTminNVX) BuiltIn RayTminNVX
                              Decorate 38(gl_RayTmaxNVX) BuiltIn RayTmaxNVX
                              Decorate 42(accNV) DescriptorSet 0
                              Decorate 42(accNV) Binding 0
                              Decorate 57(localPayload) Location 0
                              Decorate 59(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:             TypeFloat 32
              17:             TypeVector 16(float) 3
              18:             TypePointer Function 17(fvec3)
              20:             TypePointer Input 17(fvec3)
21(gl_WorldRayOriginNVX):     20(ptr) Variable Input
24(gl_WorldRayDirectionNVX):     20(ptr) Variable Input
27(gl_ObjectRayOriginNVX):     20(ptr) Variable Input
30(gl_ObjectRayDirectionNVX):     20(ptr) Variable Input
              32:             TypePointer Function 16(float)
              34:             TypePointer Input 16(float)
35(gl_RayTminNVX):     34(ptr) Variable Input
38(gl_RayTmaxNVX):     34(ptr) Variable Input
              40:             TypeAccelerationStructureNVX
              41:             TypePointer UniformConstant 40
       42(accNV):     41(ptr) Variable UniformConstant
              44:      6(int) Constant 0
              45:      6(int) Constant 1
              46:      6(int) Constant 2
              47:      6(int) Constant 3
              48:   16(float) Constant 1056964608
              49:   17(fvec3) ConstantComposite 48 48 48
              50:   16(float) Constant 1065353216
              51:   17(fvec3) ConstantComposite 50 50 50
              52:   16(float) Constant 1061158912
              53:             TypeInt 32 1
              54:     53(int) Constant 1
              55:             TypeVector 16(float) 4
              56:             TypePointer RayPayloadNVX 55(fvec4)
57(localPayload):     56(ptr) Variable RayPayloadNVX
              58:             TypePointer IncomingRayPayloadNVX 55(fvec4)
59(incomingPayload):     58(ptr) Variable IncomingRayPayloadNVX
         4(main):           2 Function None 3
               5:             Label
           9(v0):      8(ptr) Variable Function
          13(v1):      8(ptr) Variable Function
          19(v2):     18(ptr) Variable Function
          23(v3):     18(ptr) Variable Function
          26(v4):     18(ptr) Variable Function
          29(v5):     18(ptr) Variable Function
          33(v6):     32(ptr) Variable Function
          37(v7):     32(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
              22:   17(fvec3) Load 21(gl_WorldRayOriginNVX)
                              Store 19(v2) 22
              25:   17(fvec3) Load 24(gl_WorldRayDirectionNVX)
                              Store 23(v3) 25
              28:   17(fvec3) Load 27(gl_ObjectRayOriginNVX)
                              Store 26(v4) 28
              31:   17(fvec3) Load 30(gl_ObjectRayDirectionNVX)
                              Store 29(v5) 31
              36:   16(float) Load 35(gl_RayTminNVX)
                              Store 33(v6) 36
              39:   16(float) Load 38(gl_RayTmaxNVX)
                              Store 37(v7) 39
              43:          40 Load 42(accNV)
                              TraceNVX 43 44 45 46 47 44 49 48 51 52 54
                              Return
                              FunctionEnd
