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

                              Capability RayTracingNV
                              Extension  "SPV_NV_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint MissNV 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 LaunchIdNV
                              Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeNV
                              Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginNV
                              Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionNV
                              Decorate 27(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginNV
                              Decorate 30(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionNV
                              Decorate 35(gl_RayTminNV) BuiltIn RayTminNV
                              Decorate 38(gl_RayTmaxNV) BuiltIn RayTmaxNV
                              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:             TypeAccelerationStructureNV
              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 RayPayloadNV 55(fvec4)
57(localPayload):     56(ptr) Variable RayPayloadNV
              58:             TypePointer IncomingRayPayloadNV 55(fvec4)
59(incomingPayload):     58(ptr) Variable IncomingRayPayloadNV
         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)
                              TraceNV 43 44 45 46 47 44 49 48 51 52 54
                              Return
                              FunctionEnd
