hlsl.shapeConv.frag
Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:14  Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
0:2    Function Parameters: 
0:2      'input' (in 4-component vector of float)
0:2      'f' (in float)
0:?     Sequence
0:4      move second child to first child (temp 4-component vector of float)
0:4        'v' (temp 4-component vector of float)
0:4        Constant:
0:4          1.000000
0:4          1.000000
0:4          1.000000
0:4          1.000000
0:5      move second child to first child (temp 4-component vector of float)
0:5        'v' (temp 4-component vector of float)
0:5        Constant:
0:5          2.000000
0:5          2.000000
0:5          2.000000
0:5          2.000000
0:6      move second child to first child (temp 4-component vector of float)
0:6        'v' (temp 4-component vector of float)
0:6        Construct vec4 (temp 4-component vector of float)
0:6          'f' (in float)
0:8      move second child to first child (temp 3-component vector of float)
0:8        'u' (temp 3-component vector of float)
0:8        Constant:
0:8          1.000000
0:8          1.000000
0:8          1.000000
0:9      move second child to first child (temp 3-component vector of float)
0:9        'u' (temp 3-component vector of float)
0:9        Constant:
0:9          2.000000
0:9          2.000000
0:9          2.000000
0:10      move second child to first child (temp 3-component vector of float)
0:10        'u' (temp 3-component vector of float)
0:10        Construct vec3 (temp 3-component vector of float)
0:10          Construct float (temp float)
0:10            'f' (in float)
0:12      Branch: Return with expression
0:12        'input' (in 4-component vector of float)
0:?   Linker Objects


Linked fragment stage:


Shader version: 450
gl_FragCoord origin is upper left
0:? Sequence
0:14  Function Definition: PixelShaderFunction(vf4;f1; (global 4-component vector of float)
0:2    Function Parameters: 
0:2      'input' (in 4-component vector of float)
0:2      'f' (in float)
0:?     Sequence
0:4      move second child to first child (temp 4-component vector of float)
0:4        'v' (temp 4-component vector of float)
0:4        Constant:
0:4          1.000000
0:4          1.000000
0:4          1.000000
0:4          1.000000
0:5      move second child to first child (temp 4-component vector of float)
0:5        'v' (temp 4-component vector of float)
0:5        Constant:
0:5          2.000000
0:5          2.000000
0:5          2.000000
0:5          2.000000
0:6      move second child to first child (temp 4-component vector of float)
0:6        'v' (temp 4-component vector of float)
0:6        Construct vec4 (temp 4-component vector of float)
0:6          'f' (in float)
0:8      move second child to first child (temp 3-component vector of float)
0:8        'u' (temp 3-component vector of float)
0:8        Constant:
0:8          1.000000
0:8          1.000000
0:8          1.000000
0:9      move second child to first child (temp 3-component vector of float)
0:9        'u' (temp 3-component vector of float)
0:9        Constant:
0:9          2.000000
0:9          2.000000
0:9          2.000000
0:10      move second child to first child (temp 3-component vector of float)
0:10        'u' (temp 3-component vector of float)
0:10        Construct vec3 (temp 3-component vector of float)
0:10          Construct float (temp float)
0:10            'f' (in float)
0:12      Branch: Return with expression
0:12        'input' (in 4-component vector of float)
0:?   Linker Objects

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Fragment 4  "main"
                              ExecutionMode 4 OriginUpperLeft
                              Source HLSL 450
                              Name 4  "main"
                              Name 13  "PixelShaderFunction(vf4;f1;"
                              Name 11  "input"
                              Name 12  "f"
                              Name 15  "v"
                              Name 24  "u"
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Function 7(fvec4)
               9:             TypePointer Function 6(float)
              10:             TypeFunction 7(fvec4) 8(ptr) 9(ptr)
              16:    6(float) Constant 1065353216
              17:    7(fvec4) ConstantComposite 16 16 16 16
              18:    6(float) Constant 1073741824
              19:    7(fvec4) ConstantComposite 18 18 18 18
              22:             TypeVector 6(float) 3
              23:             TypePointer Function 22(fvec3)
              25:   22(fvec3) ConstantComposite 16 16 16
              26:   22(fvec3) ConstantComposite 18 18 18
         4(main):           2 Function None 3
               5:             Label
                              FunctionEnd
13(PixelShaderFunction(vf4;f1;):    7(fvec4) Function None 10
       11(input):      8(ptr) FunctionParameter
           12(f):      9(ptr) FunctionParameter
              14:             Label
           15(v):      8(ptr) Variable Function
           24(u):     23(ptr) Variable Function
                              Store 15(v) 17
                              Store 15(v) 19
              20:    6(float) Load 12(f)
              21:    7(fvec4) CompositeConstruct 20 20 20 20
                              Store 15(v) 21
                              Store 24(u) 25
                              Store 24(u) 26
              27:    6(float) Load 12(f)
              28:   22(fvec3) CompositeConstruct 27 27 27
                              Store 24(u) 28
              29:    7(fvec4) Load 11(input)
                              ReturnValue 29
                              FunctionEnd
