hlsl.flattenOpaqueInit.vert
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 139

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 80
                              Source HLSL 500
                              Name 4  "main"
                              Name 43  "g_tInputTexture_sampler"
                              Name 47  "g_tInputTexture"
                              Name 80  "@entryPointOutput"
                              Decorate 43(g_tInputTexture_sampler) DescriptorSet 0
                              Decorate 43(g_tInputTexture_sampler) Binding 0
                              Decorate 47(g_tInputTexture) DescriptorSet 0
                              Decorate 47(g_tInputTexture) Binding 1
                              Decorate 80(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeSampler
               7:             TypeFloat 32
               8:             TypeImage 7(float) 2D sampled format:Unknown
              11:             TypeVector 7(float) 4
              31:             TypeSampledImage 8
              33:             TypeVector 7(float) 2
              34:    7(float) Constant 1050253722
              35:    7(float) Constant 1053609165
              36:   33(fvec2) ConstantComposite 34 35
              37:    7(float) Constant 0
              42:             TypePointer UniformConstant 6
43(g_tInputTexture_sampler):     42(ptr) Variable UniformConstant
              46:             TypePointer UniformConstant 8
47(g_tInputTexture):     46(ptr) Variable UniformConstant
              79:             TypePointer Output 11(fvec4)
80(@entryPointOutput):     79(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              91:           6 Load 43(g_tInputTexture_sampler)
              92:           8 Load 47(g_tInputTexture)
             113:          31 SampledImage 92 91
             114:   11(fvec4) ImageSampleExplicitLod 113 36 Lod 37
             118:           6 Load 43(g_tInputTexture_sampler)
             120:           8 Load 47(g_tInputTexture)
             129:          31 SampledImage 120 118
             130:   11(fvec4) ImageSampleExplicitLod 129 36 Lod 37
             100:   11(fvec4) FAdd 114 130
             137:          31 SampledImage 92 91
             138:   11(fvec4) ImageSampleExplicitLod 137 36 Lod 37
             105:   11(fvec4) FAdd 100 138
                              Store 80(@entryPointOutput) 105
                              Return
                              FunctionEnd
