spv.nv.dmm-allops.rchit
// Module Version 10400
// Generated by (magic number): 8000b
// Id's are bound by 77

                              Capability RayTracingKHR
                              Capability CapabilityRayTracingDisplacementMicromapNV
                              Extension  "SPV_KHR_ray_tracing"
                              Extension  "SPV_NV_displacement_micromap"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint ClosestHitKHR 4  "main" 12 18 40 59 64 67 76
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_query"
                              SourceExtension  "GL_EXT_ray_tracing"
                              SourceExtension  "GL_NV_displacement_micromap"
                              Name 4  "main"
                              Name 10  "block"
                              MemberName 10(block) 0  "op_pos"
                              MemberName 10(block) 1  "op_bary"
                              MemberName 10(block) 2  "op_hit"
                              Name 12  ""
                              Name 18  "gl_HitMicroTriangleVertexPositionsNV"
                              Name 40  "gl_HitMicroTriangleVertexBarycentricsNV"
                              Name 59  "gl_HitKindEXT"
                              Name 64  "gl_HitKindFrontFacingMicroTriangleNV"
                              Name 67  "gl_HitKindBackFacingMicroTriangleNV"
                              Name 76  "as"
                              MemberDecorate 10(block) 0 Offset 0
                              MemberDecorate 10(block) 1 Offset 16
                              MemberDecorate 10(block) 2 Offset 24
                              Decorate 10(block) Block
                              Decorate 12 DescriptorSet 0
                              Decorate 12 Binding 0
                              Decorate 18(gl_HitMicroTriangleVertexPositionsNV) BuiltIn HitMicroTriangleVertexPositionsNV
                              Decorate 40(gl_HitMicroTriangleVertexBarycentricsNV) BuiltIn HitMicroTriangleVertexBarycentricsNV
                              Decorate 59(gl_HitKindEXT) BuiltIn HitKindKHR
                              Decorate 64(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV
                              Decorate 67(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV
                              Decorate 76(as) DescriptorSet 0
                              Decorate 76(as) Binding 1
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 3
               8:             TypeVector 6(float) 2
               9:             TypeInt 32 0
       10(block):             TypeStruct 7(fvec3) 8(fvec2) 9(int)
              11:             TypePointer StorageBuffer 10(block)
              12:     11(ptr) Variable StorageBuffer
              13:             TypeInt 32 1
              14:     13(int) Constant 0
              15:      9(int) Constant 3
              16:             TypeArray 7(fvec3) 15
              17:             TypePointer Input 16
18(gl_HitMicroTriangleVertexPositionsNV):     17(ptr) Variable Input
              19:             TypePointer Input 7(fvec3)
              22:             TypePointer StorageBuffer 7(fvec3)
              24:     13(int) Constant 1
              31:     13(int) Constant 2
              38:             TypeArray 8(fvec2) 15
              39:             TypePointer Input 38
40(gl_HitMicroTriangleVertexBarycentricsNV):     39(ptr) Variable Input
              41:             TypePointer Input 8(fvec2)
              44:             TypePointer StorageBuffer 8(fvec2)
              58:             TypePointer Input 9(int)
59(gl_HitKindEXT):     58(ptr) Variable Input
              61:             TypePointer StorageBuffer 9(int)
              63:      9(int) Constant 255
64(gl_HitKindFrontFacingMicroTriangleNV):     58(ptr) Variable Input
67(gl_HitKindBackFacingMicroTriangleNV):     58(ptr) Variable Input
              74:             TypeAccelerationStructureKHR
              75:             TypePointer UniformConstant 74
          76(as):     75(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
              20:     19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 14
              21:    7(fvec3) Load 20
              23:     22(ptr) AccessChain 12 14
                              Store 23 21
              25:     19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 24
              26:    7(fvec3) Load 25
              27:     22(ptr) AccessChain 12 14
              28:    7(fvec3) Load 27
              29:    7(fvec3) FAdd 28 26
              30:     22(ptr) AccessChain 12 14
                              Store 30 29
              32:     19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 31
              33:    7(fvec3) Load 32
              34:     22(ptr) AccessChain 12 14
              35:    7(fvec3) Load 34
              36:    7(fvec3) FAdd 35 33
              37:     22(ptr) AccessChain 12 14
                              Store 37 36
              42:     41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 14
              43:    8(fvec2) Load 42
              45:     44(ptr) AccessChain 12 24
                              Store 45 43
              46:     41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 24
              47:    8(fvec2) Load 46
              48:     44(ptr) AccessChain 12 24
              49:    8(fvec2) Load 48
              50:    8(fvec2) FAdd 49 47
              51:     44(ptr) AccessChain 12 24
                              Store 51 50
              52:     41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 31
              53:    8(fvec2) Load 52
              54:     44(ptr) AccessChain 12 24
              55:    8(fvec2) Load 54
              56:    8(fvec2) FAdd 55 53
              57:     44(ptr) AccessChain 12 24
                              Store 57 56
              60:      9(int) Load 59(gl_HitKindEXT)
              62:     61(ptr) AccessChain 12 31
                              Store 62 60
              65:      9(int) Load 64(gl_HitKindFrontFacingMicroTriangleNV)
              66:      9(int) BitwiseOr 63 65
              68:      9(int) Load 67(gl_HitKindBackFacingMicroTriangleNV)
              69:      9(int) BitwiseOr 66 68
              70:     61(ptr) AccessChain 12 31
              71:      9(int) Load 70
              72:      9(int) BitwiseAnd 71 69
              73:     61(ptr) AccessChain 12 31
                              Store 73 72
                              Return
                              FunctionEnd
