hlsl.swizzle.frag
Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1  Sequence
0:1    move second child to first child ( temp 4-component vector of float)
0:1      'AmbientColor' ( global 4-component vector of float)
0:?       Constant:
0:?         1.000000
0:?         0.500000
0:?         0.000000
0:?         1.000000
0:4  Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float)
0:4    Function Parameters: 
0:4      'input' ( in 4-component vector of float)
0:?     Sequence
0:5      Branch: Return with expression
0:5        component-wise multiply ( temp 4-component vector of float)
0:5          vector swizzle ( temp 4-component vector of float)
0:5            'input' ( in 4-component vector of float)
0:5            Sequence
0:5              Constant:
0:5                3 (const int)
0:5              Constant:
0:5                3 (const int)
0:5              Constant:
0:5                1 (const int)
0:5              Constant:
0:5                0 (const int)
0:5          Construct vec4 ( temp 4-component vector of float)
0:5            direct index ( temp float)
0:5              'AmbientColor' ( global 4-component vector of float)
0:5              Constant:
0:5                2 (const int)
0:4  Function Definition: ShaderFunction( ( temp void)
0:4    Function Parameters: 
0:?     Sequence
0:4      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=0) in 4-component vector of float)
0:4      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:4        Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'AmbientColor' ( global 4-component vector of float)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'input' (layout( location=0) in 4-component vector of float)


Linked fragment stage:


Shader version: 500
gl_FragCoord origin is upper left
0:? Sequence
0:1  Sequence
0:1    move second child to first child ( temp 4-component vector of float)
0:1      'AmbientColor' ( global 4-component vector of float)
0:?       Constant:
0:?         1.000000
0:?         0.500000
0:?         0.000000
0:?         1.000000
0:4  Function Definition: @ShaderFunction(vf4; ( temp 4-component vector of float)
0:4    Function Parameters: 
0:4      'input' ( in 4-component vector of float)
0:?     Sequence
0:5      Branch: Return with expression
0:5        component-wise multiply ( temp 4-component vector of float)
0:5          vector swizzle ( temp 4-component vector of float)
0:5            'input' ( in 4-component vector of float)
0:5            Sequence
0:5              Constant:
0:5                3 (const int)
0:5              Constant:
0:5                3 (const int)
0:5              Constant:
0:5                1 (const int)
0:5              Constant:
0:5                0 (const int)
0:5          Construct vec4 ( temp 4-component vector of float)
0:5            direct index ( temp float)
0:5              'AmbientColor' ( global 4-component vector of float)
0:5              Constant:
0:5                2 (const int)
0:4  Function Definition: ShaderFunction( ( temp void)
0:4    Function Parameters: 
0:?     Sequence
0:4      move second child to first child ( temp 4-component vector of float)
0:?         'input' ( temp 4-component vector of float)
0:?         'input' (layout( location=0) in 4-component vector of float)
0:4      move second child to first child ( temp 4-component vector of float)
0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:4        Function Call: @ShaderFunction(vf4; ( temp 4-component vector of float)
0:?           'input' ( temp 4-component vector of float)
0:?   Linker Objects
0:?     'AmbientColor' ( global 4-component vector of float)
0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
0:?     'input' (layout( location=0) in 4-component vector of float)

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "ShaderFunction" 32 35
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 500
                              Name 4  "ShaderFunction"
                              Name 11  "@ShaderFunction(vf4;"
                              Name 10  "input"
                              Name 14  "AmbientColor"
                              Name 30  "input"
                              Name 32  "input"
                              Name 35  "@entryPointOutput"
                              Name 36  "param"
                              Decorate 32(input) Location 0
                              Decorate 35(@entryPointOutput) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypeFunction 7(fvec4) 8(ptr)
              13:             TypePointer Private 7(fvec4)
14(AmbientColor):     13(ptr) Variable Private
              15:    6(float) Constant 1065353216
              16:    6(float) Constant 1056964608
              17:    6(float) Constant 0
              18:    7(fvec4) ConstantComposite 15 16 17 15
              21:             TypeInt 32 0
              22:     21(int) Constant 2
              23:             TypePointer Private 6(float)
              31:             TypePointer Input 7(fvec4)
       32(input):     31(ptr) Variable Input
              34:             TypePointer Output 7(fvec4)
35(@entryPointOutput):     34(ptr) Variable Output
4(ShaderFunction):           2 Function None 3
               5:             Label
       30(input):      8(ptr) Variable Function
       36(param):      8(ptr) Variable Function
                              Store 14(AmbientColor) 18
              33:    7(fvec4) Load 32(input)
                              Store 30(input) 33
              37:    7(fvec4) Load 30(input)
                              Store 36(param) 37
              38:    7(fvec4) FunctionCall 11(@ShaderFunction(vf4;) 36(param)
                              Store 35(@entryPointOutput) 38
                              Return
                              FunctionEnd
11(@ShaderFunction(vf4;):    7(fvec4) Function None 9
       10(input):      8(ptr) FunctionParameter
              12:             Label
              19:    7(fvec4) Load 10(input)
              20:    7(fvec4) VectorShuffle 19 19 3 3 1 0
              24:     23(ptr) AccessChain 14(AmbientColor) 22
              25:    6(float) Load 24
              26:    7(fvec4) CompositeConstruct 25 25 25 25
              27:    7(fvec4) FMul 20 26
                              ReturnValue 27
                              FunctionEnd
