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

                              Capability RayTracingNV
                              Extension  "SPV_NV_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint MissKHR 4  "main" 11 14 21 24 27 30 35 38
                              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 19  "v2"
                              Name 21  "gl_WorldRayOriginNV"
                              Name 23  "v3"
                              Name 24  "gl_WorldRayDirectionNV"
                              Name 26  "v4"
                              Name 27  "gl_ObjectRayOriginNV"
                              Name 29  "v5"
                              Name 30  "gl_ObjectRayDirectionNV"
                              Name 33  "v6"
                              Name 35  "gl_RayTminNV"
                              Name 37  "v7"
                              Name 38  "gl_RayTmaxNV"
                              Name 42  "accNV"
                              Name 57  "localPayload"
                              Name 59  "incomingPayload"
                              Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR
                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
                              Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR
                              Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR
                              Decorate 27(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR
                              Decorate 30(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR
                              Decorate 35(gl_RayTminNV) BuiltIn RayTminKHR
                              Decorate 38(gl_RayTmaxNV) BuiltIn RayTmaxKHR
                              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) 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:             TypeFloat 32
              17:             TypeVector 16(float) 3
              18:             TypePointer Function 17(fvec3)
              20:             TypePointer Input 17(fvec3)
21(gl_WorldRayOriginNV):     20(ptr) Variable Input
24(gl_WorldRayDirectionNV):     20(ptr) Variable Input
27(gl_ObjectRayOriginNV):     20(ptr) Variable Input
30(gl_ObjectRayDirectionNV):     20(ptr) Variable Input
              32:             TypePointer Function 16(float)
              34:             TypePointer Input 16(float)
35(gl_RayTminNV):     34(ptr) Variable Input
38(gl_RayTmaxNV):     34(ptr) Variable Input
              40:             TypeAccelerationStructureKHR
              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 RayPayloadKHR 55(fvec4)
57(localPayload):     56(ptr) Variable RayPayloadKHR
              58:             TypePointer IncomingRayPayloadKHR 55(fvec4)
59(incomingPayload):     58(ptr) Variable IncomingRayPayloadKHR
         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(ivec3) Load 11(gl_LaunchIDNV)
                              Store 9(v0) 12
              15:    7(ivec3) Load 14(gl_LaunchSizeNV)
                              Store 13(v1) 15
              22:   17(fvec3) Load 21(gl_WorldRayOriginNV)
                              Store 19(v2) 22
              25:   17(fvec3) Load 24(gl_WorldRayDirectionNV)
                              Store 23(v3) 25
              28:   17(fvec3) Load 27(gl_ObjectRayOriginNV)
                              Store 26(v4) 28
              31:   17(fvec3) Load 30(gl_ObjectRayDirectionNV)
                              Store 29(v5) 31
              36:   16(float) Load 35(gl_RayTminNV)
                              Store 33(v6) 36
              39:   16(float) Load 38(gl_RayTmaxNV)
                              Store 37(v7) 39
              43:          40 Load 42(accNV)
                              TraceRayKHR 43 44 45 46 47 44 49 48 51 52 54
                              Return
                              FunctionEnd
