hlsl.aliasOpaque.frag
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 87

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 62
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 47  "gss"
                              Name 51  "gtex"
                              Name 62  "@entryPointOutput"
                              Decorate 47(gss) DescriptorSet 0
                              Decorate 47(gss) Binding 0
                              Decorate 51(gtex) DescriptorSet 0
                              Decorate 51(gtex) Binding 0
                              Decorate 62(@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
              32:             TypeSampledImage 8
              34:             TypeVector 7(float) 2
              35:    7(float) Constant 1045220557
              36:    7(float) Constant 1050253722
              37:   34(fvec2) ConstantComposite 35 36
              43:             TypePointer UniformConstant 6
         47(gss):     43(ptr) Variable UniformConstant
              50:             TypePointer UniformConstant 8
        51(gtex):     50(ptr) Variable UniformConstant
              54:    7(float) Constant 1077936128
              61:             TypePointer Output 11(fvec4)
62(@entryPointOutput):     61(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
              70:           6 Load 47(gss)
              72:           8 Load 51(gtex)
              84:          32 SampledImage 72 70
              85:   11(fvec4) ImageSampleImplicitLod 84 37
              86:   11(fvec4) VectorTimesScalar 85 54
                              Store 62(@entryPointOutput) 86
                              Return
                              FunctionEnd
