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

                              Capability Shader
                              Capability Sampled1D
                              Capability SampledBuffer
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 19
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "@main("
                              Name 13  "g_sSamp2_amb"
                              Name 19  "@entryPointOutput"
                              Name 21  "g_sSamp"
                              Name 24  "g_tTex1df4"
                              Name 25  "$Global"
                              MemberName 25($Global) 0  "floatval_amb"
                              Name 27  ""
                              Name 30  "floatbuff"
                              Decorate 13(g_sSamp2_amb) DescriptorSet 3
                              Decorate 13(g_sSamp2_amb) Binding 10
                              Decorate 19(@entryPointOutput) Location 0
                              Decorate 21(g_sSamp) DescriptorSet 3
                              Decorate 21(g_sSamp) Binding 11
                              Decorate 24(g_tTex1df4) DescriptorSet 3
                              Decorate 24(g_tTex1df4) Binding 20
                              MemberDecorate 25($Global) 0 Offset 0
                              Decorate 25($Global) Block
                              Decorate 27 DescriptorSet 3
                              Decorate 27 Binding 0
                              Decorate 30(floatbuff) DescriptorSet 3
                              Decorate 30(floatbuff) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              11:             TypeSampler
              12:             TypePointer UniformConstant 11
13(g_sSamp2_amb):     12(ptr) Variable UniformConstant
              14:    6(float) Constant 0
              15:    7(fvec4) ConstantComposite 14 14 14 14
              18:             TypePointer Output 7(fvec4)
19(@entryPointOutput):     18(ptr) Variable Output
     21(g_sSamp):     12(ptr) Variable UniformConstant
              22:             TypeImage 6(float) 1D sampled format:Unknown
              23:             TypePointer UniformConstant 22
  24(g_tTex1df4):     23(ptr) Variable UniformConstant
     25($Global):             TypeStruct 6(float)
              26:             TypePointer Uniform 25($Global)
              27:     26(ptr) Variable Uniform
              28:             TypeImage 6(float) Buffer sampled format:R32f
              29:             TypePointer UniformConstant 28
   30(floatbuff):     29(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
              20:    7(fvec4) FunctionCall 9(@main()
                              Store 19(@entryPointOutput) 20
                              Return
                              FunctionEnd
       9(@main():    7(fvec4) Function None 8
              10:             Label
                              ReturnValue 15
                              FunctionEnd
