hlsl.opaque-type-bug.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6  Function Definition: TexFunc(t21;vf3; ( temp void)
0:6    Function Parameters: 
0:6      't2D' ( const (read only) texture2D)
0:6      'RGB' ( out 3-component vector of float)
0:?     Sequence
0:7      move second child to first child ( temp 3-component vector of float)
0:7        'RGB' ( out 3-component vector of float)
0:7        Constant:
0:7          0.000000
0:7          0.000000
0:7          0.000000
0:12  Function Definition: @main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:15      Function Call: TexFunc(t21;vf3; ( temp void)
0:15        'MyTexture' (layout( binding=0) uniform texture2D)
0:15        'final_RGB' ( temp 3-component vector of float)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      Function Call: @main( ( temp void)
0:?   Linker Objects
0:?     'MyTexture' (layout( binding=0) uniform texture2D)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:6  Function Definition: TexFunc(t21;vf3; ( temp void)
0:6    Function Parameters: 
0:6      't2D' ( const (read only) texture2D)
0:6      'RGB' ( out 3-component vector of float)
0:?     Sequence
0:7      move second child to first child ( temp 3-component vector of float)
0:7        'RGB' ( out 3-component vector of float)
0:7        Constant:
0:7          0.000000
0:7          0.000000
0:7          0.000000
0:12  Function Definition: @main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:15      Function Call: TexFunc(t21;vf3; ( temp void)
0:15        'MyTexture' (layout( binding=0) uniform texture2D)
0:15        'final_RGB' ( temp 3-component vector of float)
0:12  Function Definition: main( ( temp void)
0:12    Function Parameters: 
0:?     Sequence
0:12      Function Call: @main( ( temp void)
0:?   Linker Objects
0:?     'MyTexture' (layout( binding=0) uniform texture2D)

// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 27

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "main"
                              Name 13  "TexFunc(t21;vf3;"
                              Name 11  "t2D"
                              Name 12  "RGB"
                              Name 15  "@main("
                              Name 20  "MyTexture"
                              Name 22  "final_RGB"
                              Name 23  "param"
                              Decorate 20(MyTexture) DescriptorSet 0
                              Decorate 20(MyTexture) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeImage 6(float) 2D sampled format:Unknown
               8:             TypeVector 6(float) 3
               9:             TypePointer Function 8(fvec3)
              10:             TypeFunction 2 7 9(ptr)
              17:    6(float) Constant 0
              18:    8(fvec3) ConstantComposite 17 17 17
              19:             TypePointer UniformConstant 7
   20(MyTexture):     19(ptr) Variable UniformConstant
         4(main):           2 Function None 3
               5:             Label
              26:           2 FunctionCall 15(@main()
                              Return
                              FunctionEnd
13(TexFunc(t21;vf3;):           2 Function None 10
         11(t2D):           7 FunctionParameter
         12(RGB):      9(ptr) FunctionParameter
              14:             Label
                              Store 12(RGB) 18
                              Return
                              FunctionEnd
      15(@main():           2 Function None 3
              16:             Label
   22(final_RGB):      9(ptr) Variable Function
       23(param):      9(ptr) Variable Function
              21:           7 Load 20(MyTexture)
              24:           2 FunctionCall 13(TexFunc(t21;vf3;) 21 23(param)
              25:    8(fvec3) Load 23(param)
                              Store 22(final_RGB) 25
                              Return
                              FunctionEnd
