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

                              Capability RayTracingKHR
                              Capability DisplacementMicromapNV
                              Capability CapabilityRayTracingDisplacementMicromapNV
                              Extension  "SPV_KHR_ray_tracing"
                              Extension  "SPV_NV_displacement_micromap"
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint RayGenerationKHR 4  "main" 12 17 58 61
                              Source GLSL 460
                              SourceExtension  "GL_EXT_ray_query"
                              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_hitmask"
                              Name 12  ""
                              Name 17  "as"
                              Name 58  "gl_HitKindFrontFacingMicroTriangleNV"
                              Name 61  "gl_HitKindBackFacingMicroTriangleNV"
                              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 17(as) DescriptorSet 0
                              Decorate 17(as) Binding 1
                              Decorate 58(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV
                              Decorate 61(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV
               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:             TypeAccelerationStructureKHR
              16:             TypePointer UniformConstant 15
          17(as):     16(ptr) Variable UniformConstant
              19:     13(int) Constant 1
              20:             TypeVector 13(int) 2
              21:   20(ivec2) ConstantComposite 14 14
              23:             TypePointer StorageBuffer 7(fvec3)
              26:   20(ivec2) ConstantComposite 14 19
              33:   20(ivec2) ConstantComposite 19 14
              41:             TypePointer StorageBuffer 8(fvec2)
              55:     13(int) Constant 2
              56:      9(int) Constant 255
              57:             TypePointer Input 9(int)
58(gl_HitKindFrontFacingMicroTriangleNV):     57(ptr) Variable Input
61(gl_HitKindBackFacingMicroTriangleNV):     57(ptr) Variable Input
              64:             TypePointer StorageBuffer 9(int)
         4(main):           2 Function None 3
               5:             Label
              18:          15 Load 17(as)
              22:    7(fvec3) FetchMicroTriangleVertexPositionNV 18 19 19 19 21
              24:     23(ptr) AccessChain 12 14
                              Store 24 22
              25:          15 Load 17(as)
              27:    7(fvec3) FetchMicroTriangleVertexPositionNV 25 19 19 19 26
              28:     23(ptr) AccessChain 12 14
              29:    7(fvec3) Load 28
              30:    7(fvec3) FAdd 29 27
              31:     23(ptr) AccessChain 12 14
                              Store 31 30
              32:          15 Load 17(as)
              34:    7(fvec3) FetchMicroTriangleVertexPositionNV 32 19 19 19 33
              35:     23(ptr) AccessChain 12 14
              36:    7(fvec3) Load 35
              37:    7(fvec3) FAdd 36 34
              38:     23(ptr) AccessChain 12 14
                              Store 38 37
              39:          15 Load 17(as)
              40:    8(fvec2) FetchMicroTriangleVertexBarycentricNV 39 19 19 19 21
              42:     41(ptr) AccessChain 12 19
                              Store 42 40
              43:          15 Load 17(as)
              44:    8(fvec2) FetchMicroTriangleVertexBarycentricNV 43 19 19 19 26
              45:     41(ptr) AccessChain 12 19
              46:    8(fvec2) Load 45
              47:    8(fvec2) FAdd 46 44
              48:     41(ptr) AccessChain 12 19
                              Store 48 47
              49:          15 Load 17(as)
              50:    8(fvec2) FetchMicroTriangleVertexBarycentricNV 49 19 19 19 33
              51:     41(ptr) AccessChain 12 19
              52:    8(fvec2) Load 51
              53:    8(fvec2) FAdd 52 50
              54:     41(ptr) AccessChain 12 19
                              Store 54 53
              59:      9(int) Load 58(gl_HitKindFrontFacingMicroTriangleNV)
              60:      9(int) BitwiseOr 56 59
              62:      9(int) Load 61(gl_HitKindBackFacingMicroTriangleNV)
              63:      9(int) BitwiseOr 60 62
              65:     64(ptr) AccessChain 12 55
                              Store 65 63
                              Return
                              FunctionEnd
