spv.register.autoassign.rangetest.frag
INTERNAL ERROR: mapped binding out of range: g_tSamp
INTERNAL ERROR: mapped binding out of range: g_tScene

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 52

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main" 49
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 8  "PS_OUTPUT"
                              MemberName 8(PS_OUTPUT) 0  "Color"
                              Name 12  "@main(struct-PS_OUTPUT-vf41;"
                              Name 11  "psout"
                              Name 21  "g_tScene"
                              Name 27  "g_tSamp"
                              Name 44  "psout"
                              Name 45  "param"
                              Name 49  "psout.Color"
                              Decorate 21(g_tScene) DescriptorSet 0
                              Decorate 21(g_tScene) Binding 5
                              Decorate 27(g_tSamp) DescriptorSet 0
                              Decorate 27(g_tSamp) Binding 5
                              Decorate 49(psout.Color) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
    8(PS_OUTPUT):             TypeStruct 7(fvec4)
               9:             TypePointer Function 8(PS_OUTPUT)
              10:             TypeFunction 2 9(ptr)
              14:             TypeInt 32 1
              15:     14(int) Constant 0
              16:             TypeImage 6(float) 2D sampled format:Unknown
              17:             TypeInt 32 0
              18:     17(int) Constant 2
              19:             TypeArray 16 18
              20:             TypePointer UniformConstant 19
    21(g_tScene):     20(ptr) Variable UniformConstant
              22:             TypePointer UniformConstant 16
              25:             TypeSampler
              26:             TypePointer UniformConstant 25
     27(g_tSamp):     26(ptr) Variable UniformConstant
              29:             TypeSampledImage 16
              31:             TypeVector 6(float) 2
              32:    6(float) Constant 1050253722
              33:   31(fvec2) ConstantComposite 32 32
              35:     14(int) Constant 1
              42:             TypePointer Function 7(fvec4)
              48:             TypePointer Output 7(fvec4)
 49(psout.Color):     48(ptr) Variable Output
         4(main):           2 Function None 3
               5:             Label
       44(psout):      9(ptr) Variable Function
       45(param):      9(ptr) Variable Function
              46:           2 FunctionCall 12(@main(struct-PS_OUTPUT-vf41;) 45(param)
              47:8(PS_OUTPUT) Load 45(param)
                              Store 44(psout) 47
              50:     42(ptr) AccessChain 44(psout) 15
              51:    7(fvec4) Load 50
                              Store 49(psout.Color) 51
                              Return
                              FunctionEnd
12(@main(struct-PS_OUTPUT-vf41;):           2 Function None 10
       11(psout):      9(ptr) FunctionParameter
              13:             Label
              23:     22(ptr) AccessChain 21(g_tScene) 15
              24:          16 Load 23
              28:          25 Load 27(g_tSamp)
              30:          29 SampledImage 24 28
              34:    7(fvec4) ImageSampleImplicitLod 30 33
              36:     22(ptr) AccessChain 21(g_tScene) 35
              37:          16 Load 36
              38:          25 Load 27(g_tSamp)
              39:          29 SampledImage 37 38
              40:    7(fvec4) ImageSampleImplicitLod 39 33
              41:    7(fvec4) FAdd 34 40
              43:     42(ptr) AccessChain 11(psout) 15
                              Store 43 41
                              Return
                              FunctionEnd
