hlsl.flattenOpaque.frag
// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 190

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 120
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 38  "tex"
                              Name 82  "s.s2D"
                              Name 97  "s2.s2D"
                              Name 100  "s2.tex"
                              Name 120  "@entryPointOutput"
                              Decorate 38(tex) DescriptorSet 0
                              Decorate 38(tex) Binding 0
                              Decorate 82(s.s2D) DescriptorSet 0
                              Decorate 82(s.s2D) Binding 1
                              Decorate 97(s2.s2D) DescriptorSet 0
                              Decorate 97(s2.s2D) Binding 2
                              Decorate 100(s2.tex) DescriptorSet 0
                              Decorate 100(s2.tex) Binding 3
                              Decorate 120(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeSampler
               9:             TypeFloat 32
              10:             TypeVector 9(float) 4
              15:             TypeVector 9(float) 2
              22:             TypeImage 9(float) 2D sampled format:Unknown
              37:             TypePointer UniformConstant 22
         38(tex):     37(ptr) Variable UniformConstant
              45:             TypeSampledImage 22
              47:    9(float) Constant 1045220557
              48:    9(float) Constant 1050253722
              49:   15(fvec2) ConstantComposite 47 48
              81:             TypePointer UniformConstant 6
       82(s.s2D):     81(ptr) Variable UniformConstant
      97(s2.s2D):     81(ptr) Variable UniformConstant
     100(s2.tex):     37(ptr) Variable UniformConstant
             119:             TypePointer Output 10(fvec4)
120(@entryPointOutput):    119(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
             135:           6 Load 82(s.s2D)
             160:          22 Load 38(tex)
             163:          45 SampledImage 160 135
             164:   10(fvec4) ImageSampleImplicitLod 163 49
             139:           6 Load 82(s.s2D)
             167:          22 Load 38(tex)
             170:          45 SampledImage 167 139
             172:   10(fvec4) ImageSampleImplicitLod 170 49
             143:   10(fvec4) FAdd 164 172
             144:           6 Load 97(s2.s2D)
             146:          22 Load 100(s2.tex)
             179:          45 SampledImage 146 144
             180:   10(fvec4) ImageSampleImplicitLod 179 49
             150:   10(fvec4) FAdd 143 180
             151:           6 Load 97(s2.s2D)
             153:          22 Load 100(s2.tex)
             187:          45 SampledImage 153 151
             189:   10(fvec4) ImageSampleImplicitLod 187 49
             157:   10(fvec4) FAdd 150 189
                              Store 120(@entryPointOutput) 157
                              Return
                              FunctionEnd
