forwardRef.frag
Shader version: 110
0:? Sequence
0:11  Function Definition: main( (global void)
0:11    Function Parameters: 
0:13    Sequence
0:13      Sequence
0:13        move second child to first child (temp 4-component vector of float)
0:13          'color' (temp 4-component vector of float)
0:13          Construct vec4 (temp 4-component vector of float)
0:13            Function Call: foo(vf4; (global float)
0:13              'BaseColor' (smooth in 4-component vector of float)
0:15      Function Call: bar( (global void)
0:16      Sequence
0:16        move second child to first child (temp float)
0:16          'f' (temp float)
0:16          Function Call: unreachableReturn( (global float)
0:18      move second child to first child (temp 4-component vector of float)
0:18        'gl_FragColor' (fragColor 4-component vector of float FragColor)
0:18        vector-scale (temp 4-component vector of float)
0:18          'color' (temp 4-component vector of float)
0:18          'f' (temp float)
0:21  Function Definition: bar( (global void)
0:21    Function Parameters: 
0:25  Function Definition: unreachableReturn( (global float)
0:25    Function Parameters: 
0:27    Sequence
0:27      Function Call: bar( (global void)
0:28      Test condition and select (temp void)
0:28        Condition
0:28        Compare Less Than (temp bool)
0:28          'd' (uniform float)
0:28          Constant:
0:28            4.200000
0:28        true case
0:29        Branch: Return with expression
0:29          Constant:
0:29            1.200000
0:28        false case
0:31        Branch: Return with expression
0:31          Constant:
0:31            4.500000
0:34  Function Definition: foo(vf4; (global float)
0:34    Function Parameters: 
0:34      'bar' (in 4-component vector of float)
0:36    Sequence
0:36      Branch: Return with expression
0:36        add (temp float)
0:36          direct index (temp float)
0:36            'bar' (in 4-component vector of float)
0:36            Constant:
0:36              0 (const int)
0:36          direct index (temp float)
0:36            'bar' (in 4-component vector of float)
0:36            Constant:
0:36              1 (const int)
0:?   Linker Objects
0:?     'bigColor' (uniform 4-component vector of float)
0:?     'BaseColor' (smooth in 4-component vector of float)
0:?     'd' (uniform float)


Linked fragment stage:


Shader version: 110
0:? Sequence
0:11  Function Definition: main( (global void)
0:11    Function Parameters: 
0:13    Sequence
0:13      Sequence
0:13        move second child to first child (temp 4-component vector of float)
0:13          'color' (temp 4-component vector of float)
0:13          Construct vec4 (temp 4-component vector of float)
0:13            Function Call: foo(vf4; (global float)
0:13              'BaseColor' (smooth in 4-component vector of float)
0:15      Function Call: bar( (global void)
0:16      Sequence
0:16        move second child to first child (temp float)
0:16          'f' (temp float)
0:16          Function Call: unreachableReturn( (global float)
0:18      move second child to first child (temp 4-component vector of float)
0:18        'gl_FragColor' (fragColor 4-component vector of float FragColor)
0:18        vector-scale (temp 4-component vector of float)
0:18          'color' (temp 4-component vector of float)
0:18          'f' (temp float)
0:21  Function Definition: bar( (global void)
0:21    Function Parameters: 
0:25  Function Definition: unreachableReturn( (global float)
0:25    Function Parameters: 
0:27    Sequence
0:27      Function Call: bar( (global void)
0:28      Test condition and select (temp void)
0:28        Condition
0:28        Compare Less Than (temp bool)
0:28          'd' (uniform float)
0:28          Constant:
0:28            4.200000
0:28        true case
0:29        Branch: Return with expression
0:29          Constant:
0:29            1.200000
0:28        false case
0:31        Branch: Return with expression
0:31          Constant:
0:31            4.500000
0:34  Function Definition: foo(vf4; (global float)
0:34    Function Parameters: 
0:34      'bar' (in 4-component vector of float)
0:36    Sequence
0:36      Branch: Return with expression
0:36        add (temp float)
0:36          direct index (temp float)
0:36            'bar' (in 4-component vector of float)
0:36            Constant:
0:36              0 (const int)
0:36          direct index (temp float)
0:36            'bar' (in 4-component vector of float)
0:36            Constant:
0:36              1 (const int)
0:?   Linker Objects
0:?     'bigColor' (uniform 4-component vector of float)
0:?     'BaseColor' (smooth in 4-component vector of float)
0:?     'd' (uniform float)

