spv.ext.RayCallable.rcall
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 30

                              Capability RayTracingKHR
                              Extension  "SPV_KHR_ray_tracing"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint CallableKHR 4  "main" 11 14 18 29
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_tracing"
                              Name 4  "main"
                              Name 9  "id"
                              Name 11  "gl_LaunchIDEXT"
                              Name 13  "size"
                              Name 14  "gl_LaunchSizeEXT"
                              Name 16  "dataBlock"
                              MemberName 16(dataBlock) 0  "data1"
                              Name 18  ""
                              Name 29  "data0"
                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
                              Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
                              Decorate 16(dataBlock) Block
               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(dataBlock):             TypeStruct 6(int)
              17:             TypePointer IncomingCallableDataKHR 16(dataBlock)
              18:     17(ptr) Variable IncomingCallableDataKHR
              19:             TypeInt 32 1
              20:     19(int) Constant 0
              21:      6(int) Constant 256
              22:             TypePointer IncomingCallableDataKHR 6(int)
              24:      6(int) Constant 2
              25:     19(int) Constant 1
              26:             TypeFloat 32
              27:             TypeVector 26(float) 4
              28:             TypePointer CallableDataKHR 27(fvec4)
       29(data0):     28(ptr) Variable CallableDataKHR
         4(main):           2 Function None 3
               5:             Label
           9(id):      8(ptr) Variable Function
        13(size):      8(ptr) Variable Function
              12:    7(ivec3) Load 11(gl_LaunchIDEXT)
                              Store 9(id) 12
              15:    7(ivec3) Load 14(gl_LaunchSizeEXT)
                              Store 13(size) 15
              23:     22(ptr) AccessChain 18 20
                              Store 23 21
                              ExecuteCallableKHR 24 18
                              Return
                              FunctionEnd
