Track expected test results and add more README information.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22602 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/Install/Linux/README.txt b/Install/Linux/README.txt
new file mode 100644
index 0000000..fc5651c
--- /dev/null
+++ b/Install/Linux/README.txt
@@ -0,0 +1,13 @@
+This directory contains linux binaries for the glslang validator. The main
+executable is glslangValidator, which requires use of the shared object
+file libglsang.so.
+
+Installation: Executing the ./install script will copy these to /usr/local/*
+so that they may be executed from any directory.
+
+Alternatively, you may put them where you wish, but will then need to use
+something like:
+
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<path to libglslang.so>
+
+Usage: Execute glslangValidator with no arguments to get a usage statement.
diff --git a/Install/Windows/README.txt b/Install/Windows/README.txt
new file mode 100644
index 0000000..ee673f3
--- /dev/null
+++ b/Install/Windows/README.txt
@@ -0,0 +1,6 @@
+This directory contains a Windows binary for the glslang validator.
+
+Installation: The executable in this directory is self sufficient, and can be
+placed where desired; in a test directory, or in a system path, etc.
+
+Usage: Execute glslangValidator with no arguments to get a usage statement.
diff --git a/README.txt b/README.txt
index 6f5c5b3..a5a58b2 100644
--- a/README.txt
+++ b/README.txt
@@ -55,8 +55,39 @@
Note: Despite appearances, the use of a DLL is currently disabled; it
simply makes a standalone executable from a statically linked library.
-Basic Operation
----------------
+Basic external programmatic interface
+-------------------------------------
+
+Another piece of software can programmatically translate shaders to an AST
+using the C-style ShInitialize(), ShCompile(), et. al. interface. The main() in
+StandAlone/StandAlone.cpp shows an example way of using these.
+
+The Sh*() interface takes a "compiler" call-back object, which it calls after
+building call back that is passed the AST and can then execute a backend on it.
+
+The following is a simplified resulting run-time call stack:
+
+ ShCompile(shader, compiler) -> compiler(AST) -> <back end>
+
+In practice, ShCompile() takes shader strings, default version, and
+warning/error and other options for controling compilation.
+
+Testing
+-------
+
+"Test" is an active test directory that contains test input and a
+subdirectory baseResults that contains the expected results of the
+tests. Both the tests and baseResults are under source-code control.
+Executing the script ./runtests will generate current results in
+the localResults directory and diff them against the baseResults.
+When you want to update the tracked test results, they need to be
+copied from localResults to baseResults
+
+There are some tests borrowed from LunarGLASS. If LunarGLASS is
+missing, those tests just won't run.
+
+Basic Internal Operation
+------------------------
- Initial lexical analysis is done be the preprocessor in
MachineIndependent/Preprocessor, and then refined by a GLSL scanner
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 65e9d3e..f0a39df 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -306,12 +306,14 @@
void usage()
{
printf("Usage: standalone [ options ] filename\n"
- "Where: filename = filename ending in .frag* or .vert*\n"
- "-i: intermediate (glslang AST)\n"
- "-d: delay end (keeps output up in debugger, WIN32)\n"
+ "Where: filename is a name ending in .frag or .vert\n\n"
+ "Compilation warnings and errors will be printed to stdout.\n"
+ "To get other information, use one of the following options:\n"
+ "-i: intermediate tree (glslang AST) is printed out\n"
+ "-d: delay exit\n"
"-l: memory leak mode\n"
- "-s: silent mode (no info log)\n"
- "-r: relaxed semantic error checking mode\n");
+ "-s: silent mode\n"
+ "-r: relaxed semantic error-checking mode\n");
}
#ifndef _WIN32
diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out
new file mode 100644
index 0000000..c0abb16
--- /dev/null
+++ b/Test/baseResults/120.frag.out
@@ -0,0 +1,239 @@
+ERROR: 0:9: 'in for stage inputs' : not supported for this version or the enabled extensions
+ERROR: 0:10: 'out for stage outputs' : not supported for this version or the enabled extensions
+ERROR: 0:54: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type '2-component vector of float' and a right operand of type '3-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:55: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type 'uniform 4X2 matrix of float' and a right operand of type '3-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:56: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'uniform 4X2 matrix of float' and a right operand of type 'smooth in 4-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:57: '=' : cannot convert from 'const float' to 'int'
+ERROR: 0:58: 'assign' : cannot convert from 'bool' to 'float'
+ERROR: 0:59: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'int' and a right operand of type 'bool' (or there is no acceptable conversion)
+ERROR: 0:60: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type 'bool' and a right operand of type 'int' (or there is no acceptable conversion)
+ERROR: 0:60: 'assign' : cannot convert from 'bool' to 'float'
+ERROR: 0:61: 'assign' : cannot convert from 'int' to 'bool'
+ERROR: 0:62: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'bool' and a right operand of type 'float' (or there is no acceptable conversion)
+ERROR: 0:63: 'bitwise-or assign' : not supported for this version or the enabled extensions
+ERROR: 0:63: 'assign' : cannot convert from 'bool' to 'float'
+ERROR: 0:79: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type '4-component vector of float' and a right operand of type '4X4 matrix of float' (or there is no acceptable conversion)
+ERROR: 0:79: 'assign' : cannot convert from '4X4 matrix of float' to 'fragColor 4-component vector of float'
+ERROR: 0:82: 'xr' : illegal - vector component fields not from the same set
+ERROR: 0:83: 'z' : vector field selection out of range
+ERROR: 0:84: 'assign' : l-value required
+ERROR: 0:90: 'int' : overloaded functions must have the same return type
+ERROR: 0:90: 'main' : function already has a body
+ERROR: 0:90: 'int' : main function cannot return a value
+ERROR: 0:91: 'main' : function cannot take any parameter(s)
+ERROR: 0:93: 'a' : variables with qualifier 'const' must be initialized
+ERROR: 0:96: 'out' : overloaded functions must have the same parameter qualifiers
+ERROR: 0:98: 'return' : function return is not matching type:
+ERROR: 26 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:21 Function Definition: main( (void)
+0:21 Function Parameters:
+0:23 Sequence
+0:23 Sequence
+0:23 move second child to first child (2X3 matrix of float)
+0:23 'm23' (2X3 matrix of float)
+0:23 Construct mat2x3 (2X3 matrix of float)
+0:23 'm' (uniform 4X2 matrix of float)
+0:27 Sequence
+0:27 move second child to first child (structure)
+0:27 'sv' (structure)
+0:27 Construct structure (structure)
+0:27 Convert int to float (float)
+0:27 'a' (int)
+0:28 Sequence
+0:28 move second child to first child (2-element array of float)
+0:28 'ia' (2-element array of float)
+0:28 Construct float (2-element array of float)
+0:28 3.000000
+0:28 direct index (float)
+0:28 'i' (smooth in 4-component vector of float)
+0:28 1 (const int)
+0:29 Sequence
+0:29 move second child to first child (float)
+0:29 'f1' (float)
+0:29 1.000000
+0:30 Sequence
+0:30 move second child to first child (float)
+0:30 'f' (float)
+0:30 Convert int to float (float)
+0:30 'a' (int)
+0:31 move second child to first child (float)
+0:31 'f' (float)
+0:31 Convert int to float (float)
+0:31 'a' (int)
+0:33 Sequence
+0:33 move second child to first child (3-component vector of float)
+0:33 'v3' (3-component vector of float)
+0:33 Convert int to float (3-component vector of float)
+0:33 'iv3' (3-component vector of int)
+0:34 move second child to first child (float)
+0:34 'f' (float)
+0:34 add (float)
+0:34 'f' (float)
+0:34 Convert int to float (float)
+0:34 'a' (int)
+0:35 move second child to first child (float)
+0:35 'f' (float)
+0:35 subtract (float)
+0:35 Convert int to float (float)
+0:35 'a' (int)
+0:35 'f' (float)
+0:36 add second child into first child (float)
+0:36 'f' (float)
+0:36 Convert int to float (float)
+0:36 'a' (int)
+0:37 move second child to first child (float)
+0:37 'f' (float)
+0:37 subtract (float)
+0:37 Convert int to float (float)
+0:37 'a' (int)
+0:37 'f' (float)
+0:38 multiply second child into first child (3-component vector of float)
+0:38 'v3' (3-component vector of float)
+0:38 Convert int to float (3-component vector of float)
+0:38 'iv3' (3-component vector of int)
+0:39 move second child to first child (3-component vector of float)
+0:39 'v3' (3-component vector of float)
+0:39 divide (3-component vector of float)
+0:39 Convert int to float (3-component vector of float)
+0:39 'iv3' (3-component vector of int)
+0:39 2.000000
+0:40 move second child to first child (3-component vector of float)
+0:40 'v3' (3-component vector of float)
+0:40 vector-scale (3-component vector of float)
+0:40 3.000000
+0:40 Convert int to float (3-component vector of float)
+0:40 'iv3' (3-component vector of int)
+0:41 move second child to first child (3-component vector of float)
+0:41 'v3' (3-component vector of float)
+0:41 vector-scale (3-component vector of float)
+0:41 2.000000
+0:41 'v3' (3-component vector of float)
+0:42 move second child to first child (3-component vector of float)
+0:42 'v3' (3-component vector of float)
+0:42 subtract (3-component vector of float)
+0:42 'v3' (3-component vector of float)
+0:42 2.000000
+0:43 Test condition and select (void)
+0:43 Condition
+0:47 logical-or (bool)
+0:46 logical-or (bool)
+0:45 logical-or (bool)
+0:44 logical-or (bool)
+0:43 logical-or (bool)
+0:43 Compare Less Than (bool)
+0:43 'f' (float)
+0:43 Convert int to float (float)
+0:43 'a' (int)
+0:44 Compare Less Than or Equal (bool)
+0:44 Convert int to float (float)
+0:44 'a' (int)
+0:44 'f' (float)
+0:45 Compare Greater Than (bool)
+0:45 'f' (float)
+0:45 Convert int to float (float)
+0:45 'a' (int)
+0:46 Compare Greater Than or Equal (bool)
+0:46 'f' (float)
+0:46 Convert int to float (float)
+0:46 'a' (int)
+0:47 Compare Equal (bool)
+0:47 Convert int to float (float)
+0:47 'a' (int)
+0:47 'f' (float)
+0:48 Compare Not Equal (bool)
+0:48 'f' (float)
+0:48 Convert int to float (float)
+0:48 'a' (int)
+0:43 true case is null
+0:49 move second child to first child (float)
+0:49 'f' (float)
+0:49 Test condition and select (float)
+0:49 Condition
+0:49 'b' (bool)
+0:49 true case
+0:49 Convert int to float (float)
+0:49 'a' (int)
+0:49 false case
+0:49 'f' (float)
+0:50 move second child to first child (float)
+0:50 'f' (float)
+0:50 Test condition and select (float)
+0:50 Condition
+0:50 'b' (bool)
+0:50 true case
+0:50 'f' (float)
+0:50 false case
+0:50 Convert int to float (float)
+0:50 'a' (int)
+0:51 move second child to first child (float)
+0:51 'f' (float)
+0:51 Convert int to float (float)
+0:51 Test condition and select (int)
+0:51 Condition
+0:51 'b' (bool)
+0:51 true case
+0:51 'a' (int)
+0:51 false case
+0:51 'a' (int)
+0:52 Sequence
+0:52 move second child to first child (structure)
+0:52 'news' (structure)
+0:52 'sv' (structure)
+0:54 vector swizzle (2-component vector of float)
+0:54 'i' (smooth in 4-component vector of float)
+0:54 Sequence
+0:54 0 (const int)
+0:54 1 (const int)
+0:55 'm' (uniform 4X2 matrix of float)
+0:56 'm' (uniform 4X2 matrix of float)
+0:58 'f' (float)
+0:59 move second child to first child (float)
+0:59 'f' (float)
+0:59 Convert int to float (float)
+0:59 'a' (int)
+0:60 'f' (float)
+0:61 'b' (bool)
+0:62 move second child to first child (bool)
+0:62 'b' (bool)
+0:62 'b' (bool)
+0:63 'f' (float)
+0:65 move second child to first child (4-component vector of float)
+0:65 'gl_FragColor' (fragColor 4-component vector of float)
+0:65 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:65 's2D' (uniform sampler2D)
+0:65 'centTexCoord' (centroid smooth in 2-component vector of float)
+0:? Sequence
+0:79 'gl_FragColor' (fragColor 4-component vector of float)
+0:82 direct index (float)
+0:82 'gl_FragColor' (fragColor 4-component vector of float)
+0:82 0 (const int)
+0:83 direct index (float)
+0:83 'centTexCoord' (centroid smooth in 2-component vector of float)
+0:83 0 (const int)
+0:84 move second child to first child (bool)
+0:84 Comma (bool)
+0:84 'a' (int)
+0:84 'b' (bool)
+0:84 true (const bool)
+0:90 Function Definition: main( (int)
+0:90 Function Parameters:
+0:91 Function Definition: main(i1; (void)
+0:91 Function Parameters:
+0:91 'a' (in int)
+0:96 Function Definition: foo(f1; (int)
+0:96 Function Parameters:
+0:96 'a' (out float)
+0:98 Sequence
+0:98 Branch: Return with expression
+0:98 3.200000
+0:99 Function Call: foo(f1; (int)
+0:99 'a' (out float)
+0:? Linker Objects
+0:? 'i' (smooth in 4-component vector of float)
+0:? 'o' (out 4-component vector of float)
+0:? 's2D' (uniform sampler2D)
+0:? 'centTexCoord' (centroid smooth in 2-component vector of float)
+0:? 'm' (uniform 4X2 matrix of float)
+
diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out
new file mode 100644
index 0000000..adabd12
--- /dev/null
+++ b/Test/baseResults/120.vert.out
@@ -0,0 +1,81 @@
+ERROR: 0:3: 'in for stage inputs' : not supported for this version or the enabled extensions
+ERROR: 0:4: 'out for stage outputs' : not supported for this version or the enabled extensions
+ERROR: 0:11: 'gl_Position' : cannot add storage, auxiliary, memory, interpolation, or precision qualifier to an existing variable
+ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample)
+ERROR: 0:12: '' : replicated qualifiers
+ERROR: 0:12: 'foo' : identifier not previously declared
+ERROR: 0:25: 'length' : array must be declared with a size before using this method
+ERROR: 0:28: 'length' : incomplete method syntax
+ERROR: 0:29: 'length' : method does not accept any arguments
+ERROR: 0:30: 'flizbit' : only the length method is supported for array
+ERROR: 0:30: '=' : cannot convert from '7-element array of float' to 'int'
+ERROR: 0:31: 'flizbit' : only the length method is supported for array
+ERROR: 0:31: 'f' : no matching overloaded function found
+ERROR: 0:31: 'a4' : redefinition
+ERROR: 0:32: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:33: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:34: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:35: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:36: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:37: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:37: 'constructor' : array constructor needs one argument per array element
+ERROR: 0:37: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:38: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:38: 'constructor' : array constructor needs one argument per array element
+ERROR: 0:38: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:43: 'uniform' : cannot initialize this type of qualifier
+ERROR: 0:47: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:48: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:49: 'arrays of arrays' : not supported with this profile: none
+ERROR: 0:50: 'arrays of arrays' : not supported with this profile: none
+ERROR: 30 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:15 Function Definition: main( (void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 move second child to first child (2-component vector of float)
+0:17 'centTexCoord' (invariant smooth out 2-component vector of float)
+0:17 'attv2' (in 2-component vector of float)
+0:18 move second child to first child (4-component vector of float)
+0:18 'gl_Position' (invariant gl_Position 4-component vector of float)
+0:18 'attv4' (in 4-component vector of float)
+0:22 move second child to first child (4-component vector of float)
+0:22 'gl_Position' (invariant gl_Position 4-component vector of float)
+0:22 direct index (4-component vector of float)
+0:22 'b' (12-element array of 4-component vector of float)
+0:22 11 (const int)
+0:25 Sequence
+0:25 move second child to first child (int)
+0:25 'a1' (int)
+0:25 1 (const int)
+0:27 Sequence
+0:27 move second child to first child (int)
+0:27 'aa' (int)
+0:27 7 (const int)
+0:28 Sequence
+0:28 move second child to first child (int)
+0:28 'a2' (int)
+0:29 Sequence
+0:29 move second child to first child (int)
+0:29 'a3' (int)
+0:29 12 (const int)
+0:37 Sequence
+0:37 move second child to first child (2-element array of float)
+0:37 'md9' (2-element array of float)
+0:37 Construct float (const 2-element array of float)
+0:38 Sequence
+0:38 move second child to first child (2-element array of float)
+0:38 'md11' (2-element array of float)
+0:38 Construct float (const 2-element array of float)
+0:40 move second child to first child (float)
+0:40 'gl_PointSize' (invariant gl_PointSize float)
+0:40 3.800000
+0:? Linker Objects
+0:? 'i' (in 4-component vector of float)
+0:? 'o' (smooth out 4-component vector of float)
+0:? 'attv2' (in 2-component vector of float)
+0:? 'attv4' (in 4-component vector of float)
+0:? 's2D' (uniform sampler2D)
+0:? 'centTexCoord' (invariant smooth out 2-component vector of float)
+
diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out
new file mode 100644
index 0000000..38fa1aa
--- /dev/null
+++ b/Test/baseResults/130.frag.out
@@ -0,0 +1,10 @@
+0:? Sequence
+0:16 Function Definition: main( (void)
+0:16 Function Parameters:
+0:? Linker Objects
+0:? 'i' (smooth in 4-component vector of float)
+0:? 'o' (out 4-component vector of float)
+0:? 'fflat' (flat in float)
+0:? 'fsmooth' (smooth in float)
+0:? 'fnop' (noperspective in float)
+
diff --git a/Test/baseResults/140.frag.out b/Test/baseResults/140.frag.out
new file mode 100644
index 0000000..15a238e
--- /dev/null
+++ b/Test/baseResults/140.frag.out
@@ -0,0 +1,12 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+ERROR: 0:14: '#error' : GL_ES is not set
+ERROR: 1 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:8 Function Definition: main( (void)
+0:8 Function Parameters:
+0:? Linker Objects
+0:? 'v' (smooth in 4-component vector of float)
+0:? 'i' (smooth in 4-component vector of float)
+0:? 'o' (out 4-component vector of float)
+
diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out
new file mode 100644
index 0000000..9fc969b
--- /dev/null
+++ b/Test/baseResults/300.frag.out
@@ -0,0 +1,231 @@
+ERROR: 0:30: 'noperspective' : Reserved word.
+ERROR: 0:30: 'noperspective' : not supported with this profile: es
+ERROR: 0:31: 'sampler/image' : samplers and images must be uniform
+ERROR: 0:32: 'uint' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
+ERROR: 0:39: 'structure' : samplers and images must be uniform (structure cannot contain a sampler or image)
+ERROR: 0:69: 'variable indexing sampler array' : not supported with this profile: es
+ERROR: 0:83: 'double' : Reserved word.
+ERROR: 0:83: 'double' : not supported with this profile: es
+ERROR: 0:84: 'dvec2' : Reserved word.
+ERROR: 0:84: 'double vector' : not supported with this profile: es
+ERROR: 0:85: 'dvec3' : Reserved word.
+ERROR: 0:85: 'double vector' : not supported with this profile: es
+ERROR: 0:86: 'dvec4' : Reserved word.
+ERROR: 0:86: 'double vector' : not supported with this profile: es
+ERROR: 0:101: 'arrays of arrays' : not supported with this profile: es
+ERROR: 0:102: 'arrays of arrays' : not supported with this profile: es
+ERROR: 0:102: 'arrays of arrays' : not supported with this profile: es
+ERROR: 0:103: 'arrays of arrays' : not supported with this profile: es
+ERROR: 0:100: 'arrays of arrays' : not supported with this profile: es
+ERROR: 0:106: 'imageBuffer' : Reserved word.
+ERROR: 0:106: '' : syntax error
+ERROR: 21 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:53 Function Definition: main( (void)
+0:53 Function Parameters:
+0:? Sequence
+0:57 move second child to first child (lowp 4-component vector of float)
+0:57 'v' (lowp 4-component vector of float)
+0:57 Function Call: texture(s21;vf2; (lowp 4-component vector of float)
+0:57 's2D' (uniform lowp sampler2D)
+0:57 'c2D' (smooth in lowp 2-component vector of float)
+0:58 move second child to first child (lowp 4-component vector of float)
+0:58 'v' (lowp 4-component vector of float)
+0:58 Function Call: textureProj(s31;vf4; (lowp 4-component vector of float)
+0:58 's3D' (uniform lowp sampler3D)
+0:58 'c4D' (smooth lowp 4-component vector of float)
+0:59 move second child to first child (lowp 4-component vector of float)
+0:59 'v' (lowp 4-component vector of float)
+0:59 Function Call: textureLod(sA21;vf3;f1; (lowp 4-component vector of float)
+0:59 's2DArray' (uniform lowp sampler2DArray)
+0:59 'c3D' (smooth in lowp 3-component vector of float)
+0:59 1.200000
+0:60 move second child to first child (lowp float)
+0:60 'f' (lowp float)
+0:60 Function Call: textureOffset(sS21;vf3;vi2;f1; (lowp float)
+0:60 's2DShadow' (uniform lowp sampler2DShadow)
+0:60 'c3D' (smooth in lowp 3-component vector of float)
+0:60 'ic2D' (flat in mediump 2-component vector of int)
+0:60 'c1D' (smooth in lowp float)
+0:61 move second child to first child (lowp 4-component vector of float)
+0:61 'v' (lowp 4-component vector of float)
+0:61 Function Call: texelFetch(s31;vi3;i1; (lowp 4-component vector of float)
+0:61 's3D' (uniform lowp sampler3D)
+0:61 'ic3D' (flat in mediump 3-component vector of int)
+0:61 'ic1D' (flat in mediump int)
+0:62 move second child to first child (lowp 4-component vector of float)
+0:62 'v' (lowp 4-component vector of float)
+0:62 Function Call: texelFetchOffset(s21;vi2;i1;vi2; (lowp 4-component vector of float)
+0:62 direct index (uniform lowp sampler2D)
+0:62 'arrayedSampler' (uniform 5-element array of lowp sampler2D)
+0:62 2 (const int)
+0:62 'ic2D' (flat in mediump 2-component vector of int)
+0:62 4 (const int)
+0:62 'ic2D' (flat in mediump 2-component vector of int)
+0:63 move second child to first child (lowp float)
+0:63 'f' (lowp float)
+0:63 Function Call: textureLodOffset(sS21;vf3;f1;vi2; (lowp float)
+0:63 's2DShadow' (uniform lowp sampler2DShadow)
+0:63 'c3D' (smooth in lowp 3-component vector of float)
+0:63 'c1D' (smooth in lowp float)
+0:63 'ic2D' (flat in mediump 2-component vector of int)
+0:64 move second child to first child (lowp 4-component vector of float)
+0:64 'v' (lowp 4-component vector of float)
+0:64 Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (lowp 4-component vector of float)
+0:64 's2D' (uniform lowp sampler2D)
+0:64 'c3D' (smooth in lowp 3-component vector of float)
+0:64 'c1D' (smooth in lowp float)
+0:64 'ic2D' (flat in mediump 2-component vector of int)
+0:65 move second child to first child (lowp 4-component vector of float)
+0:65 'v' (lowp 4-component vector of float)
+0:65 Function Call: textureGrad(sC1;vf3;vf3;vf3; (lowp 4-component vector of float)
+0:65 'sCube' (uniform lowp samplerCube)
+0:65 'c3D' (smooth in lowp 3-component vector of float)
+0:65 'c3D' (smooth in lowp 3-component vector of float)
+0:65 'c3D' (smooth in lowp 3-component vector of float)
+0:66 move second child to first child (lowp float)
+0:66 'f' (lowp float)
+0:66 Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (lowp float)
+0:66 's2DArrayShadow' (uniform lowp sampler2DArrayShadow)
+0:66 'c4D' (smooth lowp 4-component vector of float)
+0:66 'c2D' (smooth in lowp 2-component vector of float)
+0:66 'c2D' (smooth in lowp 2-component vector of float)
+0:66 'ic2D' (flat in mediump 2-component vector of int)
+0:67 move second child to first child (lowp 4-component vector of float)
+0:67 'v' (lowp 4-component vector of float)
+0:67 Function Call: textureProjGrad(s31;vf4;vf3;vf3; (lowp 4-component vector of float)
+0:67 's3D' (uniform lowp sampler3D)
+0:67 'c4D' (smooth lowp 4-component vector of float)
+0:67 'c3D' (smooth in lowp 3-component vector of float)
+0:67 'c3D' (smooth in lowp 3-component vector of float)
+0:68 move second child to first child (lowp 4-component vector of float)
+0:68 'v' (lowp 4-component vector of float)
+0:68 Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (lowp 4-component vector of float)
+0:68 's2D' (uniform lowp sampler2D)
+0:68 'c3D' (smooth in lowp 3-component vector of float)
+0:68 'c2D' (smooth in lowp 2-component vector of float)
+0:68 'c2D' (smooth in lowp 2-component vector of float)
+0:68 'ic2D' (flat in mediump 2-component vector of int)
+0:69 move second child to first child (lowp 4-component vector of float)
+0:69 'v' (lowp 4-component vector of float)
+0:69 Function Call: texture(s21;vf2; (lowp 4-component vector of float)
+0:69 indirect index (uniform lowp sampler2D)
+0:69 'arrayedSampler' (uniform 5-element array of lowp sampler2D)
+0:69 'ic1D' (flat in mediump int)
+0:69 'c2D' (smooth in lowp 2-component vector of float)
+0:72 move second child to first child (mediump 4-component vector of int)
+0:72 'iv' (mediump 4-component vector of int)
+0:72 Function Call: texture(is21;vf2; (mediump 4-component vector of int)
+0:72 'is2D' (uniform lowp isampler2D)
+0:72 'c2D' (smooth in lowp 2-component vector of float)
+0:73 move second child to first child (mediump 4-component vector of int)
+0:73 'iv' (mediump 4-component vector of int)
+0:73 Function Call: textureProjOffset(is21;vf4;vi2; (mediump 4-component vector of int)
+0:73 'is2D' (uniform lowp isampler2D)
+0:73 'c4D' (smooth lowp 4-component vector of float)
+0:73 'ic2D' (flat in mediump 2-component vector of int)
+0:74 move second child to first child (mediump 4-component vector of int)
+0:74 'iv' (mediump 4-component vector of int)
+0:74 Function Call: textureProjLod(is21;vf3;f1; (mediump 4-component vector of int)
+0:74 'is2D' (uniform lowp isampler2D)
+0:74 'c3D' (smooth in lowp 3-component vector of float)
+0:74 'c1D' (smooth in lowp float)
+0:75 move second child to first child (mediump 4-component vector of int)
+0:75 'iv' (mediump 4-component vector of int)
+0:75 Function Call: textureProjGrad(is21;vf3;vf2;vf2; (mediump 4-component vector of int)
+0:75 'is2D' (uniform lowp isampler2D)
+0:75 'c3D' (smooth in lowp 3-component vector of float)
+0:75 'c2D' (smooth in lowp 2-component vector of float)
+0:75 'c2D' (smooth in lowp 2-component vector of float)
+0:76 move second child to first child (mediump 4-component vector of int)
+0:76 'iv' (mediump 4-component vector of int)
+0:76 Function Call: texture(is31;vf3;f1; (mediump 4-component vector of int)
+0:76 'is3D' (uniform lowp isampler3D)
+0:76 'c3D' (smooth in lowp 3-component vector of float)
+0:76 4.200000
+0:77 move second child to first child (mediump 4-component vector of int)
+0:77 'iv' (mediump 4-component vector of int)
+0:77 Function Call: textureLod(isC1;vf3;f1; (mediump 4-component vector of int)
+0:77 'isCube' (uniform lowp isamplerCube)
+0:77 'c3D' (smooth in lowp 3-component vector of float)
+0:77 'c1D' (smooth in lowp float)
+0:78 move second child to first child (mediump 4-component vector of int)
+0:78 'iv' (mediump 4-component vector of int)
+0:78 Function Call: texelFetch(isA21;vi3;i1; (mediump 4-component vector of int)
+0:78 'is2DArray' (uniform lowp isampler2DArray)
+0:78 'ic3D' (flat in mediump 3-component vector of int)
+0:78 'ic1D' (flat in mediump int)
+0:80 move second child to first child (highp 2-component vector of int)
+0:80 vector swizzle (mediump 2-component vector of int)
+0:80 'iv' (mediump 4-component vector of int)
+0:80 Sequence
+0:80 0 (const int)
+0:80 1 (const int)
+0:80 Function Call: textureSize(sSC1;i1; (highp 2-component vector of int)
+0:80 'sCubeShadow' (uniform lowp samplerCubeShadow)
+0:80 2 (const int)
+0:88 add second child into first child (highp float)
+0:88 'f' (lowp float)
+0:88 direct index (highp float)
+0:88 'gl_FragCoord' (gl_FragCoord highp 4-component vector of float)
+0:88 1 (const int)
+0:89 move second child to first child (highp float)
+0:89 'gl_FragDepth' (gl_FragDepth highp float)
+0:89 'f' (lowp float)
+0:91 move second child to first child (lowp 3-component vector of float)
+0:91 'sc' (out lowp 3-component vector of float)
+0:91 c: direct index for structure (lowp 3-component vector of float)
+0:91 's2' (smooth in structure)
+0:91 0 (const int)
+0:92 move second child to first child (lowp float)
+0:92 'sf' (out lowp float)
+0:92 f: direct index for structure (lowp float)
+0:92 's2' (smooth in structure)
+0:92 1 (const int)
+0:94 add (lowp 2-component vector of float)
+0:94 hyp. sine (lowp float)
+0:94 'c1D' (smooth in lowp float)
+0:95 vector-scale (lowp 2-component vector of float)
+0:95 hyp. cosine (lowp float)
+0:95 'c1D' (smooth in lowp float)
+0:95 hyp. tangent (lowp 2-component vector of float)
+0:95 'c2D' (smooth in lowp 2-component vector of float)
+0:96 add (lowp 4-component vector of float)
+0:96 arc hyp. sine (lowp 4-component vector of float)
+0:96 'c4D' (smooth lowp 4-component vector of float)
+0:96 arc hyp. cosine (lowp 4-component vector of float)
+0:96 'c4D' (smooth lowp 4-component vector of float)
+0:97 arc hyp. tangent (lowp 3-component vector of float)
+0:97 'c3D' (smooth in lowp 3-component vector of float)
+0:? Linker Objects
+0:? 's2D' (uniform lowp sampler2D)
+0:? 's3D' (uniform lowp sampler3D)
+0:? 'sCube' (uniform lowp samplerCube)
+0:? 'sCubeShadow' (uniform lowp samplerCubeShadow)
+0:? 's2DShadow' (uniform lowp sampler2DShadow)
+0:? 's2DArray' (uniform lowp sampler2DArray)
+0:? 's2DArrayShadow' (uniform lowp sampler2DArrayShadow)
+0:? 'is2D' (uniform lowp isampler2D)
+0:? 'is3D' (uniform lowp isampler3D)
+0:? 'isCube' (uniform lowp isamplerCube)
+0:? 'is2DArray' (uniform lowp isampler2DArray)
+0:? 'us2D' (uniform lowp usampler2D)
+0:? 'us3D' (uniform lowp usampler3D)
+0:? 'usCube' (uniform lowp usamplerCube)
+0:? 'us2DArray' (uniform lowp usampler2DArray)
+0:? 'c1D' (smooth in lowp float)
+0:? 'c2D' (smooth in lowp 2-component vector of float)
+0:? 'c3D' (smooth in lowp 3-component vector of float)
+0:? 'ic1D' (flat in mediump int)
+0:? 'ic2D' (flat in mediump 2-component vector of int)
+0:? 'ic3D' (flat in mediump 3-component vector of int)
+0:? 'ic4D' (flat in mediump 4-component vector of int)
+0:? 'badv' (noperspective in lowp 4-component vector of float)
+0:? 'bads' (smooth in lowp sampler2D)
+0:? 'badout' (out structure)
+0:? 's2' (smooth in structure)
+0:? 'sc' (out lowp 3-component vector of float)
+0:? 'sf' (out lowp float)
+0:? 'multiInst' (layout(shared ) uniform 2-element array of block)
+
diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out
new file mode 100644
index 0000000..7f75c65
--- /dev/null
+++ b/Test/baseResults/300.vert.out
@@ -0,0 +1,140 @@
+ERROR: 0:8: 'varying' : Reserved word.
+ERROR: 0:8: 'varying' : no longer supported in es profile; removed in version 300
+ERROR: 0:9: 'vertex input arrays' : not supported with this profile: es
+ERROR: 0:10: '' : precision qualifier must appear as last qualifier
+ERROR: 0:11: '' : invariant qualifier must appear first
+ERROR: 0:12: '' : Auxiliary qualifiers (centroid, patch, and sample) must appear before storage and precision qualifiers
+ERROR: 0:12: '' : vertex input cannot be further qualified
+ERROR: 0:13: '' : interpolation qualifiers must appear before storage and precision qualifiers
+ERROR: 0:14: '' : in/out must appear before const
+ERROR: 0:15: '' : precision qualifier must appear as last qualifier
+ERROR: 0:16: '' : can only have one interpolation qualifier (flat, smooth, noperspective)
+ERROR: 0:17: 'sample' : Reserved word.
+ERROR: 0:17: '' : can only have one auxiliary qualifier (centroid, patch, and sample)
+ERROR: 0:18: 'uniform' : too many storage qualifiers
+ERROR: 0:56: '#error' : GL_ES is set
+ERROR: 0:62: '' : array size required
+ERROR: 0:63: '' : array size required
+ERROR: 0:65: '' : array size required
+ERROR: 0:64: '' : array size required
+ERROR: 0:67: '' : array size required
+ERROR: 20 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:27 Function Definition: main( (void)
+0:27 Function Parameters:
+0:29 Sequence
+0:29 Sequence
+0:29 move second child to first child (highp int)
+0:29 'id' (highp int)
+0:29 add (highp int)
+0:29 'gl_VertexID' (gl_VertexId highp int)
+0:29 'gl_InstanceID' (gl_InstanceId highp int)
+0:31 Sequence
+0:31 move second child to first child (highp int)
+0:31 'c0' (highp int)
+0:31 64 (const int)
+0:32 Sequence
+0:32 move second child to first child (highp int)
+0:32 'c1' (highp int)
+0:32 128 (const int)
+0:33 Sequence
+0:33 move second child to first child (highp int)
+0:33 'c2' (highp int)
+0:33 16 (const int)
+0:34 Sequence
+0:34 move second child to first child (highp int)
+0:34 'c3' (highp int)
+0:34 15 (const int)
+0:35 Sequence
+0:35 move second child to first child (highp int)
+0:35 'c4' (highp int)
+0:35 32 (const int)
+0:36 Sequence
+0:36 move second child to first child (highp int)
+0:36 'c5' (highp int)
+0:36 32 (const int)
+0:37 Sequence
+0:37 move second child to first child (highp int)
+0:37 'c6' (highp int)
+0:37 32 (const int)
+0:38 Sequence
+0:38 move second child to first child (highp int)
+0:38 'c7' (highp int)
+0:38 16 (const int)
+0:39 Sequence
+0:39 move second child to first child (highp int)
+0:39 'c8' (highp int)
+0:39 32 (const int)
+0:40 Sequence
+0:40 move second child to first child (highp int)
+0:40 'c9' (highp int)
+0:40 -8 (const int)
+0:41 Sequence
+0:41 move second child to first child (highp int)
+0:41 'c10' (highp int)
+0:41 7 (const int)
+0:43 Sequence
+0:43 move second child to first child (highp 3X4 matrix of float)
+0:43 'tm' (highp 3X4 matrix of float)
+0:43 transpose (highp 3X4 matrix of float)
+0:43 'm43' (uniform highp 4X3 matrix of float)
+0:44 Sequence
+0:44 move second child to first child (highp float)
+0:44 'dm' (highp float)
+0:44 determinant (highp float)
+0:44 'm44' (uniform highp 4X4 matrix of float)
+0:45 Sequence
+0:45 move second child to first child (highp 3X3 matrix of float)
+0:45 'im' (highp 3X3 matrix of float)
+0:45 inverse (highp 3X3 matrix of float)
+0:45 'm33' (uniform highp 3X3 matrix of float)
+0:47 Sequence
+0:47 move second child to first child (highp 3X2 matrix of float)
+0:47 'op' (highp 3X2 matrix of float)
+0:47 outer product (highp 3X2 matrix of float)
+0:47 'v2' (smooth out highp 2-component vector of float)
+0:47 'v3' (in highp 3-component vector of float)
+0:49 move second child to first child (highp 4-component vector of float)
+0:49 'gl_Position' (gl_Position highp 4-component vector of float)
+0:49 direct index (uniform highp 4-component vector of float)
+0:49 'm44' (uniform highp 4X4 matrix of float)
+0:49 2 (const int)
+0:50 move second child to first child (highp float)
+0:50 'gl_PointSize' (gl_PointSize highp float)
+0:50 direct index (highp float)
+0:50 'v2' (smooth out highp 2-component vector of float)
+0:50 1 (const int)
+0:52 move second child to first child (highp 3-component vector of float)
+0:52 c: direct index for structure (highp 3-component vector of float)
+0:52 's' (smooth out structure)
+0:52 0 (const int)
+0:52 'v3' (in highp 3-component vector of float)
+0:53 move second child to first child (highp float)
+0:53 f: direct index for structure (highp float)
+0:53 's' (smooth out structure)
+0:53 1 (const int)
+0:53 'dm' (highp float)
+0:68 Sequence
+0:68 move second child to first child (2-element array of highp float)
+0:68 'okayA' (2-element array of highp float)
+0:68 3.000000
+0:68 4.000000
+0:? Linker Objects
+0:? 'm43' (uniform highp 4X3 matrix of float)
+0:? 'm33' (uniform highp 3X3 matrix of float)
+0:? 'm44' (uniform highp 4X4 matrix of float)
+0:? 'v3' (in highp 3-component vector of float)
+0:? 'v2' (smooth out highp 2-component vector of float)
+0:? 'badorder' (in highp 4-component vector of float)
+0:? 'badorder2' (invariant smooth out highp 4-component vector of float)
+0:? 'badorder4' (centroid in highp 4-component vector of float)
+0:? 'badorder3' (flat out highp 4-component vector of float)
+0:? 'rep' (smooth flat out highp 4-component vector of float)
+0:? 'rep2' (centroid smooth sample out highp 4-component vector of float)
+0:? 'rep3' (in highp 4-component vector of float)
+0:? 's' (smooth out structure)
+0:? 'ubInst' (layout(shared ) uniform 1-element array of block)
+0:? 'gl_VertexID' (gl_VertexId highp int)
+0:? 'gl_InstanceID' (gl_InstanceId highp int)
+
diff --git a/Test/baseResults/300BuiltIns.frag.out b/Test/baseResults/300BuiltIns.frag.out
new file mode 100644
index 0000000..0fb1a81
--- /dev/null
+++ b/Test/baseResults/300BuiltIns.frag.out
@@ -0,0 +1,184 @@
+ERROR: 0:6: 'float' : type requires declaration of default precision qualifier
+ERROR: 0:70: 'noise2' : no matching overloaded function found
+ERROR: 2 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:26 Function Definition: main( (void)
+0:26 Function Parameters:
+0:29 Sequence
+0:29 Sequence
+0:29 move second child to first child (mediump 3-component vector of float)
+0:29 'v' (mediump 3-component vector of float)
+0:29 mix (mediump 3-component vector of float)
+0:29 'x' (mediump 3-component vector of float)
+0:29 'y' (mediump 3-component vector of float)
+0:29 'bv' (3-component vector of bool)
+0:30 Sequence
+0:30 move second child to first child (mediump 4-component vector of int)
+0:30 'iv10' (mediump 4-component vector of int)
+0:30 Absolute value (mediump 4-component vector of int)
+0:30 'iv4a' (mediump 4-component vector of int)
+0:31 Sequence
+0:31 move second child to first child (mediump 4-component vector of int)
+0:31 'iv11' (mediump 4-component vector of int)
+0:31 Sign (mediump 4-component vector of int)
+0:31 'iv4a' (mediump 4-component vector of int)
+0:32 Sequence
+0:32 move second child to first child (mediump 4-component vector of int)
+0:32 'iv12' (mediump 4-component vector of int)
+0:32 min (mediump 4-component vector of int)
+0:32 'iv4a' (mediump 4-component vector of int)
+0:32 'iv4b' (mediump 4-component vector of int)
+0:33 Sequence
+0:33 move second child to first child (mediump 4-component vector of int)
+0:33 'iv13' (mediump 4-component vector of int)
+0:33 min (mediump 4-component vector of int)
+0:33 'iv4a' (mediump 4-component vector of int)
+0:33 'imin' (mediump int)
+0:34 Sequence
+0:34 move second child to first child (mediump 2-component vector of uint)
+0:34 'u' (mediump 2-component vector of uint)
+0:34 min (mediump 2-component vector of uint)
+0:34 'uv2x' (mediump 2-component vector of uint)
+0:34 'uv2y' (mediump 2-component vector of uint)
+0:35 Sequence
+0:35 move second child to first child (mediump 4-component vector of uint)
+0:35 'uv' (mediump 4-component vector of uint)
+0:35 min (mediump 4-component vector of uint)
+0:35 'uv4y' (mediump 4-component vector of uint)
+0:35 'uy' (mediump uint)
+0:36 Sequence
+0:36 move second child to first child (mediump 3-component vector of int)
+0:36 'iv14' (mediump 3-component vector of int)
+0:36 max (mediump 3-component vector of int)
+0:36 'iv3a' (mediump 3-component vector of int)
+0:36 'iv3b' (mediump 3-component vector of int)
+0:37 Sequence
+0:37 move second child to first child (mediump 4-component vector of int)
+0:37 'iv15' (mediump 4-component vector of int)
+0:37 max (mediump 4-component vector of int)
+0:37 'iv4a' (mediump 4-component vector of int)
+0:37 'imax' (mediump int)
+0:38 Sequence
+0:38 move second child to first child (mediump 2-component vector of uint)
+0:38 'u10' (mediump 2-component vector of uint)
+0:38 max (mediump 2-component vector of uint)
+0:38 'uv2x' (mediump 2-component vector of uint)
+0:38 'uv2y' (mediump 2-component vector of uint)
+0:39 Sequence
+0:39 move second child to first child (mediump 2-component vector of uint)
+0:39 'u11' (mediump 2-component vector of uint)
+0:39 max (mediump 2-component vector of uint)
+0:39 'uv2x' (mediump 2-component vector of uint)
+0:39 'uy' (mediump uint)
+0:40 Sequence
+0:40 move second child to first child (mediump 4-component vector of int)
+0:40 'iv16' (mediump 4-component vector of int)
+0:40 clamp (mediump 4-component vector of int)
+0:40 'iv4a' (mediump 4-component vector of int)
+0:40 'iv4a' (mediump 4-component vector of int)
+0:40 'iv4b' (mediump 4-component vector of int)
+0:41 Sequence
+0:41 move second child to first child (mediump 4-component vector of int)
+0:41 'iv17' (mediump 4-component vector of int)
+0:41 clamp (mediump 4-component vector of int)
+0:41 'iv4a' (mediump 4-component vector of int)
+0:41 'imin' (mediump int)
+0:41 'imax' (mediump int)
+0:42 Sequence
+0:42 move second child to first child (mediump 2-component vector of uint)
+0:42 'u12' (mediump 2-component vector of uint)
+0:42 clamp (mediump 2-component vector of uint)
+0:42 'uv2x' (mediump 2-component vector of uint)
+0:42 'uv2y' (mediump 2-component vector of uint)
+0:42 'uv2c' (mediump 2-component vector of uint)
+0:43 Sequence
+0:43 move second child to first child (mediump 4-component vector of uint)
+0:43 'uv10' (mediump 4-component vector of uint)
+0:43 clamp (mediump 4-component vector of uint)
+0:43 'uv4y' (mediump 4-component vector of uint)
+0:43 'umin' (mediump uint)
+0:43 'umax' (mediump uint)
+0:47 Sequence
+0:47 move second child to first child (mediump 3-component vector of float)
+0:47 'v11' (mediump 3-component vector of float)
+0:47 modf (mediump 3-component vector of float)
+0:47 'x' (mediump 3-component vector of float)
+0:47 'modfOut' (mediump 3-component vector of float)
+0:49 Sequence
+0:49 move second child to first child (mediump float)
+0:49 't' (mediump float)
+0:49 trunc (mediump float)
+0:49 'f' (mediump float)
+0:50 Sequence
+0:50 move second child to first child (mediump 2-component vector of float)
+0:50 'v12' (mediump 2-component vector of float)
+0:50 round (mediump 2-component vector of float)
+0:50 'v2a' (mediump 2-component vector of float)
+0:51 Sequence
+0:51 move second child to first child (mediump 2-component vector of float)
+0:51 'v13' (mediump 2-component vector of float)
+0:51 roundEven (mediump 2-component vector of float)
+0:51 'v2a' (mediump 2-component vector of float)
+0:52 Sequence
+0:52 move second child to first child (2-component vector of bool)
+0:52 'b10' (2-component vector of bool)
+0:52 isnan (2-component vector of bool)
+0:52 'v2a' (mediump 2-component vector of float)
+0:53 Sequence
+0:53 move second child to first child (4-component vector of bool)
+0:53 'b11' (4-component vector of bool)
+0:53 isinf (4-component vector of bool)
+0:53 'v4' (mediump 4-component vector of float)
+0:56 Sequence
+0:56 move second child to first child (mediump int)
+0:56 'i' (mediump int)
+0:56 floatBitsToInt (mediump int)
+0:56 'f' (mediump float)
+0:57 Sequence
+0:57 move second child to first child (mediump 4-component vector of uint)
+0:57 'uv11' (mediump 4-component vector of uint)
+0:57 floatBitsToUint (mediump 4-component vector of uint)
+0:57 'v4' (mediump 4-component vector of float)
+0:58 Sequence
+0:58 move second child to first child (mediump 4-component vector of float)
+0:58 'v14' (mediump 4-component vector of float)
+0:58 intBitsToFloat (mediump 4-component vector of float)
+0:58 'iv4a' (mediump 4-component vector of int)
+0:59 Sequence
+0:59 move second child to first child (mediump 2-component vector of float)
+0:59 'v15' (mediump 2-component vector of float)
+0:59 uintBitsToFloat (mediump 2-component vector of float)
+0:59 'uv2c' (mediump 2-component vector of uint)
+0:62 Sequence
+0:62 move second child to first child (highp uint)
+0:62 'u19' (mediump uint)
+0:62 packSnorm2x16 (highp uint)
+0:62 'v2a' (mediump 2-component vector of float)
+0:63 Sequence
+0:63 move second child to first child (highp 2-component vector of float)
+0:63 'v20' (mediump 2-component vector of float)
+0:63 unpackSnorm2x16 (highp 2-component vector of float)
+0:63 'uy' (mediump uint)
+0:64 Sequence
+0:64 move second child to first child (highp uint)
+0:64 'u15' (mediump uint)
+0:64 packUnorm2x16 (highp uint)
+0:64 'v2a' (mediump 2-component vector of float)
+0:65 Sequence
+0:65 move second child to first child (highp 2-component vector of float)
+0:65 'v16' (mediump 2-component vector of float)
+0:65 unpackUnorm2x16 (highp 2-component vector of float)
+0:65 'uy' (mediump uint)
+0:66 Sequence
+0:66 move second child to first child (highp uint)
+0:66 'u17' (mediump uint)
+0:66 packHalf2x16 (highp uint)
+0:66 'v2b' (mediump 2-component vector of float)
+0:67 Sequence
+0:67 move second child to first child (mediump 2-component vector of float)
+0:67 'v18' (mediump 2-component vector of float)
+0:67 unpackHalf2x16 (mediump 2-component vector of float)
+0:67 'uy' (mediump uint)
+0:70 0.000000
+
diff --git a/Test/baseResults/300block.frag.out b/Test/baseResults/300block.frag.out
new file mode 100644
index 0000000..ec460b4
--- /dev/null
+++ b/Test/baseResults/300block.frag.out
@@ -0,0 +1,47 @@
+ERROR: 0:10: '' : cannot nest a structure definition inside a structure or block
+ERROR: 0:21: '' : cannot nest a structure definition inside a structure or block
+ERROR: 0:17: 'sampler' : member of block cannot be a sampler type
+ERROR: 0:45: 'variable indexing block array' : not supported with this profile: es
+ERROR: 4 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:42 Function Definition: main( (void)
+0:42 Function Parameters:
+0:44 Sequence
+0:44 Function Call: texture(is31;vf3; (mediump 4-component vector of int)
+0:44 sampler: direct index for structure (lowp isampler3D)
+0:44 's' (uniform structure)
+0:44 2 (const int)
+0:44 Construct vec3 (3-component vector of float)
+0:44 Convert int to float (float)
+0:44 ni: direct index for structure (layout(column_major shared ) mediump int)
+0:44 'inst' (layout(shared ) uniform block)
+0:44 1 (const int)
+0:44 Convert uint to float (float)
+0:44 direct index (mediump uint)
+0:44 bv: direct index for structure (layout(column_major shared ) mediump 4-component vector of uint)
+0:44 '__anon__0' (layout(shared ) uniform block)
+0:44 0 (const uint)
+0:44 1 (const int)
+0:44 Convert uint to float (float)
+0:44 direct index (mediump uint)
+0:44 nbv: direct index for structure (layout(column_major shared ) mediump 4-component vector of uint)
+0:44 direct index (layout(shared ) uniform block)
+0:44 'insts' (layout(shared ) uniform 4-element array of block)
+0:44 2 (const int)
+0:44 0 (const int)
+0:44 2 (const int)
+0:45 indirect index (layout(shared ) uniform block)
+0:45 'insts' (layout(shared ) uniform 4-element array of block)
+0:45 direct index (mediump uint)
+0:45 v: direct index for structure (mediump 4-component vector of uint)
+0:45 's' (uniform structure)
+0:45 1 (const int)
+0:45 0 (const int)
+0:? Linker Objects
+0:? 's' (uniform structure)
+0:? '__anon__0' (layout(shared ) uniform block)
+0:? 'inst' (layout(shared ) uniform block)
+0:? 'insts' (layout(shared ) uniform 4-element array of block)
+0:? '__anon__1' (layout(shared ) uniform block)
+
diff --git a/Test/baseResults/300layout.frag.out b/Test/baseResults/300layout.frag.out
new file mode 100644
index 0000000..2610ad8
--- /dev/null
+++ b/Test/baseResults/300layout.frag.out
@@ -0,0 +1,24 @@
+ERROR: 0:4: 'color' : can only use location layout qualifier on a vertex input or fragment output
+ERROR: 1 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:10 Function Definition: main( (void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 move second child to first child (mediump 4-component vector of float)
+0:12 'c' (layout(location=1 ) out mediump 4-component vector of float)
+0:12 'color' (layout(location=2 ) smooth in mediump 4-component vector of float)
+0:13 move second child to first child (mediump 4-component vector of float)
+0:13 'p' (layout(location=3 ) out mediump 4-component vector of float)
+0:13 'pos' (smooth in mediump 4-component vector of float)
+0:14 move second child to first child (mediump 4-component vector of float)
+0:14 direct index (layout(location=4 ) out mediump 4-component vector of float)
+0:14 'q' (layout(location=4 ) out 2-element array of mediump 4-component vector of float)
+0:14 1 (const int)
+0:14 'pos' (smooth in mediump 4-component vector of float)
+0:? Linker Objects
+0:? 'pos' (smooth in mediump 4-component vector of float)
+0:? 'color' (layout(location=2 ) smooth in mediump 4-component vector of float)
+0:? 'c' (layout(location=1 ) out mediump 4-component vector of float)
+0:? 'p' (layout(location=3 ) out mediump 4-component vector of float)
+
diff --git a/Test/baseResults/300layout.vert.out b/Test/baseResults/300layout.vert.out
new file mode 100644
index 0000000..241d003
--- /dev/null
+++ b/Test/baseResults/300layout.vert.out
@@ -0,0 +1,60 @@
+ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es
+ERROR: 0:8: 'in' : cannot be a structure or array
+ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es
+ERROR: 0:12: 'badm4' : cannot specify matrix layout on a variable declaration
+ERROR: 0:12: 'badm4' : cannot specify packing on a variable declaration
+ERROR: 0:15: 'badf' : member of uniform block cannot have an auxiliary or interpolation qualifier
+ERROR: 0:15: 'badg' : member storage qualifier cannot contradict block storage qualifier
+ERROR: 0:28: 'T3' : nameless block contains a member that already has a name at global scope
+ERROR: 0:35: 'badout' : only uniform interface blocks are supported
+ERROR: 0:39: 'badout' : can only use location layout qualifier on a vertex input or fragment output
+ERROR: 0:47: 'shared' : not supported with this profile: es
+ERROR: 0:47: 'shared' : not supported in this stage: vertex
+ERROR: 12 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:41 Function Definition: main( (void)
+0:41 Function Parameters:
+0:43 Sequence
+0:43 move second child to first child (highp 4-component vector of float)
+0:43 'pos' (smooth out highp 4-component vector of float)
+0:43 vector-times-matrix (highp 4-component vector of float)
+0:43 'p' (layout(location=3 ) in highp 4-component vector of float)
+0:43 add (highp 4X4 matrix of float)
+0:43 add (highp 4X4 matrix of float)
+0:43 add (highp 4X4 matrix of float)
+0:43 add (highp 4X4 matrix of float)
+0:43 M1: direct index for structure (layout(row_major std140 ) highp 4X4 matrix of float)
+0:43 'tblock' (layout(std140 ) uniform block)
+0:43 0 (const int)
+0:43 M2: direct index for structure (layout(column_major std140 ) highp 4X4 matrix of float)
+0:43 'tblock' (layout(std140 ) uniform block)
+0:43 1 (const int)
+0:43 M4: direct index for structure (layout(row_major shared ) highp 4X4 matrix of float)
+0:43 '__anon__1' (layout(shared ) uniform block)
+0:43 1 (const uint)
+0:43 M3: direct index for structure (layout(column_major shared ) highp 4X4 matrix of float)
+0:43 '__anon__1' (layout(shared ) uniform block)
+0:43 0 (const uint)
+0:43 t2m: direct index for structure (layout(row_major shared ) highp 4X4 matrix of float)
+0:43 '__anon__0' (layout(shared ) uniform block)
+0:43 1 (const uint)
+0:44 move second child to first child (highp 3-component vector of float)
+0:44 'color' (smooth out highp 3-component vector of float)
+0:44 vector-times-matrix (highp 3-component vector of float)
+0:44 'c' (layout(location=7 ) in highp 3-component vector of float)
+0:44 N1: direct index for structure (layout(row_major std140 ) highp 3X3 matrix of float)
+0:44 'tblock' (layout(std140 ) uniform block)
+0:44 2 (const int)
+0:? Linker Objects
+0:? 'c' (layout(location=7 ) in highp 3-component vector of float)
+0:? 'p' (layout(location=3 ) in highp 4-component vector of float)
+0:? 'pos' (smooth out highp 4-component vector of float)
+0:? 'color' (smooth out highp 3-component vector of float)
+0:? 'badm4' (layout(column_major shared ) uniform highp 4X4 matrix of float)
+0:? 'tblock' (layout(std140 ) uniform block)
+0:? '__anon__0' (layout(shared ) uniform block)
+0:? 'badout' (layout(location=10 ) smooth out highp 4-component vector of float)
+0:? 'gl_VertexID' (gl_VertexId highp int)
+0:? 'gl_InstanceID' (gl_InstanceId highp int)
+
diff --git a/Test/baseResults/300operations.frag.out b/Test/baseResults/300operations.frag.out
new file mode 100644
index 0000000..effb530
--- /dev/null
+++ b/Test/baseResults/300operations.frag.out
@@ -0,0 +1,202 @@
+ERROR: 0:11: 'float' : type requires declaration of default precision qualifier
+ERROR: 0:30: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'layout(shared ) uniform block' and a right operand of type 'layout(shared ) uniform block' (or there is no acceptable conversion)
+ERROR: 0:31: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'structure' and a right operand of type 'structure' (or there is no acceptable conversion)
+ERROR: 0:32: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)
+ERROR: 0:33: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)
+ERROR: 0:34: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump int' (or there is no acceptable conversion)
+ERROR: 0:35: 'assign' : cannot convert from 'mediump 4-component vector of int' to 'mediump 3-component vector of int'
+ERROR: 0:36: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type 'mediump 4-component vector of int' and a right operand of type 'mediump 4-component vector of uint' (or there is no acceptable conversion)
+ERROR: 0:37: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:38: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)
+ERROR: 0:39: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type '5-element array of mediump float' (or there is no acceptable conversion)
+ERROR: 0:40: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type 'bool' and a right operand of type 'bool' (or there is no acceptable conversion)
+ERROR: 0:42: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump float' (or there is no acceptable conversion)
+ERROR: 0:43: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)
+ERROR: 0:44: '%' : wrong operand types: no operation '%' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump uint' (or there is no acceptable conversion)
+ERROR: 0:45: '++' : l-value required "instanceName" (can't modify a uniform)
+ERROR: 0:45: '++' : wrong operand type no operation '++' exists that takes an operand of type layout(shared ) uniform block (or there is no acceptable conversion)
+ERROR: 0:46: '++' : wrong operand type no operation '++' exists that takes an operand of type structure (or there is no acceptable conversion)
+ERROR: 0:47: '--' : wrong operand type no operation '--' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)
+ERROR: 0:48: '++' : wrong operand type no operation '++' exists that takes an operand of type 3-component vector of bool (or there is no acceptable conversion)
+ERROR: 0:50: '<' : wrong operand types: no operation '<' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)
+ERROR: 0:51: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)
+ERROR: 0:52: '!=' : wrong operand types: no operation '!=' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 4X4 matrix of float' (or there is no acceptable conversion)
+ERROR: 0:53: '>=' : wrong operand types: no operation '>=' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump uint' (or there is no acceptable conversion)
+ERROR: 0:54: '<=' : wrong operand types: no operation '<=' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type '5-element array of mediump float' (or there is no acceptable conversion)
+ERROR: 0:55: '>' : wrong operand types: no operation '>' exists that takes a left-hand operand of type 'bool' and a right operand of type 'bool' (or there is no acceptable conversion)
+ERROR: 0:57: '&&' : wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'bool' and a right operand of type '3-component vector of bool' (or there is no acceptable conversion)
+ERROR: 0:58: '^^' : wrong operand types: no operation '^^' exists that takes a left-hand operand of type '3-component vector of bool' and a right operand of type '3-component vector of bool' (or there is no acceptable conversion)
+ERROR: 0:59: '||' : wrong operand types: no operation '||' exists that takes a left-hand operand of type '3-component vector of bool' and a right operand of type 'bool' (or there is no acceptable conversion)
+ERROR: 0:60: '&&' : wrong operand types: no operation '&&' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump int' (or there is no acceptable conversion)
+ERROR: 0:61: '||' : wrong operand types: no operation '||' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump uint' (or there is no acceptable conversion)
+ERROR: 0:62: '^^' : wrong operand types: no operation '^^' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)
+ERROR: 0:64: '!' : wrong operand type no operation '!' exists that takes an operand of type mediump uint (or there is no acceptable conversion)
+ERROR: 0:65: '!' : wrong operand type no operation '!' exists that takes an operand of type mediump int (or there is no acceptable conversion)
+ERROR: 0:66: '!' : wrong operand type no operation '!' exists that takes an operand of type mediump 2X2 matrix of float (or there is no acceptable conversion)
+ERROR: 0:67: '!' : wrong operand type no operation '!' exists that takes an operand of type mediump 3-component vector of float (or there is no acceptable conversion)
+ERROR: 0:68: '!' : wrong operand type no operation '!' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)
+ERROR: 0:70: '~' : wrong operand type no operation '~' exists that takes an operand of type mediump float (or there is no acceptable conversion)
+ERROR: 0:71: '~' : wrong operand type no operation '~' exists that takes an operand of type mediump 4X4 matrix of float (or there is no acceptable conversion)
+ERROR: 0:72: '~' : wrong operand type no operation '~' exists that takes an operand of type mediump 3-component vector of float (or there is no acceptable conversion)
+ERROR: 0:73: '~' : wrong operand type no operation '~' exists that takes an operand of type 5-element array of mediump float (or there is no acceptable conversion)
+ERROR: 0:74: '~' : wrong operand type no operation '~' exists that takes an operand of type layout(shared ) uniform block (or there is no acceptable conversion)
+ERROR: 0:76: '<<' : wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of int' (or there is no acceptable conversion)
+ERROR: 0:77: '<<' : wrong operand types: no operation '<<' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)
+ERROR: 0:78: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump float' (or there is no acceptable conversion)
+ERROR: 0:79: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump float' and a right operand of type 'mediump int' (or there is no acceptable conversion)
+ERROR: 0:80: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump 4X4 matrix of float' and a right operand of type 'mediump int' (or there is no acceptable conversion)
+ERROR: 0:81: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type '5-element array of mediump float' and a right operand of type 'mediump uint' (or there is no acceptable conversion)
+ERROR: 0:82: '>>' : wrong operand types: no operation '>>' exists that takes a left-hand operand of type 'mediump 3-component vector of int' and a right operand of type 'mediump 4-component vector of int' (or there is no acceptable conversion)
+ERROR: 0:84: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump uint' (or there is no acceptable conversion)
+ERROR: 0:85: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)
+ERROR: 0:86: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'mediump 3-component vector of uint' (or there is no acceptable conversion)
+ERROR: 0:87: '&' : wrong operand types: no operation '&' exists that takes a left-hand operand of type 'mediump uint' and a right operand of type 'mediump float' (or there is no acceptable conversion)
+ERROR: 0:88: '|' : wrong operand types: no operation '|' exists that takes a left-hand operand of type 'mediump 2X2 matrix of float' and a right operand of type 'mediump 2X2 matrix of float' (or there is no acceptable conversion)
+ERROR: 0:89: '^' : wrong operand types: no operation '^' exists that takes a left-hand operand of type 'structure' and a right operand of type 'structure' (or there is no acceptable conversion)
+ERROR: 0:90: 'assign' : l-value required
+ERROR: 56 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:13 Function Definition: main( (void)
+0:13 Function Parameters:
+0:? Sequence
+0:30 'instanceName' (layout(shared ) uniform block)
+0:31 's' (structure)
+0:32 'i' (mediump int)
+0:33 'u' (mediump uint)
+0:34 'u' (mediump uint)
+0:35 'iv3' (mediump 3-component vector of int)
+0:36 'iv4' (mediump 4-component vector of int)
+0:37 'i' (mediump int)
+0:38 'iv3' (mediump 3-component vector of int)
+0:39 'a' (5-element array of mediump float)
+0:40 'b' (bool)
+0:42 'f' (mediump float)
+0:43 'i' (mediump int)
+0:44 'f' (mediump float)
+0:45 'instanceName' (layout(shared ) uniform block)
+0:46 's' (structure)
+0:47 'a' (5-element array of mediump float)
+0:48 'b3' (3-component vector of bool)
+0:50 false (const bool)
+0:51 false (const bool)
+0:52 false (const bool)
+0:53 false (const bool)
+0:54 false (const bool)
+0:55 false (const bool)
+0:57 false (const bool)
+0:58 false (const bool)
+0:59 false (const bool)
+0:60 false (const bool)
+0:61 false (const bool)
+0:62 false (const bool)
+0:64 'u' (mediump uint)
+0:65 'i' (mediump int)
+0:66 'm2' (mediump 2X2 matrix of float)
+0:67 'v3' (mediump 3-component vector of float)
+0:68 'a' (5-element array of mediump float)
+0:70 'f' (mediump float)
+0:71 'm4' (mediump 4X4 matrix of float)
+0:72 'v3' (mediump 3-component vector of float)
+0:73 'a' (5-element array of mediump float)
+0:74 'instanceName' (layout(shared ) uniform block)
+0:76 'i' (mediump int)
+0:77 'u' (mediump uint)
+0:78 'i' (mediump int)
+0:79 'f' (mediump float)
+0:80 'm4' (mediump 4X4 matrix of float)
+0:81 'a' (5-element array of mediump float)
+0:82 'iv3' (mediump 3-component vector of int)
+0:84 'i' (mediump int)
+0:85 'u' (mediump uint)
+0:86 'i' (mediump int)
+0:87 'u' (mediump uint)
+0:88 'm2' (mediump 2X2 matrix of float)
+0:89 's' (structure)
+0:90 move second child to first child (mediump float)
+0:90 move second child to first child (mediump float)
+0:90 'f' (mediump float)
+0:90 'f' (mediump float)
+0:90 'f' (mediump float)
+0:93 vector-scale (mediump 4-component vector of float)
+0:93 'f' (mediump float)
+0:93 'v4' (mediump 4-component vector of float)
+0:94 add (mediump uint)
+0:94 'u' (mediump uint)
+0:94 'u' (mediump uint)
+0:95 divide (mediump 4-component vector of uint)
+0:95 'uv4' (mediump 4-component vector of uint)
+0:95 'u' (mediump uint)
+0:96 subtract second child into first child (mediump 3-component vector of int)
+0:96 'iv3' (mediump 3-component vector of int)
+0:96 'iv3' (mediump 3-component vector of int)
+0:98 mod second child into first child (mediump int)
+0:98 'i' (mediump int)
+0:98 3 (const int)
+0:99 mod (mediump 3-component vector of uint)
+0:99 'uv3' (mediump 3-component vector of uint)
+0:99 4 (const uint)
+0:100 Pre-Decrement (mediump 2X2 matrix of float)
+0:100 'm2' (mediump 2X2 matrix of float)
+0:101 Post-Increment (mediump 4-component vector of int)
+0:101 'iv4' (mediump 4-component vector of int)
+0:103 Compare Not Equal (bool)
+0:103 'm4' (mediump 4X4 matrix of float)
+0:103 'm4' (mediump 4X4 matrix of float)
+0:104 Compare Equal (bool)
+0:104 'm2' (mediump 2X2 matrix of float)
+0:104 'm2' (mediump 2X2 matrix of float)
+0:105 Compare Less Than or Equal (bool)
+0:105 'i' (mediump int)
+0:105 'i' (mediump int)
+0:106 Compare Equal (bool)
+0:106 'a' (5-element array of mediump float)
+0:106 'a' (5-element array of mediump float)
+0:107 Compare Not Equal (bool)
+0:107 's' (structure)
+0:107 's' (structure)
+0:109 logical-and (bool)
+0:109 'b' (bool)
+0:109 'b' (bool)
+0:110 logical-or (bool)
+0:110 'b' (bool)
+0:110 'b' (bool)
+0:111 logical-xor (bool)
+0:111 'b' (bool)
+0:111 'b' (bool)
+0:113 Comma (mediump 3-component vector of uint)
+0:113 Negate conditional (bool)
+0:113 'b' (bool)
+0:113 'uv3' (mediump 3-component vector of uint)
+0:115 Bitwise not (mediump int)
+0:115 'i' (mediump int)
+0:116 Bitwise not (mediump uint)
+0:116 'u' (mediump uint)
+0:117 Bitwise not (mediump 3-component vector of uint)
+0:117 'uv3' (mediump 3-component vector of uint)
+0:118 Bitwise not (mediump 3-component vector of int)
+0:118 'iv3' (mediump 3-component vector of int)
+0:120 left shift second child into first child (mediump 3-component vector of uint)
+0:120 'uv3' (mediump 3-component vector of uint)
+0:120 'i' (mediump int)
+0:121 right-shift (mediump int)
+0:121 'i' (mediump int)
+0:121 'i' (mediump int)
+0:122 left-shift (mediump uint)
+0:122 'u' (mediump uint)
+0:122 'u' (mediump uint)
+0:123 right-shift (mediump 3-component vector of int)
+0:123 'iv3' (mediump 3-component vector of int)
+0:123 'iv3' (mediump 3-component vector of int)
+0:125 bitwise and (mediump int)
+0:125 'i' (mediump int)
+0:125 'i' (mediump int)
+0:126 inclusive-or (mediump uint)
+0:126 'u' (mediump uint)
+0:126 'u' (mediump uint)
+0:127 exclusive-or (mediump 3-component vector of int)
+0:127 'iv3' (mediump 3-component vector of int)
+0:127 'iv3' (mediump 3-component vector of int)
+0:? Linker Objects
+0:? 'instanceName' (layout(shared ) uniform block)
+
diff --git a/Test/baseResults/300scope.vert.out b/Test/baseResults/300scope.vert.out
new file mode 100644
index 0000000..2eef9be
--- /dev/null
+++ b/Test/baseResults/300scope.vert.out
@@ -0,0 +1,95 @@
+ERROR: 0:5: 'a' : redefinition
+ERROR: 0:17: 'b' : illegal redeclaration
+ERROR: 0:19: 'f' : redefinition
+ERROR: 0:20: 'tan' : redefinition
+ERROR: 0:21: 'redeclaration of built-in function' : not supported with this profile: es
+ERROR: 0:22: 'redeclaration of built-in function' : not supported with this profile: es
+ERROR: 0:31: 'local function declaration' : not supported with this profile: es
+ERROR: 0:50: 'z' : undeclared identifier
+ERROR: 0:50: 'z' : redefinition
+ERROR: 9 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:3 Function Definition: f(i1;i1;i1; (highp int)
+0:3 Function Parameters:
+0:3 'a' (in highp int)
+0:3 'b' (in highp int)
+0:3 'c' (in highp int)
+0:? Sequence
+0:8 Sequence
+0:8 Sequence
+0:8 move second child to first child (highp float)
+0:8 'a' (highp float)
+0:8 add (highp float)
+0:8 Convert int to float (highp float)
+0:8 'a' (in highp int)
+0:8 1.000000
+0:11 Branch: Return with expression
+0:11 'a' (in highp int)
+0:22 Function Definition: cos(f1; (highp float)
+0:22 Function Parameters:
+0:22 'x' (in highp float)
+0:24 Sequence
+0:24 Branch: Return with expression
+0:24 1.000000
+0:29 Function Definition: main( (void)
+0:29 Function Parameters:
+0:? Sequence
+0:32 Function Call: g( (highp int)
+0:35 'sin' (highp float)
+0:37 Function Call: f(i1;i1;i1; (highp int)
+0:37 1 (const int)
+0:37 2 (const int)
+0:37 3 (const int)
+0:40 move second child to first child (highp float)
+0:40 'f' (highp float)
+0:40 3.000000
+0:42 move second child to first child (highp 4-component vector of float)
+0:42 'gl_Position' (invariant gl_Position highp 4-component vector of float)
+0:42 Construct vec4 (highp 4-component vector of float)
+0:42 'f' (highp float)
+0:44 Sequence
+0:44 Sequence
+0:44 move second child to first child (highp int)
+0:44 'f' (highp int)
+0:44 0 (const int)
+0:44 Loop with condition tested first
+0:44 Loop Condition
+0:44 Compare Less Than (bool)
+0:44 'f' (highp int)
+0:44 10 (const int)
+0:44 Loop Body
+0:45 Pre-Increment (highp int)
+0:45 'f' (highp int)
+0:44 Loop Terminal Expression
+0:44 Pre-Increment (highp int)
+0:44 'f' (highp int)
+0:47 Sequence
+0:47 move second child to first child (highp int)
+0:47 'x' (highp int)
+0:47 1 (const int)
+0:49 Sequence
+0:49 Sequence
+0:49 move second child to first child (highp float)
+0:49 'x' (highp float)
+0:49 2.000000
+0:49 move second child to first child (highp float)
+0:49 'y' (highp float)
+0:49 'x' (highp float)
+0:53 Sequence
+0:53 Sequence
+0:53 move second child to first child (highp int)
+0:53 'x' (highp int)
+0:53 'x' (highp int)
+0:61 Sequence
+0:61 Sequence
+0:61 move second child to first child (structure)
+0:61 'S' (structure)
+0:61 0 (const int)
+0:62 x: direct index for structure (highp int)
+0:62 'S' (structure)
+0:62 0 (const int)
+0:? Linker Objects
+0:? 'gl_VertexID' (gl_VertexId highp int)
+0:? 'gl_InstanceID' (gl_InstanceId highp int)
+
diff --git a/Test/baseResults/330.frag.out b/Test/baseResults/330.frag.out
new file mode 100644
index 0000000..61aa5bf
--- /dev/null
+++ b/Test/baseResults/330.frag.out
@@ -0,0 +1,22 @@
+WARNING: 0:6: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:8 Function Definition: main( (void)
+0:8 Function Parameters:
+0:10 Sequence
+0:10 move second child to first child (4-component vector of float)
+0:10 'gl_FragColor' (fragColor 4-component vector of float)
+0:10 'varyingVar' (smooth in 4-component vector of float)
+0:11 move second child to first child (4-component vector of float)
+0:11 direct index (fragColor 4-component vector of float)
+0:11 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:11 1 (const int)
+0:11 'inVar' (smooth in 4-component vector of float)
+0:12 Sequence
+0:12 move second child to first child (int)
+0:12 'buffer' (int)
+0:12 4 (const int)
+0:? Linker Objects
+0:? 'inVar' (smooth in 4-component vector of float)
+0:? 'outVar' (out 4-component vector of float)
+0:? 'varyingVar' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/330comp.frag.out b/Test/baseResults/330comp.frag.out
new file mode 100644
index 0000000..993804c
--- /dev/null
+++ b/Test/baseResults/330comp.frag.out
@@ -0,0 +1,19 @@
+0:? Sequence
+0:8 Function Definition: main( (void)
+0:8 Function Parameters:
+0:10 Sequence
+0:10 move second child to first child (4-component vector of float)
+0:10 'gl_FragColor' (fragColor 4-component vector of float)
+0:10 'varyingVar' (smooth in 4-component vector of float)
+0:11 move second child to first child (4-component vector of float)
+0:11 direct index (fragColor 4-component vector of float)
+0:11 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:11 1 (const int)
+0:11 vector-times-matrix (4-component vector of float)
+0:11 'inVar' (smooth in 4-component vector of float)
+0:11 'gl_ModelViewMatrix' (uniform 4X4 matrix of float)
+0:? Linker Objects
+0:? 'inVar' (smooth in 4-component vector of float)
+0:? 'outVar' (out 4-component vector of float)
+0:? 'varyingVar' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out
new file mode 100644
index 0000000..fe78303
--- /dev/null
+++ b/Test/baseResults/400.frag.out
@@ -0,0 +1,18 @@
+ERROR: 0:11: 'variable indexing sampler array' : not supported for this version or the enabled extensions
+ERROR: 1 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:8 Function Definition: main( (void)
+0:8 Function Parameters:
+0:? Sequence
+0:11 move second child to first child (4-component vector of float)
+0:11 'v' (4-component vector of float)
+0:11 Function Call: texture(s21;vf2; (4-component vector of float)
+0:11 indirect index (uniform sampler2D)
+0:11 'arrayedSampler' (uniform 5-element array of sampler2D)
+0:11 'i' (flat in int)
+0:11 'c2D' (smooth in 2-component vector of float)
+0:? Linker Objects
+0:? 'c2D' (smooth in 2-component vector of float)
+0:? 'i' (flat in int)
+
diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out
new file mode 100644
index 0000000..50c2093
--- /dev/null
+++ b/Test/baseResults/420.vert.out
@@ -0,0 +1,9 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420
+ERROR: 0:7: '' : vertex input cannot be further qualified
+ERROR: 0:11: '' : can only have one interpolation qualifier (flat, smooth, noperspective)
+ERROR: 0:12: '' : can only have one auxiliary qualifier (centroid, patch, and sample)
+ERROR: 0:13: 'uniform' : too many storage qualifiers
+ERROR: 5 compilation errors. No code generated.
+
+
diff --git a/Test/baseResults/430scope.vert.out b/Test/baseResults/430scope.vert.out
new file mode 100644
index 0000000..540d52b
--- /dev/null
+++ b/Test/baseResults/430scope.vert.out
@@ -0,0 +1,91 @@
+ERROR: 0:5: 'a' : redefinition
+ERROR: 0:17: 'b' : illegal redeclaration
+ERROR: 0:19: 'f' : redefinition
+ERROR: 0:50: 'z' : undeclared identifier
+ERROR: 0:50: 'z' : redefinition
+ERROR: 5 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:3 Function Definition: f(i1;i1;i1; (int)
+0:3 Function Parameters:
+0:3 'a' (in int)
+0:3 'b' (in int)
+0:3 'c' (in int)
+0:? Sequence
+0:8 Sequence
+0:8 Sequence
+0:8 move second child to first child (float)
+0:8 'a' (float)
+0:8 add (float)
+0:8 Convert int to float (float)
+0:8 'a' (in int)
+0:8 1.000000
+0:11 Branch: Return with expression
+0:11 'a' (in int)
+0:22 Function Definition: cos(f1; (float)
+0:22 Function Parameters:
+0:22 'x' (in float)
+0:24 Sequence
+0:24 Branch: Return with expression
+0:24 1.000000
+0:29 Function Definition: main( (void)
+0:29 Function Parameters:
+0:? Sequence
+0:32 Function Call: g( (int)
+0:35 'sin' (float)
+0:37 Function Call: f(i1;i1;i1; (int)
+0:37 1 (const int)
+0:37 2 (const int)
+0:37 3 (const int)
+0:40 move second child to first child (float)
+0:40 'f' (float)
+0:40 3.000000
+0:42 move second child to first child (4-component vector of float)
+0:42 'gl_Position' (invariant gl_Position 4-component vector of float)
+0:42 Construct vec4 (4-component vector of float)
+0:42 'f' (float)
+0:44 Sequence
+0:44 Sequence
+0:44 move second child to first child (int)
+0:44 'f' (int)
+0:44 0 (const int)
+0:44 Loop with condition tested first
+0:44 Loop Condition
+0:44 Compare Less Than (bool)
+0:44 'f' (int)
+0:44 10 (const int)
+0:44 Loop Body
+0:45 Pre-Increment (int)
+0:45 'f' (int)
+0:44 Loop Terminal Expression
+0:44 Pre-Increment (int)
+0:44 'f' (int)
+0:47 Sequence
+0:47 move second child to first child (int)
+0:47 'x' (int)
+0:47 1 (const int)
+0:49 Sequence
+0:49 Sequence
+0:49 move second child to first child (float)
+0:49 'x' (float)
+0:49 2.000000
+0:49 move second child to first child (float)
+0:49 'y' (float)
+0:49 'x' (float)
+0:53 Sequence
+0:53 Sequence
+0:53 move second child to first child (int)
+0:53 'x' (int)
+0:53 'x' (int)
+0:61 Sequence
+0:61 Sequence
+0:61 move second child to first child (structure)
+0:61 'S' (structure)
+0:61 0 (const int)
+0:62 x: direct index for structure (int)
+0:62 'S' (structure)
+0:62 0 (const int)
+0:? Linker Objects
+0:? 'gl_VertexID' (gl_VertexId int)
+0:? 'gl_InstanceID' (gl_InstanceId int)
+
diff --git a/Test/baseResults/Operations.frag.out b/Test/baseResults/Operations.frag.out
new file mode 100644
index 0000000..ce568bd
--- /dev/null
+++ b/Test/baseResults/Operations.frag.out
@@ -0,0 +1,408 @@
+0:? Sequence
+0:15 Function Definition: main( (void)
+0:15 Function Parameters:
+0:? Sequence
+0:27 move second child to first child (4-component vector of float)
+0:27 'v' (4-component vector of float)
+0:27 radians (4-component vector of float)
+0:27 'uv4' (uniform 4-component vector of float)
+0:28 add second child into first child (4-component vector of float)
+0:28 'v' (4-component vector of float)
+0:28 degrees (4-component vector of float)
+0:28 'v' (4-component vector of float)
+0:29 add second child into first child (4-component vector of float)
+0:29 'v' (4-component vector of float)
+0:29 Comma (4-component vector of float)
+0:29 move second child to first child (int)
+0:29 'i' (int)
+0:29 component-wise multiply (int)
+0:29 'ui' (uniform int)
+0:29 'ui' (uniform int)
+0:29 sine (4-component vector of float)
+0:29 'v' (4-component vector of float)
+0:30 add second child into first child (4-component vector of float)
+0:30 'v' (4-component vector of float)
+0:30 cosine (4-component vector of float)
+0:30 'v' (4-component vector of float)
+0:31 add second child into first child (4-component vector of float)
+0:31 'v' (4-component vector of float)
+0:31 tangent (4-component vector of float)
+0:31 'v' (4-component vector of float)
+0:32 add second child into first child (4-component vector of float)
+0:32 'v' (4-component vector of float)
+0:32 arc sine (4-component vector of float)
+0:32 'v' (4-component vector of float)
+0:33 add second child into first child (4-component vector of float)
+0:33 'v' (4-component vector of float)
+0:33 arc cosine (4-component vector of float)
+0:33 'v' (4-component vector of float)
+0:35 add second child into first child (4-component vector of float)
+0:35 'v' (4-component vector of float)
+0:35 arc tangent (4-component vector of float)
+0:35 'v' (4-component vector of float)
+0:36 add second child into first child (4-component vector of float)
+0:36 'v' (4-component vector of float)
+0:36 hyp. sine (4-component vector of float)
+0:36 'v' (4-component vector of float)
+0:37 add second child into first child (4-component vector of float)
+0:37 'v' (4-component vector of float)
+0:37 hyp. cosine (4-component vector of float)
+0:37 'v' (4-component vector of float)
+0:38 add second child into first child (4-component vector of float)
+0:38 'v' (4-component vector of float)
+0:38 hyp. tangent (4-component vector of float)
+0:38 'v' (4-component vector of float)
+0:39 add second child into first child (4-component vector of float)
+0:39 'v' (4-component vector of float)
+0:39 arc hyp. sine (4-component vector of float)
+0:39 'v' (4-component vector of float)
+0:40 add second child into first child (4-component vector of float)
+0:40 'v' (4-component vector of float)
+0:40 arc hyp. cosine (4-component vector of float)
+0:40 'v' (4-component vector of float)
+0:41 add second child into first child (4-component vector of float)
+0:41 'v' (4-component vector of float)
+0:41 arc hyp. tangent (4-component vector of float)
+0:41 'v' (4-component vector of float)
+0:43 add second child into first child (4-component vector of float)
+0:43 'v' (4-component vector of float)
+0:43 pow (4-component vector of float)
+0:43 'v' (4-component vector of float)
+0:43 'v' (4-component vector of float)
+0:44 add second child into first child (4-component vector of float)
+0:44 'v' (4-component vector of float)
+0:44 exp (4-component vector of float)
+0:44 'v' (4-component vector of float)
+0:45 add second child into first child (4-component vector of float)
+0:45 'v' (4-component vector of float)
+0:45 log (4-component vector of float)
+0:45 'v' (4-component vector of float)
+0:46 add second child into first child (4-component vector of float)
+0:46 'v' (4-component vector of float)
+0:46 exp2 (4-component vector of float)
+0:46 'v' (4-component vector of float)
+0:47 add second child into first child (4-component vector of float)
+0:47 'v' (4-component vector of float)
+0:47 log2 (4-component vector of float)
+0:47 'v' (4-component vector of float)
+0:48 add second child into first child (4-component vector of float)
+0:48 'v' (4-component vector of float)
+0:48 sqrt (4-component vector of float)
+0:48 'v' (4-component vector of float)
+0:49 add second child into first child (4-component vector of float)
+0:49 'v' (4-component vector of float)
+0:49 inverse sqrt (4-component vector of float)
+0:49 'v' (4-component vector of float)
+0:50 add second child into first child (4-component vector of float)
+0:50 'v' (4-component vector of float)
+0:50 Absolute value (4-component vector of float)
+0:50 'v' (4-component vector of float)
+0:51 add second child into first child (4-component vector of float)
+0:51 'v' (4-component vector of float)
+0:51 Sign (4-component vector of float)
+0:51 'v' (4-component vector of float)
+0:52 add second child into first child (4-component vector of float)
+0:52 'v' (4-component vector of float)
+0:52 Floor (4-component vector of float)
+0:52 'v' (4-component vector of float)
+0:60 add second child into first child (4-component vector of float)
+0:60 'v' (4-component vector of float)
+0:60 Ceiling (4-component vector of float)
+0:60 'v' (4-component vector of float)
+0:61 add second child into first child (4-component vector of float)
+0:61 'v' (4-component vector of float)
+0:61 Fraction (4-component vector of float)
+0:61 'v' (4-component vector of float)
+0:62 add second child into first child (4-component vector of float)
+0:62 'v' (4-component vector of float)
+0:62 mod (4-component vector of float)
+0:62 'v' (4-component vector of float)
+0:62 'v' (4-component vector of float)
+0:63 add second child into first child (4-component vector of float)
+0:63 'v' (4-component vector of float)
+0:63 mod (4-component vector of float)
+0:63 'v' (4-component vector of float)
+0:63 direct index (float)
+0:63 'v' (4-component vector of float)
+0:63 0 (const int)
+0:69 add second child into first child (4-component vector of float)
+0:69 'v' (4-component vector of float)
+0:69 min (4-component vector of float)
+0:69 'v' (4-component vector of float)
+0:69 'uv4' (uniform 4-component vector of float)
+0:70 add second child into first child (4-component vector of float)
+0:70 'v' (4-component vector of float)
+0:70 max (4-component vector of float)
+0:70 'v' (4-component vector of float)
+0:70 'uv4' (uniform 4-component vector of float)
+0:71 add second child into first child (4-component vector of float)
+0:71 'v' (4-component vector of float)
+0:71 clamp (4-component vector of float)
+0:71 'v' (4-component vector of float)
+0:71 'uv4' (uniform 4-component vector of float)
+0:71 'uv4' (uniform 4-component vector of float)
+0:72 add second child into first child (4-component vector of float)
+0:72 'v' (4-component vector of float)
+0:72 mix (4-component vector of float)
+0:72 'v' (4-component vector of float)
+0:72 'v' (4-component vector of float)
+0:72 'v' (4-component vector of float)
+0:86 add second child into first child (4-component vector of float)
+0:86 'v' (4-component vector of float)
+0:86 step (4-component vector of float)
+0:86 'v' (4-component vector of float)
+0:86 'v' (4-component vector of float)
+0:87 add second child into first child (4-component vector of float)
+0:87 'v' (4-component vector of float)
+0:87 smoothstep (4-component vector of float)
+0:87 'v' (4-component vector of float)
+0:87 'v' (4-component vector of float)
+0:87 'v' (4-component vector of float)
+0:88 add second child into first child (4-component vector of float)
+0:88 'v' (4-component vector of float)
+0:88 normalize (4-component vector of float)
+0:88 'v' (4-component vector of float)
+0:89 add second child into first child (4-component vector of float)
+0:89 'v' (4-component vector of float)
+0:89 face-forward (4-component vector of float)
+0:89 'v' (4-component vector of float)
+0:89 'v' (4-component vector of float)
+0:89 'v' (4-component vector of float)
+0:90 add second child into first child (4-component vector of float)
+0:90 'v' (4-component vector of float)
+0:90 reflect (4-component vector of float)
+0:90 'v' (4-component vector of float)
+0:90 'v' (4-component vector of float)
+0:91 add second child into first child (4-component vector of float)
+0:91 'v' (4-component vector of float)
+0:91 refract (4-component vector of float)
+0:91 'v' (4-component vector of float)
+0:91 'v' (4-component vector of float)
+0:91 'uf' (uniform float)
+0:92 add second child into first child (4-component vector of float)
+0:92 'v' (4-component vector of float)
+0:92 dPdx (4-component vector of float)
+0:92 'v' (4-component vector of float)
+0:93 add second child into first child (4-component vector of float)
+0:93 'v' (4-component vector of float)
+0:93 dPdy (4-component vector of float)
+0:93 'v' (4-component vector of float)
+0:94 add second child into first child (4-component vector of float)
+0:94 'v' (4-component vector of float)
+0:94 fwidth (4-component vector of float)
+0:94 'v' (4-component vector of float)
+0:128 move second child to first child (bool)
+0:128 'b' (bool)
+0:128 any (bool)
+0:128 Compare Less Than (4-component vector of bool)
+0:128 'v' (4-component vector of float)
+0:128 'uv4' (uniform 4-component vector of float)
+0:129 move second child to first child (bool)
+0:129 'b' (bool)
+0:129 logical-and (bool)
+0:129 'b' (bool)
+0:129 any (bool)
+0:129 Compare Less Than or Equal (4-component vector of bool)
+0:129 'v' (4-component vector of float)
+0:129 'uv4' (uniform 4-component vector of float)
+0:130 move second child to first child (bool)
+0:130 'b' (bool)
+0:130 logical-and (bool)
+0:130 'b' (bool)
+0:130 any (bool)
+0:130 Compare Greater Than (4-component vector of bool)
+0:130 'v' (4-component vector of float)
+0:130 'uv4' (uniform 4-component vector of float)
+0:131 move second child to first child (bool)
+0:131 'b' (bool)
+0:131 logical-and (bool)
+0:131 'b' (bool)
+0:131 any (bool)
+0:131 Compare Greater Than or Equal (4-component vector of bool)
+0:131 'v' (4-component vector of float)
+0:131 'uv4' (uniform 4-component vector of float)
+0:132 move second child to first child (bool)
+0:132 'b' (bool)
+0:132 logical-and (bool)
+0:132 'b' (bool)
+0:132 any (bool)
+0:132 Equal (4-component vector of bool)
+0:132 'ub41' (uniform 4-component vector of bool)
+0:132 'ub42' (uniform 4-component vector of bool)
+0:133 move second child to first child (bool)
+0:133 'b' (bool)
+0:133 logical-and (bool)
+0:133 'b' (bool)
+0:133 any (bool)
+0:133 NotEqual (4-component vector of bool)
+0:133 'ub41' (uniform 4-component vector of bool)
+0:133 'ub42' (uniform 4-component vector of bool)
+0:134 move second child to first child (bool)
+0:134 'b' (bool)
+0:134 logical-and (bool)
+0:134 'b' (bool)
+0:134 any (bool)
+0:134 'ub41' (uniform 4-component vector of bool)
+0:135 move second child to first child (bool)
+0:135 'b' (bool)
+0:135 logical-and (bool)
+0:135 'b' (bool)
+0:135 all (bool)
+0:135 'ub41' (uniform 4-component vector of bool)
+0:136 move second child to first child (bool)
+0:136 'b' (bool)
+0:136 logical-and (bool)
+0:136 'b' (bool)
+0:136 any (bool)
+0:136 Negate conditional (4-component vector of bool)
+0:136 'ub41' (uniform 4-component vector of bool)
+0:138 move second child to first child (int)
+0:138 'i' (int)
+0:138 divide (int)
+0:138 subtract (int)
+0:138 component-wise multiply (int)
+0:138 add (int)
+0:138 'i' (int)
+0:138 'ui' (uniform int)
+0:138 'i' (int)
+0:138 'ui' (uniform int)
+0:138 'i' (int)
+0:139 move second child to first child (int)
+0:139 'i' (int)
+0:139 mod (int)
+0:139 'i' (int)
+0:139 'ui' (uniform int)
+0:140 Test condition and select (void)
+0:140 Condition
+0:140 logical-or (bool)
+0:140 Compare Equal (bool)
+0:140 'i' (int)
+0:140 'ui' (uniform int)
+0:140 logical-xor (bool)
+0:140 logical-and (bool)
+0:140 Compare Not Equal (bool)
+0:140 'i' (int)
+0:140 'ui' (uniform int)
+0:140 Compare Equal (bool)
+0:140 'i' (int)
+0:140 'ui' (uniform int)
+0:140 Compare Not Equal (bool)
+0:140 'i' (int)
+0:140 2 (const int)
+0:140 true case
+0:141 Pre-Increment (int)
+0:141 'i' (int)
+0:143 move second child to first child (float)
+0:143 'f' (float)
+0:143 divide (float)
+0:143 subtract (float)
+0:143 component-wise multiply (float)
+0:143 add (float)
+0:143 'uf' (uniform float)
+0:143 'uf' (uniform float)
+0:143 'uf' (uniform float)
+0:143 'uf' (uniform float)
+0:143 'uf' (uniform float)
+0:145 add second child into first child (float)
+0:145 'f' (float)
+0:145 length (float)
+0:145 'v' (4-component vector of float)
+0:146 add second child into first child (float)
+0:146 'f' (float)
+0:146 distance (float)
+0:146 'v' (4-component vector of float)
+0:146 'v' (4-component vector of float)
+0:147 add second child into first child (float)
+0:147 'f' (float)
+0:147 dot-product (float)
+0:147 'v' (4-component vector of float)
+0:147 'v' (4-component vector of float)
+0:148 add second child into first child (float)
+0:148 'f' (float)
+0:148 dot-product (float)
+0:148 'f' (float)
+0:148 'uf' (uniform float)
+0:149 add second child into first child (float)
+0:149 'f' (float)
+0:149 direct index (float)
+0:149 cross-product (3-component vector of float)
+0:149 vector swizzle (3-component vector of float)
+0:149 'v' (4-component vector of float)
+0:149 Sequence
+0:149 0 (const int)
+0:149 1 (const int)
+0:149 2 (const int)
+0:149 vector swizzle (3-component vector of float)
+0:149 'v' (4-component vector of float)
+0:149 Sequence
+0:149 0 (const int)
+0:149 1 (const int)
+0:149 2 (const int)
+0:149 0 (const int)
+0:151 Test condition and select (void)
+0:151 Condition
+0:151 logical-or (bool)
+0:151 Compare Equal (bool)
+0:151 'f' (float)
+0:151 'uf' (uniform float)
+0:151 logical-and (bool)
+0:151 Compare Not Equal (bool)
+0:151 'f' (float)
+0:151 'uf' (uniform float)
+0:151 Compare Not Equal (bool)
+0:151 'f' (float)
+0:151 2.000000
+0:151 true case
+0:152 Pre-Increment (float)
+0:152 'f' (float)
+0:154 and second child into first child (int)
+0:154 'i' (int)
+0:154 'ui' (uniform int)
+0:155 or second child into first child (int)
+0:155 'i' (int)
+0:155 66 (const int)
+0:156 exclusive or second child into first child (int)
+0:156 'i' (int)
+0:156 'ui' (uniform int)
+0:157 mod second child into first child (int)
+0:157 'i' (int)
+0:157 17 (const int)
+0:158 right shift second child into first child (int)
+0:158 'i' (int)
+0:158 2 (const int)
+0:159 left shift second child into first child (int)
+0:159 'i' (int)
+0:159 'ui' (uniform int)
+0:160 move second child to first child (int)
+0:160 'i' (int)
+0:160 Bitwise not (int)
+0:160 'i' (int)
+0:161 move second child to first child (bool)
+0:161 'b' (bool)
+0:161 Negate conditional (bool)
+0:161 'b' (bool)
+0:163 move second child to first child (4-component vector of float)
+0:163 'gl_FragColor' (fragColor 4-component vector of float)
+0:163 Test condition and select (4-component vector of float)
+0:163 Condition
+0:163 'b' (bool)
+0:163 true case
+0:163 add (4-component vector of float)
+0:163 add (4-component vector of float)
+0:163 Construct vec4 (4-component vector of float)
+0:163 Convert int to float (float)
+0:163 'i' (int)
+0:163 Construct vec4 (4-component vector of float)
+0:163 'f' (float)
+0:163 'v' (4-component vector of float)
+0:163 false case
+0:163 'v' (4-component vector of float)
+0:? Linker Objects
+0:? 'uiv4' (uniform 4-component vector of int)
+0:? 'uv4' (uniform 4-component vector of float)
+0:? 'ub' (uniform bool)
+0:? 'ub41' (uniform 4-component vector of bool)
+0:? 'ub42' (uniform 4-component vector of bool)
+0:? 'uf' (uniform float)
+0:? 'ui' (uniform int)
+
diff --git a/Test/baseResults/aggOps.frag.out b/Test/baseResults/aggOps.frag.out
new file mode 100644
index 0000000..a8fc4b8
--- /dev/null
+++ b/Test/baseResults/aggOps.frag.out
@@ -0,0 +1,128 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+WARNING: 0:6: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:23 Function Definition: main( (void)
+0:23 Function Parameters:
+0:? Sequence
+0:27 move second child to first child (3-element array of structure)
+0:27 'a' (3-element array of structure)
+0:27 Construct structure (3-element array of structure)
+0:27 Construct structure (structure)
+0:27 Convert float to int (int)
+0:27 direct index (float)
+0:27 'u' (smooth in 4-component vector of float)
+0:27 0 (const int)
+0:27 direct index (float)
+0:27 'u' (smooth in 4-component vector of float)
+0:27 1 (const int)
+0:27 Construct structure (structure)
+0:27 Convert float to int (int)
+0:27 direct index (float)
+0:27 'u' (smooth in 4-component vector of float)
+0:27 2 (const int)
+0:27 direct index (float)
+0:27 'u' (smooth in 4-component vector of float)
+0:27 3 (const int)
+0:27 14 (const int)
+0:27 14.000000
+0:28 move second child to first child (3-element array of structure)
+0:28 'b' (3-element array of structure)
+0:28 Construct structure (3-element array of structure)
+0:28 17 (const int)
+0:28 17.000000
+0:28 Construct structure (structure)
+0:28 Convert float to int (int)
+0:28 direct index (float)
+0:28 'w' (smooth in 4-component vector of float)
+0:28 0 (const int)
+0:28 direct index (float)
+0:28 'w' (smooth in 4-component vector of float)
+0:28 1 (const int)
+0:28 Construct structure (structure)
+0:28 Convert float to int (int)
+0:28 direct index (float)
+0:28 'w' (smooth in 4-component vector of float)
+0:28 2 (const int)
+0:28 direct index (float)
+0:28 'w' (smooth in 4-component vector of float)
+0:28 3 (const int)
+0:30 Test condition and select (void)
+0:30 Condition
+0:30 Compare Equal (bool)
+0:30 'foo2a' (uniform structure)
+0:30 'foo2b' (uniform structure)
+0:30 true case
+0:31 move second child to first child (4-component vector of float)
+0:31 'v' (4-component vector of float)
+0:31 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:31 'sampler' (uniform sampler2D)
+0:31 'coord' (smooth in 2-component vector of float)
+0:30 false case
+0:33 move second child to first child (4-component vector of float)
+0:33 'v' (4-component vector of float)
+0:33 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:33 'sampler' (uniform sampler2D)
+0:33 vector-scale (2-component vector of float)
+0:33 2.000000
+0:33 'coord' (smooth in 2-component vector of float)
+0:35 Test condition and select (void)
+0:35 Condition
+0:35 Compare Equal (bool)
+0:35 'u' (smooth in 4-component vector of float)
+0:35 'v' (4-component vector of float)
+0:35 true case
+0:36 vector scale second child into first child (4-component vector of float)
+0:36 'v' (4-component vector of float)
+0:36 3.000000
+0:38 Test condition and select (void)
+0:38 Condition
+0:38 Compare Not Equal (bool)
+0:38 'u' (smooth in 4-component vector of float)
+0:38 'v' (4-component vector of float)
+0:38 true case
+0:39 vector scale second child into first child (4-component vector of float)
+0:39 'v' (4-component vector of float)
+0:39 4.000000
+0:41 Test condition and select (void)
+0:41 Condition
+0:41 Compare Equal (bool)
+0:41 'coord' (smooth in 2-component vector of float)
+0:41 vector swizzle (2-component vector of float)
+0:41 'v' (4-component vector of float)
+0:41 Sequence
+0:41 1 (const int)
+0:41 3 (const int)
+0:41 true case
+0:42 vector scale second child into first child (4-component vector of float)
+0:42 'v' (4-component vector of float)
+0:42 5.000000
+0:44 Test condition and select (void)
+0:44 Condition
+0:44 Compare Equal (bool)
+0:44 'a' (3-element array of structure)
+0:44 'b' (3-element array of structure)
+0:44 true case
+0:45 vector scale second child into first child (4-component vector of float)
+0:45 'v' (4-component vector of float)
+0:45 6.000000
+0:47 Test condition and select (void)
+0:47 Condition
+0:47 Compare Not Equal (bool)
+0:47 'a' (3-element array of structure)
+0:47 'b' (3-element array of structure)
+0:47 true case
+0:48 vector scale second child into first child (4-component vector of float)
+0:48 'v' (4-component vector of float)
+0:48 7.000000
+0:50 move second child to first child (4-component vector of float)
+0:50 'gl_FragColor' (fragColor 4-component vector of float)
+0:50 'v' (4-component vector of float)
+0:? Linker Objects
+0:? 'sampler' (uniform sampler2D)
+0:? 'coord' (smooth in 2-component vector of float)
+0:? 'u' (smooth in 4-component vector of float)
+0:? 'w' (smooth in 4-component vector of float)
+0:? 'foo1' (uniform structure)
+0:? 'foo2a' (uniform structure)
+0:? 'foo2b' (uniform structure)
+
diff --git a/Test/baseResults/always-discard.frag.out b/Test/baseResults/always-discard.frag.out
new file mode 100644
index 0000000..9dedfb6
--- /dev/null
+++ b/Test/baseResults/always-discard.frag.out
@@ -0,0 +1,102 @@
+0:? Sequence
+0:4 Function Definition: main( (void)
+0:4 Function Parameters:
+0:6 Sequence
+0:6 Sequence
+0:6 move second child to first child (4-component vector of float)
+0:6 'white' (4-component vector of float)
+0:6 1.000000
+0:6 1.000000
+0:6 1.000000
+0:6 1.000000
+0:7 Sequence
+0:7 move second child to first child (4-component vector of float)
+0:7 'black' (4-component vector of float)
+0:7 0.200000
+0:7 0.200000
+0:7 0.200000
+0:7 0.200000
+0:8 Sequence
+0:8 move second child to first child (4-component vector of float)
+0:8 'color' (4-component vector of float)
+0:8 'white' (4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child (float)
+0:11 'x' (float)
+0:11 subtract (float)
+0:11 component-wise multiply (float)
+0:11 direct index (float)
+0:11 'tex_coord' (smooth in 2-component vector of float)
+0:11 0 (const int)
+0:11 2.000000
+0:11 1.000000
+0:12 Sequence
+0:12 move second child to first child (float)
+0:12 'y' (float)
+0:12 subtract (float)
+0:12 component-wise multiply (float)
+0:12 direct index (float)
+0:12 'tex_coord' (smooth in 2-component vector of float)
+0:12 1 (const int)
+0:12 2.000000
+0:12 1.000000
+0:14 Sequence
+0:14 move second child to first child (float)
+0:14 'radius' (float)
+0:14 sqrt (float)
+0:14 add (float)
+0:14 component-wise multiply (float)
+0:14 'x' (float)
+0:14 'x' (float)
+0:14 component-wise multiply (float)
+0:14 'y' (float)
+0:14 'y' (float)
+0:15 Test condition and select (void)
+0:15 Condition
+0:15 Compare Greater Than (bool)
+0:15 'radius' (float)
+0:15 1.000000
+0:15 true case
+0:16 Sequence
+0:16 Test condition and select (void)
+0:16 Condition
+0:16 Compare Greater Than (bool)
+0:16 'radius' (float)
+0:16 1.100000
+0:16 true case
+0:17 Sequence
+0:17 Pre-Increment (4-component vector of float)
+0:17 'color' (4-component vector of float)
+0:20 move second child to first child (4-component vector of float)
+0:20 'gl_FragColor' (fragColor 4-component vector of float)
+0:20 'color' (4-component vector of float)
+0:22 Test condition and select (void)
+0:22 Condition
+0:22 Compare Greater Than (bool)
+0:22 'radius' (float)
+0:22 1.200000
+0:22 true case
+0:23 Sequence
+0:23 Pre-Increment (4-component vector of float)
+0:23 'color' (4-component vector of float)
+0:28 Branch: Kill
+0:31 Test condition and select (void)
+0:31 Condition
+0:31 Compare Greater Than or Equal (bool)
+0:31 'radius' (float)
+0:31 0.750000
+0:31 true case
+0:32 subtract second child into first child (4-component vector of float)
+0:32 'color' (4-component vector of float)
+0:32 Absolute value (float)
+0:32 divide (float)
+0:32 pow (float)
+0:32 'radius' (float)
+0:32 16.000000
+0:32 2.000000
+0:34 move second child to first child (4-component vector of float)
+0:34 'gl_FragColor' (fragColor 4-component vector of float)
+0:34 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'tex_coord' (smooth in 2-component vector of float)
+
diff --git a/Test/baseResults/always-discard2.frag.out b/Test/baseResults/always-discard2.frag.out
new file mode 100644
index 0000000..e45cdb8
--- /dev/null
+++ b/Test/baseResults/always-discard2.frag.out
@@ -0,0 +1,49 @@
+0:? Sequence
+0:4 Function Definition: main( (void)
+0:4 Function Parameters:
+0:6 Sequence
+0:6 Sequence
+0:6 move second child to first child (4-component vector of float)
+0:6 'white' (4-component vector of float)
+0:6 1.000000
+0:6 1.000000
+0:6 1.000000
+0:6 1.000000
+0:7 Sequence
+0:7 move second child to first child (4-component vector of float)
+0:7 'black' (4-component vector of float)
+0:7 0.200000
+0:7 0.200000
+0:7 0.200000
+0:7 0.200000
+0:8 Sequence
+0:8 move second child to first child (4-component vector of float)
+0:8 'color' (4-component vector of float)
+0:8 'white' (4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child (float)
+0:11 'x' (float)
+0:11 subtract (float)
+0:11 component-wise multiply (float)
+0:11 direct index (float)
+0:11 'tex_coord' (smooth in 2-component vector of float)
+0:11 0 (const int)
+0:11 2.000000
+0:11 1.000000
+0:12 Sequence
+0:12 move second child to first child (float)
+0:12 'y' (float)
+0:12 subtract (float)
+0:12 component-wise multiply (float)
+0:12 direct index (float)
+0:12 'tex_coord' (smooth in 2-component vector of float)
+0:12 1 (const int)
+0:12 2.000000
+0:12 1.000000
+0:14 Branch: Kill
+0:17 move second child to first child (4-component vector of float)
+0:17 'gl_FragColor' (fragColor 4-component vector of float)
+0:17 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'tex_coord' (smooth in 2-component vector of float)
+
diff --git a/Test/baseResults/array.frag.out b/Test/baseResults/array.frag.out
new file mode 100644
index 0000000..f12c264
--- /dev/null
+++ b/Test/baseResults/array.frag.out
@@ -0,0 +1,151 @@
+ERROR: 0:21: '[' : array index out of range '2'
+ERROR: 0:27: '[' : array must be redeclared with a size before being indexed with a variable
+ERROR: 0:30: 'assign' : cannot convert from '4-element array of float' to '5-element array of float'
+ERROR: 0:31: 'assign' : cannot convert from '4-element array of float' to 'unsized array of float'
+ERROR: 0:33: 'foo' : no matching overloaded function found
+ERROR: 0:42: '[' : array index out of range '5'
+ERROR: 0:45: '[' : array index out of range '1000'
+ERROR: 0:46: '[' : array index out of range '-1'
+ERROR: 0:52: '[' : array index '2' out of range
+ERROR: 0:54: 'const' : non-matching types for const initializer
+ERROR: 0:56: '=' : cannot convert from 'const 2-element array of int' to '3-element array of int'
+ERROR: 0:57: '[]' : scalar integer expression required
+ERROR: 0:57: '[' : array index out of range '-858993459'
+ERROR: 0:58: '[]' : scalar integer expression required
+ERROR: 14 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:9 Function Definition: foo(f1[5]; (4-element array of float)
+0:9 Function Parameters:
+0:9 'a' (in 5-element array of float)
+0:11 Sequence
+0:11 Branch: Return with expression
+0:11 Construct float (4-element array of float)
+0:11 direct index (in float)
+0:11 'a' (in 5-element array of float)
+0:11 0 (const int)
+0:11 direct index (in float)
+0:11 'a' (in 5-element array of float)
+0:11 1 (const int)
+0:11 direct index (in float)
+0:11 'a' (in 5-element array of float)
+0:11 2 (const int)
+0:11 direct index (in float)
+0:11 'a' (in 5-element array of float)
+0:11 3 (const int)
+0:14 Function Definition: bar(f1[5]; (void)
+0:14 Function Parameters:
+0:14 '' (in 5-element array of float)
+0:16 Function Definition: main( (void)
+0:16 Function Parameters:
+0:? Sequence
+0:? Sequence
+0:21 move second child to first child (float)
+0:21 direct index (float)
+0:21 'gu' (2-element array of float)
+0:21 2 (const int)
+0:21 4.000000
+0:24 move second child to first child (float)
+0:24 direct index (float)
+0:24 'gu' (unsized array of float)
+0:24 2 (const int)
+0:24 4.000000
+0:26 move second child to first child (float)
+0:26 direct index (float)
+0:26 'gu' (unsized array of float)
+0:26 3 (const int)
+0:26 3.000000
+0:27 move second child to first child (float)
+0:27 indirect index (float)
+0:27 'gu' (unsized array of float)
+0:27 'a' (uniform int)
+0:27 5.000000
+0:29 move second child to first child (4-element array of float)
+0:29 'g4' (4-element array of float)
+0:29 Function Call: foo(f1[5]; (4-element array of float)
+0:29 'g5' (5-element array of float)
+0:30 'g5' (5-element array of float)
+0:31 'gu' (unsized array of float)
+0:33 0.000000
+0:34 Function Call: bar(f1[5]; (void)
+0:34 'g5' (5-element array of float)
+0:36 Test condition and select (void)
+0:36 Condition
+0:36 Compare Equal (bool)
+0:36 1.000000
+0:36 2.000000
+0:36 3.000000
+0:36 4.000000
+0:36 'g4' (4-element array of float)
+0:36 true case
+0:37 move second child to first child (float)
+0:37 direct index (float)
+0:37 'gu' (unsized array of float)
+0:37 0 (const int)
+0:37 2.000000
+0:40 move second child to first child (float)
+0:40 direct index (float)
+0:40 'u' (5-element array of float)
+0:40 2 (const int)
+0:40 3.000000
+0:42 move second child to first child (float)
+0:42 direct index (float)
+0:42 'u' (5-element array of float)
+0:42 5 (const int)
+0:42 5.000000
+0:43 Function Call: foo(f1[5]; (4-element array of float)
+0:43 'u' (5-element array of float)
+0:45 move second child to first child (4-component vector of float)
+0:45 direct index (fragColor 4-component vector of float)
+0:45 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:45 1000 (const int)
+0:45 1.000000
+0:45 1.000000
+0:45 1.000000
+0:45 1.000000
+0:46 move second child to first child (4-component vector of float)
+0:46 direct index (fragColor 4-component vector of float)
+0:46 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:46 -1 (const int)
+0:46 1.000000
+0:46 1.000000
+0:46 1.000000
+0:46 1.000000
+0:47 move second child to first child (4-component vector of float)
+0:47 direct index (fragColor 4-component vector of float)
+0:47 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:47 3 (const int)
+0:47 1.000000
+0:47 1.000000
+0:47 1.000000
+0:47 1.000000
+0:50 Sequence
+0:50 move second child to first child (int)
+0:50 'sum' (int)
+0:50 3 (const int)
+0:51 add second child into first child (int)
+0:51 'sum' (int)
+0:51 2 (const int)
+0:52 add second child into first child (int)
+0:52 'sum' (int)
+0:52 3 (const int)
+0:55 Sequence
+0:55 move second child to first child (2-element array of int)
+0:55 'ica' (2-element array of int)
+0:55 3 (const int)
+0:55 2 (const int)
+0:57 move second child to first child (int)
+0:57 direct index (int)
+0:57 'ica' (2-element array of int)
+0:57 3.100000
+0:57 3 (const int)
+0:58 move second child to first child (int)
+0:58 indirect index (int)
+0:58 'ica' (2-element array of int)
+0:58 direct index (float)
+0:58 'u' (5-element array of float)
+0:58 1 (const int)
+0:58 4 (const int)
+0:? Linker Objects
+0:? 'a' (uniform int)
+
diff --git a/Test/baseResults/array100.frag.out b/Test/baseResults/array100.frag.out
new file mode 100644
index 0000000..83577c9
--- /dev/null
+++ b/Test/baseResults/array100.frag.out
@@ -0,0 +1,103 @@
+ERROR: 0:3: 'float' : type requires declaration of default precision qualifier
+ERROR: 0:3: '' : array size required
+ERROR: 0:9: 'arrayed type' : not supported for this version or the enabled extensions
+ERROR: 0:9: 'arrayed type' : not supported for this version or the enabled extensions
+ERROR: 0:11: 'arrayed constructor' : not supported for this version or the enabled extensions
+ERROR: 0:21: '[' : array index out of range '2'
+ERROR: 0:25: 'assign' : cannot convert from '4-element array of mediump float' to '5-element array of mediump float'
+ERROR: 0:26: 'assign' : cannot convert from '4-element array of mediump float' to '1-element array of mediump float'
+ERROR: 0:28: 'foo' : no matching overloaded function found
+ERROR: 0:31: 'arrayed constructor' : not supported for this version or the enabled extensions
+ERROR: 0:35: '[' : array index out of range '5'
+ERROR: 0:38: '[' : array index out of range '1000'
+ERROR: 0:39: '[' : array index out of range '-1'
+ERROR: 13 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:9 Function Definition: foo(f1[5]; (4-element array of mediump float)
+0:9 Function Parameters:
+0:9 'a' (in 5-element array of mediump float)
+0:11 Sequence
+0:11 Branch: Return with expression
+0:11 Construct float (4-element array of float)
+0:11 direct index (in mediump float)
+0:11 'a' (in 5-element array of mediump float)
+0:11 0 (const int)
+0:11 direct index (in mediump float)
+0:11 'a' (in 5-element array of mediump float)
+0:11 1 (const int)
+0:11 direct index (in mediump float)
+0:11 'a' (in 5-element array of mediump float)
+0:11 2 (const int)
+0:11 direct index (in mediump float)
+0:11 'a' (in 5-element array of mediump float)
+0:11 3 (const int)
+0:14 Function Definition: bar(f1[5]; (void)
+0:14 Function Parameters:
+0:14 '' (in 5-element array of mediump float)
+0:16 Function Definition: main( (void)
+0:16 Function Parameters:
+0:? Sequence
+0:? Sequence
+0:21 move second child to first child (mediump float)
+0:21 direct index (mediump float)
+0:21 'gu' (2-element array of mediump float)
+0:21 2 (const int)
+0:21 4.000000
+0:24 move second child to first child (4-element array of mediump float)
+0:24 'g4' (4-element array of mediump float)
+0:24 Function Call: foo(f1[5]; (4-element array of mediump float)
+0:24 'g5' (5-element array of mediump float)
+0:25 'g5' (5-element array of mediump float)
+0:26 'gu' (1-element array of mediump float)
+0:28 0.000000
+0:29 Function Call: bar(f1[5]; (void)
+0:29 'g5' (5-element array of mediump float)
+0:31 Test condition and select (void)
+0:31 Condition
+0:31 Compare Equal (bool)
+0:31 1.000000
+0:31 2.000000
+0:31 3.000000
+0:31 4.000000
+0:31 'g4' (4-element array of mediump float)
+0:31 true case
+0:32 move second child to first child (mediump float)
+0:32 direct index (mediump float)
+0:32 'gu' (1-element array of mediump float)
+0:32 0 (const int)
+0:32 2.000000
+0:35 move second child to first child (mediump float)
+0:35 direct index (mediump float)
+0:35 'u' (5-element array of mediump float)
+0:35 5 (const int)
+0:35 5.000000
+0:36 Function Call: foo(f1[5]; (4-element array of mediump float)
+0:36 'u' (5-element array of mediump float)
+0:38 move second child to first child (4-component vector of float)
+0:38 direct index (fragColor 4-component vector of float)
+0:38 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:38 1000 (const int)
+0:38 1.000000
+0:38 1.000000
+0:38 1.000000
+0:38 1.000000
+0:39 move second child to first child (4-component vector of float)
+0:39 direct index (fragColor 4-component vector of float)
+0:39 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:39 -1 (const int)
+0:39 1.000000
+0:39 1.000000
+0:39 1.000000
+0:39 1.000000
+0:40 move second child to first child (4-component vector of float)
+0:40 direct index (fragColor 4-component vector of float)
+0:40 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:40 3 (const int)
+0:40 1.000000
+0:40 1.000000
+0:40 1.000000
+0:40 1.000000
+0:? Linker Objects
+0:? 'a' (uniform mediump int)
+
diff --git a/Test/baseResults/comment.frag.out b/Test/baseResults/comment.frag.out
new file mode 100644
index 0000000..5f748f1
--- /dev/null
+++ b/Test/baseResults/comment.frag.out
@@ -0,0 +1,6 @@
+0:? Sequence
+0:17 Function Definition: main( (void)
+0:17 Function Parameters:
+0:? Linker Objects
+0:? 'v' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/conditionalDiscard.frag.out b/Test/baseResults/conditionalDiscard.frag.out
new file mode 100644
index 0000000..d96b5b6
--- /dev/null
+++ b/Test/baseResults/conditionalDiscard.frag.out
@@ -0,0 +1,27 @@
+0:? Sequence
+0:6 Function Definition: main( (void)
+0:6 Function Parameters:
+0:8 Sequence
+0:8 Sequence
+0:8 move second child to first child (4-component vector of float)
+0:8 'v' (4-component vector of float)
+0:8 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:8 'tex' (uniform sampler2D)
+0:8 'coord' (smooth in 2-component vector of float)
+0:10 Test condition and select (void)
+0:10 Condition
+0:10 Compare Equal (bool)
+0:10 'v' (4-component vector of float)
+0:10 0.100000
+0:10 0.200000
+0:10 0.300000
+0:10 0.400000
+0:10 true case
+0:11 Branch: Kill
+0:13 move second child to first child (4-component vector of float)
+0:13 'gl_FragColor' (fragColor 4-component vector of float)
+0:13 'v' (4-component vector of float)
+0:? Linker Objects
+0:? 'tex' (uniform sampler2D)
+0:? 'coord' (smooth in 2-component vector of float)
+
diff --git a/Test/baseResults/constErrors.frag.out b/Test/baseResults/constErrors.frag.out
new file mode 100644
index 0000000..dcbf735
--- /dev/null
+++ b/Test/baseResults/constErrors.frag.out
@@ -0,0 +1,17 @@
+ERROR: 0:14: '=' : assigning non-constant to 'const int'
+ERROR: 0:17: '' : constant expression required
+ERROR: 0:17: '' : array size must be a constant integer expression
+ERROR: 0:18: '' : constant expression required
+ERROR: 0:18: '' : array size must be a constant integer expression
+ERROR: 0:19: '' : constant expression required
+ERROR: 0:19: '' : array size must be a constant integer expression
+ERROR: 7 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:10 Function Definition: main( (void)
+0:10 Function Parameters:
+0:? Linker Objects
+0:? 'inVar' (smooth in 4-component vector of float)
+0:? 'outVar' (out 4-component vector of float)
+0:? 'uniformInt' (uniform int)
+
diff --git a/Test/baseResults/constFold.frag.out b/Test/baseResults/constFold.frag.out
new file mode 100644
index 0000000..f1dd4a7
--- /dev/null
+++ b/Test/baseResults/constFold.frag.out
@@ -0,0 +1,78 @@
+0:? Sequence
+0:24 Function Definition: main( (void)
+0:24 Function Parameters:
+0:26 Sequence
+0:26 Sequence
+0:26 move second child to first child (4-component vector of float)
+0:26 'dx' (4-component vector of float)
+0:26 dPdx (4-component vector of float)
+0:26 'inv' (smooth in 4-component vector of float)
+0:33 move second child to first child (4-component vector of float)
+0:33 'FragColor' (out 4-component vector of float)
+0:33 2.000000
+0:33 6.000000
+0:33 3.000000
+0:33 171.887339
+0:38 move second child to first child (4-component vector of float)
+0:38 'FragColor' (out 4-component vector of float)
+0:38 3.000000
+0:38 2.000000
+0:38 0.001593
+0:38 -0.999999
+0:39 move second child to first child (2-component vector of float)
+0:39 'out2' (out 2-component vector of float)
+0:39 5.600000
+0:39 5.800000
+0:40 move second child to first child (4-component vector of float)
+0:40 'out3' (out 4-component vector of float)
+0:40 20.085537
+0:40 2.302585
+0:40 16.000000
+0:40 8.000000
+0:41 move second child to first child (4-component vector of float)
+0:41 'out4' (out 4-component vector of float)
+0:41 10.000000
+0:41 0.100000
+0:41 4.700000
+0:41 10.900000
+0:42 move second child to first child (4-component vector of int)
+0:42 'out5' (out 4-component vector of int)
+0:42 8 (const int)
+0:42 17 (const int)
+0:42 -1 (const int)
+0:42 1 (const int)
+0:43 move second child to first child (3-component vector of float)
+0:43 'out6' (out 3-component vector of float)
+0:43 -1.000000
+0:43 1.000000
+0:43 0.000000
+0:44 move second child to first child (4-component vector of float)
+0:44 'out7' (out 4-component vector of float)
+0:44 4.000000
+0:44 -4.000000
+0:44 5.000000
+0:44 -5.000000
+0:45 move second child to first child (4-component vector of float)
+0:45 'out8' (out 4-component vector of float)
+0:45 4.000000
+0:45 5.000000
+0:45 4.000000
+0:45 -6.000000
+0:46 move second child to first child (4-component vector of float)
+0:46 'out9' (out 4-component vector of float)
+0:46 8.000000
+0:46 -4.000000
+0:46 0.345000
+0:46 0.400000
+0:? Linker Objects
+0:? 'inv' (smooth in 4-component vector of float)
+0:? 'FragColor' (out 4-component vector of float)
+0:? 'out2' (out 2-component vector of float)
+0:? 'out3' (out 4-component vector of float)
+0:? 'out4' (out 4-component vector of float)
+0:? 'out5' (out 4-component vector of int)
+0:? 'out6' (out 3-component vector of float)
+0:? 'out7' (out 4-component vector of float)
+0:? 'out8' (out 4-component vector of float)
+0:? 'out9' (out 4-component vector of float)
+
diff --git a/Test/baseResults/conversion.frag.out b/Test/baseResults/conversion.frag.out
new file mode 100644
index 0000000..1ba0c4f
--- /dev/null
+++ b/Test/baseResults/conversion.frag.out
@@ -0,0 +1,441 @@
+0:? Sequence
+0:33 Function Definition: main( (void)
+0:33 Function Parameters:
+0:35 Sequence
+0:35 Sequence
+0:35 move second child to first child (bool)
+0:35 'b' (bool)
+0:35 logical-xor (bool)
+0:35 Convert int to bool (bool)
+0:35 'u_i' (uniform int)
+0:35 Convert float to bool (bool)
+0:35 'u_f' (uniform float)
+0:36 Sequence
+0:36 move second child to first child (2-component vector of bool)
+0:36 'b2' (2-component vector of bool)
+0:36 Construct bvec2 (2-component vector of bool)
+0:36 Convert int to bool (bool)
+0:36 'u_i' (uniform int)
+0:36 Convert float to bool (bool)
+0:36 'u_f' (uniform float)
+0:37 Sequence
+0:37 move second child to first child (3-component vector of bool)
+0:37 'b3' (3-component vector of bool)
+0:37 Construct bvec3 (3-component vector of bool)
+0:37 Convert int to bool (bool)
+0:37 'u_i' (uniform int)
+0:37 Convert float to bool (bool)
+0:37 'u_f' (uniform float)
+0:37 Convert int to bool (bool)
+0:37 'i_i' (flat in int)
+0:38 Sequence
+0:38 move second child to first child (4-component vector of bool)
+0:38 'b4' (4-component vector of bool)
+0:38 Construct bvec4 (4-component vector of bool)
+0:38 Convert int to bool (bool)
+0:38 'u_i' (uniform int)
+0:38 Convert float to bool (bool)
+0:38 'u_f' (uniform float)
+0:38 Convert int to bool (bool)
+0:38 'i_i' (flat in int)
+0:38 Convert float to bool (bool)
+0:38 'i_f' (smooth in float)
+0:40 Sequence
+0:40 move second child to first child (int)
+0:40 'i' (int)
+0:40 add (int)
+0:40 Convert float to int (int)
+0:40 'u_f' (uniform float)
+0:40 Convert bool to int (int)
+0:40 'b' (bool)
+0:41 Sequence
+0:41 move second child to first child (2-component vector of int)
+0:41 'i2' (2-component vector of int)
+0:41 add (2-component vector of int)
+0:41 Convert float to int (2-component vector of int)
+0:41 'u_f2' (uniform 2-component vector of float)
+0:41 Convert bool to int (2-component vector of int)
+0:41 'b2' (2-component vector of bool)
+0:42 Sequence
+0:42 move second child to first child (3-component vector of int)
+0:42 'i3' (3-component vector of int)
+0:42 add (3-component vector of int)
+0:42 Convert float to int (3-component vector of int)
+0:42 'u_f3' (uniform 3-component vector of float)
+0:42 Convert bool to int (3-component vector of int)
+0:42 'b3' (3-component vector of bool)
+0:43 Sequence
+0:43 move second child to first child (4-component vector of int)
+0:43 'i4' (4-component vector of int)
+0:43 add (4-component vector of int)
+0:43 Convert float to int (4-component vector of int)
+0:43 'u_f4' (uniform 4-component vector of float)
+0:43 Convert bool to int (4-component vector of int)
+0:43 'b4' (4-component vector of bool)
+0:45 Sequence
+0:45 move second child to first child (float)
+0:45 'f' (float)
+0:45 Convert int to float (float)
+0:45 'i' (int)
+0:46 Sequence
+0:46 move second child to first child (2-component vector of float)
+0:46 'f2' (2-component vector of float)
+0:46 Convert int to float (2-component vector of float)
+0:46 'i2' (2-component vector of int)
+0:47 Sequence
+0:47 move second child to first child (3-component vector of float)
+0:47 'f3' (3-component vector of float)
+0:47 Convert int to float (3-component vector of float)
+0:47 'i3' (3-component vector of int)
+0:48 Sequence
+0:48 move second child to first child (4-component vector of float)
+0:48 'f4' (4-component vector of float)
+0:48 Convert int to float (4-component vector of float)
+0:48 'i4' (4-component vector of int)
+0:50 add second child into first child (float)
+0:50 'f' (float)
+0:50 add (float)
+0:50 Convert int to float (float)
+0:50 'i' (int)
+0:50 Convert bool to float (float)
+0:50 'b' (bool)
+0:51 subtract second child into first child (2-component vector of float)
+0:51 'f2' (2-component vector of float)
+0:51 add (2-component vector of float)
+0:51 Convert int to float (2-component vector of float)
+0:51 'i2' (2-component vector of int)
+0:51 Convert bool to float (2-component vector of float)
+0:51 'b2' (2-component vector of bool)
+0:52 divide second child into first child (3-component vector of float)
+0:52 'f3' (3-component vector of float)
+0:52 add (3-component vector of float)
+0:52 Convert int to float (3-component vector of float)
+0:52 'i3' (3-component vector of int)
+0:52 Convert bool to float (3-component vector of float)
+0:52 'b3' (3-component vector of bool)
+0:53 add second child into first child (4-component vector of float)
+0:53 'f4' (4-component vector of float)
+0:53 add (4-component vector of float)
+0:53 Convert int to float (4-component vector of float)
+0:53 'i4' (4-component vector of int)
+0:53 Convert bool to float (4-component vector of float)
+0:53 'b4' (4-component vector of bool)
+0:55 add second child into first child (4-component vector of float)
+0:55 'f4' (4-component vector of float)
+0:55 Convert bool to float (4-component vector of float)
+0:55 Convert int to bool (4-component vector of bool)
+0:55 'i_i4' (flat in 4-component vector of int)
+0:56 add second child into first child (4-component vector of float)
+0:56 'f4' (4-component vector of float)
+0:56 Convert bool to float (4-component vector of float)
+0:56 Convert float to bool (4-component vector of bool)
+0:56 'u_f4' (uniform 4-component vector of float)
+0:58 add second child into first child (float)
+0:58 'f' (float)
+0:58 subtract (float)
+0:58 'f' (float)
+0:58 Convert int to float (float)
+0:58 'i' (int)
+0:59 add second child into first child (2-component vector of float)
+0:59 'f2' (2-component vector of float)
+0:59 add (2-component vector of float)
+0:59 Construct vec2 (2-component vector of float)
+0:59 'f' (float)
+0:59 Convert int to float (float)
+0:59 'i' (int)
+0:59 Convert int to float (2-component vector of float)
+0:59 'i2' (2-component vector of int)
+0:60 add second child into first child (3-component vector of float)
+0:60 'f3' (3-component vector of float)
+0:60 add (3-component vector of float)
+0:60 Convert int to float (3-component vector of float)
+0:60 'i3' (3-component vector of int)
+0:60 Construct vec3 (3-component vector of float)
+0:60 'f' (float)
+0:60 Convert int to float (float)
+0:60 'i' (int)
+0:60 'f' (float)
+0:61 add second child into first child (4-component vector of float)
+0:61 'f4' (4-component vector of float)
+0:61 add (4-component vector of float)
+0:61 Construct vec4 (4-component vector of float)
+0:61 Convert bool to float (float)
+0:61 'b' (bool)
+0:61 Convert int to float (float)
+0:61 'i' (int)
+0:61 'f' (float)
+0:61 Convert int to float (float)
+0:61 'i' (int)
+0:61 Convert int to float (4-component vector of float)
+0:61 'i4' (4-component vector of int)
+0:63 add second child into first child (2-component vector of float)
+0:63 'f2' (2-component vector of float)
+0:63 vector-scale (2-component vector of float)
+0:63 Construct vec2 (2-component vector of float)
+0:63 'f' (float)
+0:63 Convert int to float (float)
+0:63 'i' (int)
+0:63 Convert int to float (float)
+0:63 'i' (int)
+0:64 add second child into first child (3-component vector of float)
+0:64 'f3' (3-component vector of float)
+0:64 add (3-component vector of float)
+0:64 Construct vec3 (3-component vector of float)
+0:64 'f' (float)
+0:64 Convert int to float (float)
+0:64 'i' (int)
+0:64 'f' (float)
+0:64 Convert int to float (float)
+0:64 'i' (int)
+0:65 add second child into first child (4-component vector of float)
+0:65 'f4' (4-component vector of float)
+0:65 subtract (4-component vector of float)
+0:65 Convert int to float (float)
+0:65 'i' (int)
+0:65 Construct vec4 (4-component vector of float)
+0:65 Convert bool to float (float)
+0:65 'b' (bool)
+0:65 Convert int to float (float)
+0:65 'i' (int)
+0:65 'f' (float)
+0:65 Convert int to float (float)
+0:65 'i' (int)
+0:67 add second child into first child (2-component vector of int)
+0:67 'i2' (2-component vector of int)
+0:67 Construct ivec2 (2-component vector of int)
+0:67 Convert float to int (int)
+0:67 'f' (float)
+0:67 'i' (int)
+0:68 add second child into first child (3-component vector of int)
+0:68 'i3' (3-component vector of int)
+0:68 Construct ivec3 (3-component vector of int)
+0:68 Convert float to int (int)
+0:68 'f' (float)
+0:68 'i' (int)
+0:68 Convert float to int (int)
+0:68 'f' (float)
+0:69 add second child into first child (4-component vector of int)
+0:69 'i4' (4-component vector of int)
+0:69 Construct ivec4 (4-component vector of int)
+0:69 Convert bool to int (int)
+0:69 'b' (bool)
+0:69 'i' (int)
+0:69 Convert float to int (int)
+0:69 'f' (float)
+0:69 'i' (int)
+0:71 Test condition and select (void)
+0:71 Condition
+0:72 logical-or (bool)
+0:71 logical-or (bool)
+0:71 logical-or (bool)
+0:71 Compare Less Than (bool)
+0:71 'f' (float)
+0:71 Convert int to float (float)
+0:71 'i' (int)
+0:71 Compare Less Than (bool)
+0:71 Convert int to float (float)
+0:71 'i' (int)
+0:71 'f' (float)
+0:72 Compare Equal (bool)
+0:72 'f2' (2-component vector of float)
+0:72 Convert int to float (2-component vector of float)
+0:72 'i2' (2-component vector of int)
+0:73 Compare Not Equal (bool)
+0:73 Convert int to float (3-component vector of float)
+0:73 'i3' (3-component vector of int)
+0:73 'f3' (3-component vector of float)
+0:71 true case
+0:74 move second child to first child (float)
+0:74 'f' (float)
+0:74 add (float)
+0:74 Test condition and select (float)
+0:74 Condition
+0:74 'b' (bool)
+0:74 true case
+0:74 Convert int to float (float)
+0:74 'i' (int)
+0:74 false case
+0:74 direct index (float)
+0:74 'f2' (2-component vector of float)
+0:74 0 (const int)
+0:74 Test condition and select (float)
+0:74 Condition
+0:74 direct index (bool)
+0:74 'b2' (2-component vector of bool)
+0:74 0 (const int)
+0:74 true case
+0:74 direct index (float)
+0:74 'f3' (3-component vector of float)
+0:74 0 (const int)
+0:74 false case
+0:74 Convert int to float (float)
+0:74 direct index (int)
+0:74 'i2' (2-component vector of int)
+0:74 1 (const int)
+0:76 move second child to first child (4-component vector of float)
+0:76 'gl_FragColor' (fragColor 4-component vector of float)
+0:86 Test condition and select (4-component vector of float)
+0:86 Condition
+0:85 logical-or (bool)
+0:84 logical-or (bool)
+0:83 logical-or (bool)
+0:82 logical-or (bool)
+0:81 logical-or (bool)
+0:80 logical-or (bool)
+0:79 logical-or (bool)
+0:78 logical-or (bool)
+0:77 logical-or (bool)
+0:77 'b' (bool)
+0:78 direct index (bool)
+0:78 'b2' (2-component vector of bool)
+0:78 0 (const int)
+0:79 direct index (bool)
+0:79 'b2' (2-component vector of bool)
+0:79 1 (const int)
+0:80 direct index (bool)
+0:80 'b3' (3-component vector of bool)
+0:80 0 (const int)
+0:81 direct index (bool)
+0:81 'b3' (3-component vector of bool)
+0:81 1 (const int)
+0:82 direct index (bool)
+0:82 'b3' (3-component vector of bool)
+0:82 2 (const int)
+0:83 direct index (bool)
+0:83 'b4' (4-component vector of bool)
+0:83 0 (const int)
+0:84 direct index (bool)
+0:84 'b4' (4-component vector of bool)
+0:84 1 (const int)
+0:85 direct index (bool)
+0:85 'b4' (4-component vector of bool)
+0:85 2 (const int)
+0:86 direct index (bool)
+0:86 'b4' (4-component vector of bool)
+0:86 3 (const int)
+0:86 true case
+0:105 Construct vec4 (4-component vector of float)
+0:105 add (float)
+0:104 add (float)
+0:103 add (float)
+0:102 add (float)
+0:101 add (float)
+0:100 add (float)
+0:99 add (float)
+0:98 add (float)
+0:97 add (float)
+0:96 add (float)
+0:95 Convert int to float (float)
+0:95 add (int)
+0:94 add (int)
+0:93 add (int)
+0:92 add (int)
+0:91 add (int)
+0:90 add (int)
+0:89 add (int)
+0:88 add (int)
+0:87 add (int)
+0:87 'i' (int)
+0:88 direct index (int)
+0:88 'i2' (2-component vector of int)
+0:88 0 (const int)
+0:89 direct index (int)
+0:89 'i2' (2-component vector of int)
+0:89 1 (const int)
+0:90 direct index (int)
+0:90 'i3' (3-component vector of int)
+0:90 0 (const int)
+0:91 direct index (int)
+0:91 'i3' (3-component vector of int)
+0:91 1 (const int)
+0:92 direct index (int)
+0:92 'i3' (3-component vector of int)
+0:92 2 (const int)
+0:93 direct index (int)
+0:93 'i4' (4-component vector of int)
+0:93 0 (const int)
+0:94 direct index (int)
+0:94 'i4' (4-component vector of int)
+0:94 1 (const int)
+0:95 direct index (int)
+0:95 'i4' (4-component vector of int)
+0:95 2 (const int)
+0:96 direct index (int)
+0:96 'i4' (4-component vector of int)
+0:96 3 (const int)
+0:97 'f' (float)
+0:98 direct index (float)
+0:98 'f2' (2-component vector of float)
+0:98 0 (const int)
+0:99 direct index (float)
+0:99 'f2' (2-component vector of float)
+0:99 1 (const int)
+0:100 direct index (float)
+0:100 'f3' (3-component vector of float)
+0:100 0 (const int)
+0:101 direct index (float)
+0:101 'f3' (3-component vector of float)
+0:101 1 (const int)
+0:102 direct index (float)
+0:102 'f3' (3-component vector of float)
+0:102 2 (const int)
+0:103 direct index (float)
+0:103 'f4' (4-component vector of float)
+0:103 0 (const int)
+0:104 direct index (float)
+0:104 'f4' (4-component vector of float)
+0:104 1 (const int)
+0:105 direct index (float)
+0:105 'f4' (4-component vector of float)
+0:105 2 (const int)
+0:106 direct index (float)
+0:106 'f4' (4-component vector of float)
+0:106 3 (const int)
+0:86 false case
+0:106 1.000000
+0:106 1.000000
+0:106 1.000000
+0:106 1.000000
+0:109 Sequence
+0:109 move second child to first child (4-component vector of int)
+0:109 'cv2' (4-component vector of int)
+0:109 1 (const int)
+0:109 1 (const int)
+0:109 1 (const int)
+0:109 1 (const int)
+0:110 Sequence
+0:110 move second child to first child (4-component vector of bool)
+0:110 'cv5' (4-component vector of bool)
+0:110 Convert int to bool (4-component vector of bool)
+0:110 'cv2' (4-component vector of int)
+0:111 add second child into first child (4-component vector of float)
+0:111 'gl_FragColor' (fragColor 4-component vector of float)
+0:111 Construct float (float)
+0:111 Convert bool to float (4-component vector of float)
+0:111 'cv5' (4-component vector of bool)
+0:? Linker Objects
+0:? 'u_b' (uniform bool)
+0:? 'u_b2' (uniform 2-component vector of bool)
+0:? 'u_b3' (uniform 3-component vector of bool)
+0:? 'u_b4' (uniform 4-component vector of bool)
+0:? 'u_i' (uniform int)
+0:? 'u_i2' (uniform 2-component vector of int)
+0:? 'u_i3' (uniform 3-component vector of int)
+0:? 'u_i4' (uniform 4-component vector of int)
+0:? 'u_f' (uniform float)
+0:? 'u_f2' (uniform 2-component vector of float)
+0:? 'u_f3' (uniform 3-component vector of float)
+0:? 'u_f4' (uniform 4-component vector of float)
+0:? 'i_b' (uniform bool)
+0:? 'i_b2' (uniform 2-component vector of bool)
+0:? 'i_b3' (uniform 3-component vector of bool)
+0:? 'i_b4' (uniform 4-component vector of bool)
+0:? 'i_i' (flat in int)
+0:? 'i_i2' (flat in 2-component vector of int)
+0:? 'i_i3' (flat in 3-component vector of int)
+0:? 'i_i4' (flat in 4-component vector of int)
+0:? 'i_f' (smooth in float)
+0:? 'i_f2' (smooth in 2-component vector of float)
+0:? 'i_f3' (smooth in 3-component vector of float)
+0:? 'i_f4' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/cppComplexExpr.vert.out b/Test/baseResults/cppComplexExpr.vert.out
new file mode 100644
index 0000000..48ae895
--- /dev/null
+++ b/Test/baseResults/cppComplexExpr.vert.out
@@ -0,0 +1,23 @@
+WARNING: 0:1: '#version' : statement missing: use #version on first line of shader
+0:? Sequence
+0:4 Sequence
+0:4 move second child to first child (highp float)
+0:4 'sum' (highp float)
+0:4 0.000000
+0:6 Function Definition: main( (void)
+0:6 Function Parameters:
+0:10 Sequence
+0:10 add second child into first child (highp float)
+0:10 'sum' (highp float)
+0:10 1.000000
+0:15 add second child into first child (highp float)
+0:15 'sum' (highp float)
+0:15 20.000000
+0:30 add second child into first child (highp float)
+0:30 'sum' (highp float)
+0:30 300.000000
+0:39 move second child to first child (highp 4-component vector of float)
+0:39 'gl_Position' (gl_Position highp 4-component vector of float)
+0:39 Construct vec4 (highp 4-component vector of float)
+0:39 'sum' (highp float)
+
diff --git a/Test/baseResults/cppIndent.vert.out b/Test/baseResults/cppIndent.vert.out
new file mode 100644
index 0000000..7ae92d6
--- /dev/null
+++ b/Test/baseResults/cppIndent.vert.out
@@ -0,0 +1,28 @@
+0:? Sequence
+0:5 Sequence
+0:5 move second child to first child (float)
+0:5 'sum' (float)
+0:5 0.000000
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:12 Sequence
+0:12 add second child into first child (float)
+0:12 'sum' (float)
+0:12 1.000000
+0:22 add second child into first child (float)
+0:22 'sum' (float)
+0:22 300.000000
+0:37 add second child into first child (float)
+0:37 'sum' (float)
+0:37 600000.000000
+0:47 add second child into first child (float)
+0:47 'sum' (float)
+0:47 80000000.000000
+0:52 add second child into first child (float)
+0:52 'sum' (float)
+0:52 900000000.000000
+0:56 move second child to first child (4-component vector of float)
+0:56 'gl_Position' (gl_Position 4-component vector of float)
+0:56 Construct vec4 (4-component vector of float)
+0:56 'sum' (float)
+
diff --git a/Test/baseResults/cppNest.vert.out b/Test/baseResults/cppNest.vert.out
new file mode 100644
index 0000000..1d33459
--- /dev/null
+++ b/Test/baseResults/cppNest.vert.out
@@ -0,0 +1,31 @@
+0:? Sequence
+0:5 Sequence
+0:5 move second child to first child (float)
+0:5 'sum' (float)
+0:5 0.000000
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:12 Sequence
+0:12 add second child into first child (float)
+0:12 'sum' (float)
+0:12 1.000000
+0:21 add second child into first child (float)
+0:21 'sum' (float)
+0:21 300.000000
+0:61 add second child into first child (float)
+0:61 'sum' (float)
+0:61 600000.000000
+0:65 add second child into first child (float)
+0:65 'sum' (float)
+0:65 80000000.000000
+0:69 add second child into first child (float)
+0:69 'sum' (float)
+0:69 900000000.000000
+0:76 add second child into first child (float)
+0:76 'sum' (float)
+0:76 7000000.000000
+0:86 move second child to first child (4-component vector of float)
+0:86 'gl_Position' (gl_Position 4-component vector of float)
+0:86 Construct vec4 (4-component vector of float)
+0:86 'sum' (float)
+
diff --git a/Test/baseResults/cppSimple.vert.out b/Test/baseResults/cppSimple.vert.out
new file mode 100644
index 0000000..6dcdca3
--- /dev/null
+++ b/Test/baseResults/cppSimple.vert.out
@@ -0,0 +1,73 @@
+ERROR: 0:77: '#error' : good1
+ERROR: 0:81: '#error' : good2
+ERROR: 0:85: '#error' : good3
+ERROR: 0:89: '#error' : good4
+ERROR: 0:93: '#error' : good5
+ERROR: 0:97: '#error' : good6
+ERROR: 0:101: 'preprocessor' : expected ')'
+ERROR: 0:101: '#error' : bad1
+WARNING: 0:104: '#if' : unexpected tokens following #if directive - expected a newline
+ERROR: 0:105: '#error' : bad2
+ERROR: 0:109: 'preprocessor' : expected ')'
+ERROR: 0:109: '#error' : bad3
+WARNING: 0:112: '#if' : unexpected tokens following #if directive - expected a newline
+ERROR: 0:113: '#error' : bad4
+ERROR: 0:117: 'preprocessor' : expected ')'
+ERROR: 0:117: '#error' : bad5
+WARNING: 0:120: '#if' : unexpected tokens following #if directive - expected a newline
+ERROR: 0:121: '#error' : bad6
+ERROR: 0:133: '#' : preprocessor directive cannot be preceded by another token
+INTERNAL ERROR: 0:133: Unknown PP token
+ERROR: 0:133: '' : syntax error
+ERROR: 17 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:5 Sequence
+0:5 move second child to first child (float)
+0:5 'sum' (float)
+0:5 0.000000
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:12 Sequence
+0:12 add second child into first child (float)
+0:12 'sum' (float)
+0:12 1.000000
+0:22 add second child into first child (float)
+0:22 'sum' (float)
+0:22 300.000000
+0:37 add second child into first child (float)
+0:37 'sum' (float)
+0:37 600000.000000
+0:48 add second child into first child (float)
+0:48 'sum' (float)
+0:48 7000000.000000
+0:53 add second child into first child (float)
+0:53 'sum' (float)
+0:53 80000000.000000
+0:58 add second child into first child (float)
+0:58 'sum' (float)
+0:58 900000000.000000
+0:65 add second child into first child (float)
+0:65 'sum' (float)
+0:65 0.050000
+0:69 move second child to first child (4-component vector of float)
+0:69 'gl_Position' (gl_Position 4-component vector of float)
+0:69 Construct vec4 (4-component vector of float)
+0:69 'sum' (float)
+0:124 Sequence
+0:124 move second child to first child (int)
+0:124 'linenumber' (int)
+0:124 124 (const int)
+0:125 Sequence
+0:125 move second child to first child (int)
+0:125 'filenumber' (int)
+0:125 0 (const int)
+0:126 Sequence
+0:126 move second child to first child (int)
+0:126 'version' (int)
+0:126 110 (const int)
+0:130 Sequence
+0:130 move second child to first child (float)
+0:130 'twoPi' (float)
+0:130 6.280000
+
diff --git a/Test/baseResults/dataOut.frag.out b/Test/baseResults/dataOut.frag.out
new file mode 100644
index 0000000..bbaf345
--- /dev/null
+++ b/Test/baseResults/dataOut.frag.out
@@ -0,0 +1,13 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:5 Function Definition: main( (void)
+0:5 Function Parameters:
+0:7 Sequence
+0:7 move second child to first child (4-component vector of float)
+0:7 direct index (fragColor 4-component vector of float)
+0:7 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:7 1 (const int)
+0:7 'Color' (smooth in 4-component vector of float)
+0:? Linker Objects
+0:? 'Color' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/dataOutIndirect.frag.out b/Test/baseResults/dataOutIndirect.frag.out
new file mode 100644
index 0000000..5a6f27d
--- /dev/null
+++ b/Test/baseResults/dataOutIndirect.frag.out
@@ -0,0 +1,14 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:9 Sequence
+0:9 move second child to first child (4-component vector of float)
+0:9 indirect index (fragColor 4-component vector of float)
+0:9 'gl_FragData' (fragColor 32-element array of 4-component vector of float)
+0:9 'i' (uniform int)
+0:9 'Color' (smooth in 4-component vector of float)
+0:? Linker Objects
+0:? 'Color' (smooth in 4-component vector of float)
+0:? 'i' (uniform int)
+
diff --git a/Test/baseResults/deepRvalue.frag.out b/Test/baseResults/deepRvalue.frag.out
new file mode 100644
index 0000000..c7c5a7d
--- /dev/null
+++ b/Test/baseResults/deepRvalue.frag.out
@@ -0,0 +1,118 @@
+0:? Sequence
+0:5 Sequence
+0:5 move second child to first child (4-component vector of float)
+0:5 'v1' (4-component vector of float)
+0:5 2.000000
+0:5 3.000000
+0:5 5.000000
+0:5 7.000000
+0:6 Sequence
+0:6 move second child to first child (4-component vector of float)
+0:6 'v2' (4-component vector of float)
+0:6 11.000000
+0:6 13.000000
+0:6 17.000000
+0:6 19.000000
+0:7 Sequence
+0:7 move second child to first child (4-component vector of float)
+0:7 'v3' (4-component vector of float)
+0:7 23.000000
+0:7 29.000000
+0:7 31.000000
+0:7 37.000000
+0:8 Sequence
+0:8 move second child to first child (4-component vector of float)
+0:8 'v4' (4-component vector of float)
+0:8 41.000000
+0:8 43.000000
+0:8 47.000000
+0:8 53.000000
+0:16 Function Definition: main( (void)
+0:16 Function Parameters:
+0:18 Sequence
+0:18 Sequence
+0:18 move second child to first child (4X4 matrix of float)
+0:18 'm' (4X4 matrix of float)
+0:18 Construct mat4 (4X4 matrix of float)
+0:18 'v1' (4-component vector of float)
+0:18 'v2' (4-component vector of float)
+0:18 'v3' (4-component vector of float)
+0:18 'v4' (4-component vector of float)
+0:20 Sequence
+0:20 move second child to first child (4X4 matrix of float)
+0:20 'mm' (4X4 matrix of float)
+0:20 component-wise multiply (4X4 matrix of float)
+0:20 'm' (4X4 matrix of float)
+0:20 'm' (4X4 matrix of float)
+0:21 Sequence
+0:21 move second child to first child (float)
+0:21 'f' (float)
+0:21 direct index (float)
+0:21 direct index (4-component vector of float)
+0:21 'mm' (4X4 matrix of float)
+0:21 1 (const int)
+0:21 3 (const int)
+0:24 Sequence
+0:24 move second child to first child (float)
+0:24 'g' (float)
+0:24 direct index (float)
+0:24 direct index (4-component vector of float)
+0:24 component-wise multiply (4X4 matrix of float)
+0:24 'm' (4X4 matrix of float)
+0:24 'm' (4X4 matrix of float)
+0:24 2 (const int)
+0:24 1 (const int)
+0:26 Sequence
+0:26 move second child to first child (float)
+0:26 'h' (float)
+0:26 5.000000
+0:28 Sequence
+0:28 move second child to first child (float)
+0:28 'i' (float)
+0:28 direct index (float)
+0:28 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:28 'sampler' (uniform sampler2D)
+0:28 0.500000
+0:28 0.500000
+0:28 1 (const int)
+0:30 add second child into first child (float)
+0:30 'i' (float)
+0:30 direct index (float)
+0:30 Test condition and select (4-component vector of float)
+0:30 Condition
+0:30 Compare Greater Than (bool)
+0:30 'i' (float)
+0:30 0.100000
+0:30 true case
+0:30 'v1' (4-component vector of float)
+0:30 false case
+0:30 'v2' (4-component vector of float)
+0:30 3 (const int)
+0:33 add second child into first child (float)
+0:33 'i' (float)
+0:33 direct index (float)
+0:33 direct index (2-component vector of float)
+0:33 b: direct index for structure (3-element array of 2-component vector of float)
+0:33 move second child to first child (structure)
+0:33 't' (structure)
+0:33 1 (const int)
+0:33 2.000000
+0:33 3.000000
+0:33 4.000000
+0:33 5.000000
+0:33 6.000000
+0:33 7.000000
+0:33 true (const bool)
+0:33 1 (const int)
+0:33 2 (const int)
+0:33 1 (const int)
+0:35 move second child to first child (4-component vector of float)
+0:35 'gl_FragColor' (fragColor 4-component vector of float)
+0:35 Construct vec4 (4-component vector of float)
+0:35 'f' (float)
+0:35 'g' (float)
+0:35 'h' (float)
+0:35 'i' (float)
+0:? Linker Objects
+0:? 'sampler' (uniform sampler2D)
+
diff --git a/Test/baseResults/depthOut.frag.out b/Test/baseResults/depthOut.frag.out
new file mode 100644
index 0000000..77c448a
--- /dev/null
+++ b/Test/baseResults/depthOut.frag.out
@@ -0,0 +1,20 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:8 Function Definition: main( (void)
+0:8 Function Parameters:
+0:10 Sequence
+0:10 move second child to first child (float)
+0:10 'gl_FragDepth' (gl_FragDepth float)
+0:10 'Depth' (smooth in float)
+0:11 move second child to first child (4-component vector of float)
+0:11 'gl_FragColor' (fragColor 4-component vector of float)
+0:11 'Color' (smooth in 4-component vector of float)
+0:12 move second child to first child (4-component vector of float)
+0:12 'foo' (out 4-component vector of float)
+0:12 'Color' (smooth in 4-component vector of float)
+0:? Linker Objects
+0:? 'Color' (smooth in 4-component vector of float)
+0:? 'Depth' (smooth in float)
+0:? 'foo' (out 4-component vector of float)
+
diff --git a/Test/baseResults/discard-dce.frag.out b/Test/baseResults/discard-dce.frag.out
new file mode 100644
index 0000000..6cc221f
--- /dev/null
+++ b/Test/baseResults/discard-dce.frag.out
@@ -0,0 +1,102 @@
+0:? Sequence
+0:4 Function Definition: main( (void)
+0:4 Function Parameters:
+0:6 Sequence
+0:6 Sequence
+0:6 move second child to first child (4-component vector of float)
+0:6 'white' (4-component vector of float)
+0:6 1.000000
+0:6 1.000000
+0:6 1.000000
+0:6 1.000000
+0:7 Sequence
+0:7 move second child to first child (4-component vector of float)
+0:7 'black' (4-component vector of float)
+0:7 0.200000
+0:7 0.200000
+0:7 0.200000
+0:7 0.200000
+0:8 Sequence
+0:8 move second child to first child (4-component vector of float)
+0:8 'color' (4-component vector of float)
+0:8 'white' (4-component vector of float)
+0:11 Sequence
+0:11 move second child to first child (float)
+0:11 'x' (float)
+0:11 subtract (float)
+0:11 component-wise multiply (float)
+0:11 direct index (float)
+0:11 'tex_coord' (smooth in 2-component vector of float)
+0:11 0 (const int)
+0:11 2.000000
+0:11 1.000000
+0:12 Sequence
+0:12 move second child to first child (float)
+0:12 'y' (float)
+0:12 subtract (float)
+0:12 component-wise multiply (float)
+0:12 direct index (float)
+0:12 'tex_coord' (smooth in 2-component vector of float)
+0:12 1 (const int)
+0:12 2.000000
+0:12 1.000000
+0:14 Sequence
+0:14 move second child to first child (float)
+0:14 'radius' (float)
+0:14 sqrt (float)
+0:14 add (float)
+0:14 component-wise multiply (float)
+0:14 'x' (float)
+0:14 'x' (float)
+0:14 component-wise multiply (float)
+0:14 'y' (float)
+0:14 'y' (float)
+0:15 Test condition and select (void)
+0:15 Condition
+0:15 Compare Greater Than (bool)
+0:15 'radius' (float)
+0:15 1.000000
+0:15 true case
+0:16 Sequence
+0:16 Test condition and select (void)
+0:16 Condition
+0:16 Compare Greater Than (bool)
+0:16 'radius' (float)
+0:16 1.100000
+0:16 true case
+0:17 Sequence
+0:17 Pre-Increment (4-component vector of float)
+0:17 'color' (4-component vector of float)
+0:20 move second child to first child (4-component vector of float)
+0:20 'gl_FragColor' (fragColor 4-component vector of float)
+0:20 'color' (4-component vector of float)
+0:22 Test condition and select (void)
+0:22 Condition
+0:22 Compare Greater Than (bool)
+0:22 'radius' (float)
+0:22 1.200000
+0:22 true case
+0:23 Sequence
+0:23 Pre-Increment (4-component vector of float)
+0:23 'color' (4-component vector of float)
+0:26 Branch: Kill
+0:30 Test condition and select (void)
+0:30 Condition
+0:30 Compare Greater Than or Equal (bool)
+0:30 'radius' (float)
+0:30 0.750000
+0:30 true case
+0:31 subtract second child into first child (4-component vector of float)
+0:31 'color' (4-component vector of float)
+0:31 Absolute value (float)
+0:31 divide (float)
+0:31 pow (float)
+0:31 'radius' (float)
+0:31 16.000000
+0:31 2.000000
+0:33 move second child to first child (4-component vector of float)
+0:33 'gl_FragColor' (fragColor 4-component vector of float)
+0:33 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'tex_coord' (smooth in 2-component vector of float)
+
diff --git a/Test/baseResults/doWhileLoop.frag.out b/Test/baseResults/doWhileLoop.frag.out
new file mode 100644
index 0000000..ead28f9
--- /dev/null
+++ b/Test/baseResults/doWhileLoop.frag.out
@@ -0,0 +1,28 @@
+0:? Sequence
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:9 Sequence
+0:9 Sequence
+0:9 move second child to first child (4-component vector of float)
+0:9 'color' (4-component vector of float)
+0:9 'BaseColor' (smooth in 4-component vector of float)
+0:13 Loop with condition not tested first
+0:13 Loop Condition
+0:13 Compare Less Than (bool)
+0:13 direct index (float)
+0:13 'color' (4-component vector of float)
+0:13 0 (const int)
+0:13 'd' (uniform float)
+0:13 Loop Body
+0:12 Sequence
+0:12 add second child into first child (4-component vector of float)
+0:12 'color' (4-component vector of float)
+0:12 'bigColor' (uniform 4-component vector of float)
+0:15 move second child to first child (4-component vector of float)
+0:15 'gl_FragColor' (fragColor 4-component vector of float)
+0:15 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'd' (uniform float)
+
diff --git a/Test/baseResults/earlyReturnDiscard.frag.out b/Test/baseResults/earlyReturnDiscard.frag.out
new file mode 100644
index 0000000..f82ff3c
--- /dev/null
+++ b/Test/baseResults/earlyReturnDiscard.frag.out
@@ -0,0 +1,118 @@
+0:? Sequence
+0:19 Function Definition: main( (void)
+0:19 Function Parameters:
+0:21 Sequence
+0:21 Sequence
+0:21 move second child to first child (4-component vector of float)
+0:21 'color' (4-component vector of float)
+0:21 'BaseColor' (smooth in 4-component vector of float)
+0:24 move second child to first child (4-component vector of float)
+0:24 'color2' (4-component vector of float)
+0:24 'otherColor' (uniform 4-component vector of float)
+0:26 Test condition and select (void)
+0:26 Condition
+0:26 Compare Greater Than (bool)
+0:26 'c' (smooth in float)
+0:26 'd' (uniform float)
+0:26 true case
+0:27 add second child into first child (4-component vector of float)
+0:27 'color' (4-component vector of float)
+0:27 'bigColor' (uniform 4-component vector of float)
+0:26 false case
+0:29 add second child into first child (4-component vector of float)
+0:29 'color' (4-component vector of float)
+0:29 'smallColor' (uniform 4-component vector of float)
+0:31 Test condition and select (void)
+0:31 Condition
+0:31 Compare Less Than (bool)
+0:31 direct index (float)
+0:31 'color' (4-component vector of float)
+0:31 2 (const int)
+0:31 'minimum' (uniform float)
+0:31 true case
+0:32 Branch: Return
+0:34 Post-Increment (float)
+0:34 direct index (float)
+0:34 'color' (4-component vector of float)
+0:34 2 (const int)
+0:36 Test condition and select (void)
+0:36 Condition
+0:36 Compare Greater Than (bool)
+0:36 direct index (float)
+0:36 'color' (4-component vector of float)
+0:36 2 (const int)
+0:36 'threshhold' (uniform float)
+0:36 true case
+0:37 Branch: Kill
+0:39 Post-Increment (4-component vector of float)
+0:39 'color' (4-component vector of float)
+0:42 Test condition and select (void)
+0:42 Condition
+0:42 Compare Greater Than (bool)
+0:42 direct index (float)
+0:42 'color' (4-component vector of float)
+0:42 3 (const int)
+0:42 'threshhold2' (uniform float)
+0:42 true case
+0:43 Sequence
+0:43 Test condition and select (void)
+0:43 Condition
+0:43 Compare Greater Than (bool)
+0:43 direct index (float)
+0:43 'color' (4-component vector of float)
+0:43 2 (const int)
+0:43 'threshhold2' (uniform float)
+0:43 true case
+0:44 Branch: Return
+0:43 false case
+0:45 Test condition and select (void)
+0:45 Condition
+0:45 'b' (uniform bool)
+0:45 true case
+0:46 Post-Increment (float)
+0:46 direct index (float)
+0:46 'color' (4-component vector of float)
+0:46 2 (const int)
+0:45 false case
+0:48 Sequence
+0:48 Test condition and select (void)
+0:48 Condition
+0:48 Compare Less Than (bool)
+0:48 direct index (float)
+0:48 'color' (4-component vector of float)
+0:48 0 (const int)
+0:48 'minimum' (uniform float)
+0:48 true case
+0:49 Sequence
+0:49 Branch: Kill
+0:48 false case
+0:51 Sequence
+0:51 Post-Increment (4-component vector of float)
+0:51 'color' (4-component vector of float)
+0:42 false case
+0:55 Sequence
+0:55 Test condition and select (void)
+0:55 Condition
+0:55 'b' (uniform bool)
+0:55 true case
+0:56 Branch: Kill
+0:55 false case
+0:58 Branch: Return
+0:101 move second child to first child (4-component vector of float)
+0:101 'gl_FragColor' (fragColor 4-component vector of float)
+0:101 component-wise multiply (4-component vector of float)
+0:101 'color' (4-component vector of float)
+0:101 'color2' (4-component vector of float)
+0:? Linker Objects
+0:? 'd' (uniform float)
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'smallColor' (uniform 4-component vector of float)
+0:? 'otherColor' (uniform 4-component vector of float)
+0:? 'c' (smooth in float)
+0:? 'threshhold' (uniform float)
+0:? 'threshhold2' (uniform float)
+0:? 'threshhold3' (uniform float)
+0:? 'minimum' (uniform float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'b' (uniform bool)
+
diff --git a/Test/baseResults/errors.frag.out b/Test/baseResults/errors.frag.out
new file mode 100644
index 0000000..73d991b
--- /dev/null
+++ b/Test/baseResults/errors.frag.out
@@ -0,0 +1,12 @@
+WARNING: 0:1: '#version' : statement missing: use #version on first line of shader
+ERROR: 0:1: 'main' : function cannot take any parameter(s)
+ERROR: 0:1: 'int' : main function cannot return a value
+ERROR: 2 compilation errors. No code generated.
+
+0:1Function Definition: main(i1; (mediump int)
+0:1 Function Parameters:
+0:1 'foo' (in mediump int)
+0:3 Sequence
+0:3 Branch: Return with expression
+0:3 1 (const int)
+
diff --git a/Test/baseResults/flowControl.frag.out b/Test/baseResults/flowControl.frag.out
new file mode 100644
index 0000000..606671d
--- /dev/null
+++ b/Test/baseResults/flowControl.frag.out
@@ -0,0 +1,37 @@
+0:? Sequence
+0:10 Function Definition: main( (void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 Sequence
+0:12 move second child to first child (4-component vector of float)
+0:12 'color' (4-component vector of float)
+0:12 'BaseColor' (smooth in 4-component vector of float)
+0:15 move second child to first child (4-component vector of float)
+0:15 'color2' (4-component vector of float)
+0:15 'otherColor' (uniform 4-component vector of float)
+0:17 Test condition and select (void)
+0:17 Condition
+0:17 Compare Greater Than (bool)
+0:17 'c' (smooth in float)
+0:17 'd' (uniform float)
+0:17 true case
+0:18 add second child into first child (4-component vector of float)
+0:18 'color' (4-component vector of float)
+0:18 'bigColor' (uniform 4-component vector of float)
+0:17 false case
+0:20 add second child into first child (4-component vector of float)
+0:20 'color' (4-component vector of float)
+0:20 'smallColor' (uniform 4-component vector of float)
+0:22 move second child to first child (4-component vector of float)
+0:22 'gl_FragColor' (fragColor 4-component vector of float)
+0:22 component-wise multiply (4-component vector of float)
+0:22 'color' (4-component vector of float)
+0:22 'color2' (4-component vector of float)
+0:? Linker Objects
+0:? 'd' (uniform float)
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'smallColor' (uniform 4-component vector of float)
+0:? 'otherColor' (uniform 4-component vector of float)
+0:? 'c' (smooth in float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/forLoop.frag.out b/Test/baseResults/forLoop.frag.out
new file mode 100644
index 0000000..40e267c
--- /dev/null
+++ b/Test/baseResults/forLoop.frag.out
@@ -0,0 +1,34 @@
+0:? Sequence
+0:8 Function Definition: main( (void)
+0:8 Function Parameters:
+0:10 Sequence
+0:10 Sequence
+0:10 move second child to first child (4-component vector of float)
+0:10 'color' (4-component vector of float)
+0:10 'BaseColor' (smooth in 4-component vector of float)
+0:12 Sequence
+0:12 Sequence
+0:12 move second child to first child (int)
+0:12 'i' (int)
+0:12 0 (const int)
+0:12 Loop with condition tested first
+0:12 Loop Condition
+0:12 Compare Less Than (bool)
+0:12 'i' (int)
+0:12 'Count' (uniform int)
+0:12 Loop Body
+0:13 Sequence
+0:13 add second child into first child (4-component vector of float)
+0:13 'color' (4-component vector of float)
+0:13 'bigColor' (uniform 4-component vector of float)
+0:12 Loop Terminal Expression
+0:12 Pre-Increment (int)
+0:12 'i' (int)
+0:16 move second child to first child (4-component vector of float)
+0:16 'gl_FragColor' (fragColor 4-component vector of float)
+0:16 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'Count' (uniform int)
+
diff --git a/Test/baseResults/forwardRef.frag.out b/Test/baseResults/forwardRef.frag.out
new file mode 100644
index 0000000..46170da
--- /dev/null
+++ b/Test/baseResults/forwardRef.frag.out
@@ -0,0 +1,54 @@
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:13 Sequence
+0:13 Sequence
+0:13 move second child to first child (4-component vector of float)
+0:13 'color' (4-component vector of float)
+0:13 Construct vec4 (4-component vector of float)
+0:13 Function Call: foo(vf4; (float)
+0:13 'BaseColor' (smooth in 4-component vector of float)
+0:15 Function Call: bar( (void)
+0:16 Sequence
+0:16 move second child to first child (float)
+0:16 'f' (float)
+0:16 Function Call: unreachableReturn( (float)
+0:18 move second child to first child (4-component vector of float)
+0:18 'gl_FragColor' (fragColor 4-component vector of float)
+0:18 vector-scale (4-component vector of float)
+0:18 'color' (4-component vector of float)
+0:18 'f' (float)
+0:21 Function Definition: bar( (void)
+0:21 Function Parameters:
+0:25 Function Definition: unreachableReturn( (float)
+0:25 Function Parameters:
+0:27 Sequence
+0:27 Function Call: bar( (void)
+0:28 Test condition and select (void)
+0:28 Condition
+0:28 Compare Less Than (bool)
+0:28 'd' (uniform float)
+0:28 4.200000
+0:28 true case
+0:29 Branch: Return with expression
+0:29 1.200000
+0:28 false case
+0:31 Branch: Return with expression
+0:31 4.500000
+0:34 Function Definition: foo(vf4; (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 (float)
+0:36 direct index (float)
+0:36 'bar' (in 4-component vector of float)
+0:36 0 (const int)
+0:36 direct index (float)
+0:36 'bar' (in 4-component vector of float)
+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)
+
diff --git a/Test/baseResults/functionCall.frag.out b/Test/baseResults/functionCall.frag.out
new file mode 100644
index 0000000..a162445
--- /dev/null
+++ b/Test/baseResults/functionCall.frag.out
@@ -0,0 +1,79 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child (float)
+0:7 'h' (float)
+0:7 0.000000
+0:9 Function Definition: foo(vf4; (float)
+0:9 Function Parameters:
+0:9 'bar' (in 4-component vector of float)
+0:11 Sequence
+0:11 Branch: Return with expression
+0:11 add (float)
+0:11 direct index (float)
+0:11 'bar' (in 4-component vector of float)
+0:11 0 (const int)
+0:11 direct index (float)
+0:11 'bar' (in 4-component vector of float)
+0:11 1 (const int)
+0:14 Function Definition: bar( (void)
+0:14 Function Parameters:
+0:18 Function Definition: unreachableReturn( (float)
+0:18 Function Parameters:
+0:20 Sequence
+0:20 Test condition and select (void)
+0:20 Condition
+0:20 Compare Less Than (bool)
+0:20 'd' (uniform float)
+0:20 4.200000
+0:20 true case
+0:21 Branch: Return with expression
+0:21 1.200000
+0:20 false case
+0:23 Branch: Return with expression
+0:23 4.500000
+0:27 Function Definition: missingReturn( (float)
+0:27 Function Parameters:
+0:29 Sequence
+0:29 Test condition and select (void)
+0:29 Condition
+0:29 Compare Less Than (bool)
+0:29 'd' (uniform float)
+0:29 4.500000
+0:29 true case
+0:30 Sequence
+0:30 move second child to first child (float)
+0:30 'h' (float)
+0:30 'd' (uniform float)
+0:31 Branch: Return with expression
+0:31 3.900000
+0:35 Function Definition: main( (void)
+0:35 Function Parameters:
+0:37 Sequence
+0:37 Sequence
+0:37 move second child to first child (4-component vector of float)
+0:37 'color' (4-component vector of float)
+0:37 Construct vec4 (4-component vector of float)
+0:37 Function Call: foo(vf4; (float)
+0:37 'BaseColor' (smooth in 4-component vector of float)
+0:39 Function Call: bar( (void)
+0:40 Sequence
+0:40 move second child to first child (float)
+0:40 'f' (float)
+0:40 Function Call: unreachableReturn( (float)
+0:41 Sequence
+0:41 move second child to first child (float)
+0:41 'g' (float)
+0:41 Function Call: missingReturn( (float)
+0:43 move second child to first child (4-component vector of float)
+0:43 'gl_FragColor' (fragColor 4-component vector of float)
+0:43 vector-scale (4-component vector of float)
+0:43 vector-scale (4-component vector of float)
+0:43 'color' (4-component vector of float)
+0:43 'f' (float)
+0:43 'h' (float)
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'd' (uniform float)
+
diff --git a/Test/baseResults/functionSemantics.frag.out b/Test/baseResults/functionSemantics.frag.out
new file mode 100644
index 0000000..35af953
--- /dev/null
+++ b/Test/baseResults/functionSemantics.frag.out
@@ -0,0 +1,100 @@
+0:? Sequence
+0:3 Function Definition: foo(i1;i1;i1;i1;i1;i1; (mediump int)
+0:3 Function Parameters:
+0:3 'a' (in mediump int)
+0:3 'b' (const (read only) mediump int)
+0:3 'c' (in mediump int)
+0:3 'd' (const (read only) mediump int)
+0:3 'e' (out mediump int)
+0:3 'f' (inout mediump int)
+0:5 Sequence
+0:5 Sequence
+0:5 move second child to first child (mediump int)
+0:5 'sum' (mediump int)
+0:5 add (mediump int)
+0:5 add (mediump int)
+0:5 add (mediump int)
+0:5 add (mediump int)
+0:5 'a' (in mediump int)
+0:5 'b' (const (read only) mediump int)
+0:5 'c' (in mediump int)
+0:5 'd' (const (read only) mediump int)
+0:5 'f' (inout mediump int)
+0:8 multiply second child into first child (mediump int)
+0:8 'a' (in mediump int)
+0:8 64 (const int)
+0:10 multiply second child into first child (mediump int)
+0:10 'c' (in mediump int)
+0:10 64 (const int)
+0:12 move second child to first child (mediump int)
+0:12 'e' (out mediump int)
+0:12 1024 (const int)
+0:13 multiply second child into first child (mediump int)
+0:13 'f' (inout mediump int)
+0:13 64 (const int)
+0:15 add second child into first child (mediump int)
+0:15 'sum' (mediump int)
+0:15 add (mediump int)
+0:15 add (mediump int)
+0:15 add (mediump int)
+0:15 add (mediump int)
+0:15 add (mediump int)
+0:15 'a' (in mediump int)
+0:15 component-wise multiply (mediump int)
+0:15 64 (const int)
+0:15 'b' (const (read only) mediump int)
+0:15 'c' (in mediump int)
+0:15 component-wise multiply (mediump int)
+0:15 64 (const int)
+0:15 'd' (const (read only) mediump int)
+0:15 'e' (out mediump int)
+0:15 'f' (inout mediump int)
+0:18 Branch: Return with expression
+0:18 'sum' (mediump int)
+0:21 Function Definition: main( (void)
+0:21 Function Parameters:
+0:? Sequence
+0:24 Sequence
+0:24 move second child to first child (mediump int)
+0:24 't' (mediump int)
+0:24 2 (const int)
+0:28 move second child to first child (mediump int)
+0:28 direct index (mediump int)
+0:28 t: direct index for structure (mediump 4-component vector of int)
+0:28 'f' (structure)
+0:28 0 (const int)
+0:28 1 (const int)
+0:28 32 (const int)
+0:30 Sequence
+0:30 move second child to first child (mediump int)
+0:30 'color' (mediump int)
+0:30 Function Call: foo(i1;i1;i1;i1;i1;i1; (mediump int)
+0:30 1 (const int)
+0:30 2 (const int)
+0:30 add (mediump int)
+0:30 't' (mediump int)
+0:30 't' (mediump int)
+0:30 8 (const int)
+0:30 'e' (mediump int)
+0:30 direct index (mediump int)
+0:30 t: direct index for structure (mediump 4-component vector of int)
+0:30 'f' (structure)
+0:30 0 (const int)
+0:30 1 (const int)
+0:32 add second child into first child (mediump int)
+0:32 'color' (mediump int)
+0:32 component-wise multiply (mediump int)
+0:32 128 (const int)
+0:32 add (mediump int)
+0:32 'e' (mediump int)
+0:32 direct index (mediump int)
+0:32 t: direct index for structure (mediump 4-component vector of int)
+0:32 'f' (structure)
+0:32 0 (const int)
+0:32 1 (const int)
+0:35 move second child to first child (mediump 4-component vector of float)
+0:35 'gl_FragColor' (fragColor mediump 4-component vector of float)
+0:35 Construct vec4 (mediump 4-component vector of float)
+0:35 Convert int to float (mediump float)
+0:35 'color' (mediump int)
+
diff --git a/Test/baseResults/length.frag.out b/Test/baseResults/length.frag.out
new file mode 100644
index 0000000..bb8f8a6
--- /dev/null
+++ b/Test/baseResults/length.frag.out
@@ -0,0 +1,21 @@
+0:? Sequence
+0:11 Function Definition: main( (void)
+0:11 Function Parameters:
+0:? Sequence
+0:15 Sequence
+0:15 move second child to first child (2-component vector of float)
+0:15 't' (2-component vector of float)
+0:15 add (2-component vector of float)
+0:15 direct index (smooth in 2-component vector of float)
+0:15 'v' (smooth in 2-element array of 2-component vector of float)
+0:15 0 (const int)
+0:15 direct index (smooth in 2-component vector of float)
+0:15 'v' (smooth in 2-element array of 2-component vector of float)
+0:15 1 (const int)
+0:17 move second child to first child (4-component vector of float)
+0:17 'gl_FragColor' (fragColor 4-component vector of float)
+0:17 30.000000
+0:17 30.000000
+0:17 30.000000
+0:17 30.000000
+
diff --git a/Test/baseResults/lineContinuation.vert.out b/Test/baseResults/lineContinuation.vert.out
new file mode 100644
index 0000000..2e56483
--- /dev/null
+++ b/Test/baseResults/lineContinuation.vert.out
@@ -0,0 +1,17 @@
+ERROR: 0:6: '#error' : e1
+ERROR: 0:11: '#error' : e2
+ERROR: 0:18: '#error' : e3
+ERROR: 3 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:20 Function Definition: main( (void)
+0:20 Function Parameters:
+0:20 Sequence
+0:20 move second child to first child (highp 4-component vector of float)
+0:20 'gl_Position' (gl_Position highp 4-component vector of float)
+0:20 Construct vec4 (highp 4-component vector of float)
+0:20 'foo' (highp float)
+0:? Linker Objects
+0:? 'gl_VertexID' (gl_VertexId highp int)
+0:? 'gl_InstanceID' (gl_InstanceId highp int)
+
diff --git a/Test/baseResults/localAggregates.frag.out b/Test/baseResults/localAggregates.frag.out
new file mode 100644
index 0000000..3e839fb
--- /dev/null
+++ b/Test/baseResults/localAggregates.frag.out
@@ -0,0 +1,168 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+WARNING: 0:5: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:34 Function Definition: main( (void)
+0:34 Function Parameters:
+0:? Sequence
+0:41 move second child to first child (structure)
+0:41 'locals2' (structure)
+0:41 s2_1: direct index for structure (structure)
+0:41 'foo3' (uniform structure)
+0:41 0 (const int)
+0:43 Test condition and select (void)
+0:43 Condition
+0:43 Compare Greater Than (bool)
+0:43 i: direct index for structure (int)
+0:43 s2_1: direct index for structure (structure)
+0:43 'foo3' (uniform structure)
+0:43 0 (const int)
+0:43 0 (const int)
+0:43 0 (const int)
+0:43 true case
+0:44 Sequence
+0:44 move second child to first child (float)
+0:44 f: direct index for structure (float)
+0:44 s1_1: direct index for structure (structure)
+0:44 'locals2' (structure)
+0:44 2 (const int)
+0:44 1 (const int)
+0:44 1.000000
+0:45 move second child to first child (float)
+0:45 direct index (float)
+0:45 'localFArray' (16-element array of float)
+0:45 4 (const int)
+0:45 direct index (float)
+0:45 'coord' (smooth in 2-component vector of float)
+0:45 0 (const int)
+0:46 move second child to first child (int)
+0:46 direct index (int)
+0:46 'localIArray' (8-element array of int)
+0:46 2 (const int)
+0:46 i: direct index for structure (int)
+0:46 s2_1: direct index for structure (structure)
+0:46 'foo3' (uniform structure)
+0:46 0 (const int)
+0:46 0 (const int)
+0:43 false case
+0:48 Sequence
+0:48 move second child to first child (float)
+0:48 f: direct index for structure (float)
+0:48 s1_1: direct index for structure (structure)
+0:48 'locals2' (structure)
+0:48 2 (const int)
+0:48 1 (const int)
+0:48 direct index (float)
+0:48 'coord' (smooth in 2-component vector of float)
+0:48 0 (const int)
+0:49 move second child to first child (float)
+0:49 direct index (float)
+0:49 'localFArray' (16-element array of float)
+0:49 4 (const int)
+0:49 1.000000
+0:50 move second child to first child (int)
+0:50 direct index (int)
+0:50 'localIArray' (8-element array of int)
+0:50 2 (const int)
+0:50 0 (const int)
+0:53 Test condition and select (void)
+0:53 Condition
+0:53 Compare Equal (bool)
+0:53 direct index (int)
+0:53 'localIArray' (8-element array of int)
+0:53 2 (const int)
+0:53 0 (const int)
+0:53 true case
+0:54 Pre-Increment (float)
+0:54 direct index (float)
+0:54 'localFArray' (16-element array of float)
+0:54 4 (const int)
+0:57 Sequence
+0:57 move second child to first child (int)
+0:57 'x' (int)
+0:57 5 (const int)
+0:58 move second child to first child (float)
+0:58 indirect index (float)
+0:58 'localArray' (16-element array of float)
+0:58 'x' (int)
+0:58 direct index (float)
+0:58 'coord' (smooth in 2-component vector of float)
+0:58 0 (const int)
+0:62 Sequence
+0:62 Sequence
+0:62 move second child to first child (int)
+0:62 'i' (int)
+0:62 0 (const int)
+0:62 Loop with condition tested first
+0:62 Loop Condition
+0:62 Compare Less Than (bool)
+0:62 'i' (int)
+0:62 16 (const int)
+0:62 Loop Body
+0:63 move second child to first child (float)
+0:63 indirect index (float)
+0:63 'a' (16-element array of float)
+0:63 'i' (int)
+0:63 0.000000
+0:62 Loop Terminal Expression
+0:62 Post-Increment (int)
+0:62 'i' (int)
+0:65 Test condition and select (void)
+0:65 Condition
+0:65 Compare Equal (bool)
+0:65 'condition' (uniform int)
+0:65 1 (const int)
+0:65 true case
+0:66 move second child to first child (16-element array of float)
+0:66 'a' (16-element array of float)
+0:66 'localArray' (16-element array of float)
+0:68 move second child to first child (4-component vector of float)
+0:68 bleh: direct index for structure (4-component vector of float)
+0:68 'locals2' (structure)
+0:68 3 (const int)
+0:68 'color' (smooth in 4-component vector of float)
+0:69 move second child to first child (float)
+0:69 direct index (float)
+0:69 bleh: direct index for structure (4-component vector of float)
+0:69 'locals2' (structure)
+0:69 3 (const int)
+0:69 2 (const int)
+0:69 direct index (float)
+0:69 'coord' (smooth in 2-component vector of float)
+0:69 1 (const int)
+0:71 move second child to first child (4-component vector of float)
+0:71 'gl_FragColor' (fragColor 4-component vector of float)
+0:71 component-wise multiply (4-component vector of float)
+0:71 vector-scale (4-component vector of float)
+0:71 bleh: direct index for structure (4-component vector of float)
+0:71 'locals2' (structure)
+0:71 3 (const int)
+0:71 add (float)
+0:71 add (float)
+0:71 add (float)
+0:71 direct index (float)
+0:71 'localFArray' (16-element array of float)
+0:71 4 (const int)
+0:71 f: direct index for structure (float)
+0:71 s1_1: direct index for structure (structure)
+0:71 'locals2' (structure)
+0:71 2 (const int)
+0:71 1 (const int)
+0:71 indirect index (float)
+0:71 'localArray' (16-element array of float)
+0:71 'x' (int)
+0:71 indirect index (float)
+0:71 'a' (16-element array of float)
+0:71 'x' (int)
+0:71 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:71 'sampler' (uniform sampler2D)
+0:71 'coord' (smooth in 2-component vector of float)
+0:? Linker Objects
+0:? 'sampler' (uniform sampler2D)
+0:? 'coord' (smooth in 2-component vector of float)
+0:? 'color' (smooth in 4-component vector of float)
+0:? 'foo' (uniform structure)
+0:? 'foo2' (uniform structure)
+0:? 'foo3' (uniform structure)
+0:? 'uFloatArray' (uniform 16-element array of float)
+0:? 'condition' (uniform int)
+
diff --git a/Test/baseResults/loops.frag.out b/Test/baseResults/loops.frag.out
new file mode 100644
index 0000000..0cc1c9a
--- /dev/null
+++ b/Test/baseResults/loops.frag.out
@@ -0,0 +1,856 @@
+WARNING: 0:14: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:53 Function Definition: main( (void)
+0:53 Function Parameters:
+0:55 Sequence
+0:55 Sequence
+0:55 move second child to first child (4-component vector of float)
+0:55 'color' (4-component vector of float)
+0:55 'BaseColor' (smooth in 4-component vector of float)
+0:58 Loop with condition tested first
+0:58 Loop Condition
+0:58 true (const bool)
+0:58 Loop Body
+0:59 Sequence
+0:59 Test condition and select (void)
+0:59 Condition
+0:59 Compare Less Than (bool)
+0:59 direct index (float)
+0:59 'color' (4-component vector of float)
+0:59 0 (const int)
+0:59 0.330000
+0:59 true case
+0:60 Sequence
+0:60 add second child into first child (4-component vector of float)
+0:60 'color' (4-component vector of float)
+0:60 0.330000
+0:60 0.330000
+0:60 0.330000
+0:60 0.330000
+0:61 Branch: Break
+0:63 Test condition and select (void)
+0:63 Condition
+0:63 Compare Less Than (bool)
+0:63 direct index (float)
+0:63 'color' (4-component vector of float)
+0:63 0 (const int)
+0:63 0.660000
+0:63 true case
+0:64 Sequence
+0:64 add second child into first child (4-component vector of float)
+0:64 'color' (4-component vector of float)
+0:64 0.660000
+0:64 0.660000
+0:64 0.660000
+0:64 0.660000
+0:65 Branch: Break
+0:68 add second child into first child (4-component vector of float)
+0:68 'color' (4-component vector of float)
+0:68 0.330000
+0:68 0.330000
+0:68 0.330000
+0:68 0.330000
+0:69 Branch: Break
+0:73 Loop with condition tested first
+0:73 Loop Condition
+0:73 Compare Less Than (bool)
+0:73 direct index (float)
+0:73 'color' (4-component vector of float)
+0:73 0 (const int)
+0:73 'd' (uniform float)
+0:73 Loop Body
+0:74 Sequence
+0:74 add second child into first child (4-component vector of float)
+0:74 'color' (4-component vector of float)
+0:74 'bigColor' (uniform 4-component vector of float)
+0:78 Loop with condition tested first
+0:78 Loop Condition
+0:78 Compare Less Than (bool)
+0:78 direct index (float)
+0:78 'color' (4-component vector of float)
+0:78 2 (const int)
+0:78 'd' (uniform float)
+0:78 Loop Body
+0:79 Sequence
+0:79 add second child into first child (4-component vector of float)
+0:79 'color' (4-component vector of float)
+0:79 'bigColor1_1' (uniform 4-component vector of float)
+0:80 Test condition and select (void)
+0:80 Condition
+0:80 Compare Less Than (bool)
+0:80 direct index (float)
+0:80 'color' (4-component vector of float)
+0:80 3 (const int)
+0:80 'd' (uniform float)
+0:80 true case
+0:81 Branch: Continue
+0:83 add second child into first child (4-component vector of float)
+0:83 'color' (4-component vector of float)
+0:83 'bigColor1_1' (uniform 4-component vector of float)
+0:87 Loop with condition tested first
+0:87 Loop Condition
+0:87 Compare Less Than (bool)
+0:87 direct index (float)
+0:87 'color' (4-component vector of float)
+0:87 0 (const int)
+0:87 42.000000
+0:87 Loop Body
+0:88 Sequence
+0:88 Pre-Increment (4-component vector of float)
+0:88 'color' (4-component vector of float)
+0:92 Loop with condition tested first
+0:92 Loop Condition
+0:92 logical-and (bool)
+0:92 Compare Less Than (bool)
+0:92 direct index (float)
+0:92 'color' (4-component vector of float)
+0:92 3 (const int)
+0:92 'd2' (uniform float)
+0:92 Compare Less Than (bool)
+0:92 direct index (float)
+0:92 'color' (4-component vector of float)
+0:92 1 (const int)
+0:92 'd3' (uniform float)
+0:92 Loop Body
+0:93 Sequence
+0:93 add second child into first child (4-component vector of float)
+0:93 'color' (4-component vector of float)
+0:93 'bigColor1_2' (uniform 4-component vector of float)
+0:97 Loop with condition tested first
+0:97 Loop Condition
+0:97 Compare Less Than (bool)
+0:97 direct index (float)
+0:97 'color' (4-component vector of float)
+0:97 2 (const int)
+0:97 'd3' (uniform float)
+0:97 Loop Body
+0:98 Sequence
+0:98 add second child into first child (4-component vector of float)
+0:98 'color' (4-component vector of float)
+0:98 'bigColor1_3' (uniform 4-component vector of float)
+0:99 Test condition and select (void)
+0:99 Condition
+0:99 Compare Less Than (bool)
+0:99 direct index (float)
+0:99 'color' (4-component vector of float)
+0:99 1 (const int)
+0:99 'd4' (uniform float)
+0:99 true case
+0:100 Branch: Break
+0:101 add second child into first child (4-component vector of float)
+0:101 'color' (4-component vector of float)
+0:101 'bigColor1_3' (uniform 4-component vector of float)
+0:105 Sequence
+0:105 Sequence
+0:105 move second child to first child (int)
+0:105 'i' (int)
+0:105 0 (const int)
+0:105 Loop with condition tested first
+0:105 Loop Condition
+0:105 Compare Less Than (bool)
+0:105 'i' (int)
+0:105 'Count' (uniform int)
+0:105 Loop Body
+0:106 Sequence
+0:106 add second child into first child (4-component vector of float)
+0:106 'color' (4-component vector of float)
+0:106 'bigColor2' (uniform 4-component vector of float)
+0:105 Loop Terminal Expression
+0:105 Pre-Increment (int)
+0:105 'i' (int)
+0:112 Loop with condition not tested first
+0:112 Loop Condition
+0:112 Compare Less Than (bool)
+0:112 direct index (float)
+0:112 'color' (4-component vector of float)
+0:112 0 (const int)
+0:112 'd2' (uniform float)
+0:112 Loop Body
+0:111 Sequence
+0:111 add second child into first child (4-component vector of float)
+0:111 'color' (4-component vector of float)
+0:111 'bigColor3' (uniform 4-component vector of float)
+0:115 Sequence
+0:115 Sequence
+0:115 move second child to first child (int)
+0:115 'i' (int)
+0:115 0 (const int)
+0:115 Loop with condition tested first
+0:115 Loop Condition
+0:115 Compare Less Than (bool)
+0:115 'i' (int)
+0:115 42 (const int)
+0:115 Loop Body
+0:116 Sequence
+0:116 add second child into first child (float)
+0:116 direct index (float)
+0:116 'color' (4-component vector of float)
+0:116 2 (const int)
+0:116 'd3' (uniform float)
+0:115 Loop Terminal Expression
+0:115 Pre-Increment (int)
+0:115 'i' (int)
+0:120 Sequence
+0:120 Sequence
+0:120 move second child to first child (int)
+0:120 'i' (int)
+0:120 0 (const int)
+0:120 Loop with condition tested first
+0:120 Loop Condition
+0:120 Compare Less Than (bool)
+0:120 'i' (int)
+0:120 100 (const int)
+0:120 Loop Body
+0:121 Sequence
+0:121 Test condition and select (void)
+0:121 Condition
+0:121 Compare Less Than (bool)
+0:121 direct index (float)
+0:121 'color' (4-component vector of float)
+0:121 2 (const int)
+0:121 20.000000
+0:121 true case
+0:122 Post-Increment (float)
+0:122 direct index (float)
+0:122 'color' (4-component vector of float)
+0:122 0 (const int)
+0:121 false case
+0:124 Post-Increment (float)
+0:124 direct index (float)
+0:124 'color' (4-component vector of float)
+0:124 1 (const int)
+0:125 Test condition and select (void)
+0:125 Condition
+0:125 Compare Less Than (bool)
+0:125 direct index (float)
+0:125 'color' (4-component vector of float)
+0:125 3 (const int)
+0:125 20.000000
+0:125 true case
+0:126 Test condition and select (void)
+0:126 Condition
+0:126 Compare Greater Than (bool)
+0:126 direct index (float)
+0:126 'color' (4-component vector of float)
+0:126 2 (const int)
+0:126 direct index (float)
+0:126 'color' (4-component vector of float)
+0:126 1 (const int)
+0:126 true case
+0:127 0 (const int)
+0:120 Loop Terminal Expression
+0:120 Pre-Increment (int)
+0:120 'i' (int)
+0:131 Sequence
+0:131 Sequence
+0:131 move second child to first child (int)
+0:131 'i' (int)
+0:131 0 (const int)
+0:131 Loop with condition tested first
+0:131 Loop Condition
+0:131 Compare Less Than (bool)
+0:131 'i' (int)
+0:131 120 (const int)
+0:131 Loop Body
+0:132 Sequence
+0:132 Test condition and select (void)
+0:132 Condition
+0:132 Compare Less Than (bool)
+0:132 direct index (float)
+0:132 'color' (4-component vector of float)
+0:132 2 (const int)
+0:132 20.000000
+0:132 true case
+0:133 Post-Increment (float)
+0:133 direct index (float)
+0:133 'color' (4-component vector of float)
+0:133 0 (const int)
+0:132 false case
+0:135 Post-Increment (float)
+0:135 direct index (float)
+0:135 'color' (4-component vector of float)
+0:135 1 (const int)
+0:131 Loop Terminal Expression
+0:131 Pre-Increment (int)
+0:131 'i' (int)
+0:139 Sequence
+0:139 Sequence
+0:139 move second child to first child (int)
+0:139 'i' (int)
+0:139 0 (const int)
+0:139 Loop with condition tested first
+0:139 Loop Condition
+0:139 Compare Less Than (bool)
+0:139 'i' (int)
+0:139 42 (const int)
+0:139 Loop Body
+0:140 Sequence
+0:140 add second child into first child (float)
+0:140 direct index (float)
+0:140 'color' (4-component vector of float)
+0:140 2 (const int)
+0:140 'd3' (uniform float)
+0:141 Test condition and select (void)
+0:141 Condition
+0:141 Compare Less Than (bool)
+0:141 direct index (float)
+0:141 'color' (4-component vector of float)
+0:141 0 (const int)
+0:141 'd4' (uniform float)
+0:141 true case
+0:142 Branch: Continue
+0:143 Pre-Increment (float)
+0:143 direct index (float)
+0:143 'color' (4-component vector of float)
+0:143 3 (const int)
+0:139 Loop Terminal Expression
+0:139 Pre-Increment (int)
+0:139 'i' (int)
+0:147 Sequence
+0:147 Sequence
+0:147 move second child to first child (int)
+0:147 'i' (int)
+0:147 0 (const int)
+0:147 Loop with condition tested first
+0:147 Loop Condition
+0:147 Compare Less Than (bool)
+0:147 'i' (int)
+0:147 42 (const int)
+0:147 Loop Body
+0:148 Sequence
+0:148 add second child into first child (float)
+0:148 direct index (float)
+0:148 'color' (4-component vector of float)
+0:148 2 (const int)
+0:148 'd3' (uniform float)
+0:149 Test condition and select (void)
+0:149 Condition
+0:149 Compare Less Than (bool)
+0:149 direct index (float)
+0:149 'color' (4-component vector of float)
+0:149 0 (const int)
+0:149 'd4' (uniform float)
+0:149 true case
+0:150 Branch: Break
+0:151 Pre-Increment (float)
+0:151 direct index (float)
+0:151 'color' (4-component vector of float)
+0:151 3 (const int)
+0:147 Loop Terminal Expression
+0:147 Pre-Increment (int)
+0:147 'i' (int)
+0:163 Loop with condition not tested first
+0:163 Loop Condition
+0:163 Compare Less Than (bool)
+0:163 direct index (float)
+0:163 'color' (4-component vector of float)
+0:163 2 (const int)
+0:163 'd4' (uniform float)
+0:163 Loop Body
+0:156 Sequence
+0:156 add second child into first child (4-component vector of float)
+0:156 'color' (4-component vector of float)
+0:156 'bigColor4' (uniform 4-component vector of float)
+0:157 Test condition and select (void)
+0:157 Condition
+0:157 Compare Less Than (bool)
+0:157 direct index (float)
+0:157 'color' (4-component vector of float)
+0:157 0 (const int)
+0:157 'd4' (uniform float)
+0:157 true case
+0:158 Branch: Continue
+0:159 Test condition and select (void)
+0:159 Condition
+0:159 Compare Less Than (bool)
+0:159 direct index (float)
+0:159 'color' (4-component vector of float)
+0:159 1 (const int)
+0:159 'd4' (uniform float)
+0:159 true case
+0:160 add second child into first child (float)
+0:160 direct index (float)
+0:160 'color' (4-component vector of float)
+0:160 1 (const int)
+0:160 'd4' (uniform float)
+0:159 false case
+0:162 add second child into first child (float)
+0:162 direct index (float)
+0:162 'color' (4-component vector of float)
+0:162 0 (const int)
+0:162 'd4' (uniform float)
+0:170 Loop with condition not tested first
+0:170 Loop Condition
+0:170 Compare Less Than (bool)
+0:170 direct index (float)
+0:170 'color' (4-component vector of float)
+0:170 0 (const int)
+0:170 'd5' (uniform float)
+0:170 Loop Body
+0:167 Sequence
+0:167 add second child into first child (4-component vector of float)
+0:167 'color' (4-component vector of float)
+0:167 'bigColor5' (uniform 4-component vector of float)
+0:168 Test condition and select (void)
+0:168 Condition
+0:168 Compare Less Than (bool)
+0:168 direct index (float)
+0:168 'color' (4-component vector of float)
+0:168 1 (const int)
+0:168 'd5' (uniform float)
+0:168 true case
+0:169 add second child into first child (float)
+0:169 direct index (float)
+0:169 'color' (4-component vector of float)
+0:169 1 (const int)
+0:169 'd5' (uniform float)
+0:173 Test condition and select (void)
+0:173 Condition
+0:173 Compare Less Than (bool)
+0:173 direct index (float)
+0:173 'color' (4-component vector of float)
+0:173 0 (const int)
+0:173 'd6' (uniform float)
+0:173 true case
+0:174 Sequence
+0:174 Loop with condition tested first
+0:174 Loop Condition
+0:174 Compare Less Than (bool)
+0:174 direct index (float)
+0:174 'color' (4-component vector of float)
+0:174 1 (const int)
+0:174 'd6' (uniform float)
+0:174 Loop Body
+0:175 add second child into first child (4-component vector of float)
+0:175 'color' (4-component vector of float)
+0:175 'bigColor6' (uniform 4-component vector of float)
+0:173 false case
+0:177 Sequence
+0:177 Loop with condition tested first
+0:177 Loop Condition
+0:177 Compare Less Than (bool)
+0:177 direct index (float)
+0:177 'color' (4-component vector of float)
+0:177 2 (const int)
+0:177 'd6' (uniform float)
+0:177 Loop Body
+0:178 add second child into first child (float)
+0:178 direct index (float)
+0:178 'color' (4-component vector of float)
+0:178 2 (const int)
+0:178 direct index (float)
+0:178 'bigColor6' (uniform 4-component vector of float)
+0:178 2 (const int)
+0:182 Test condition and select (void)
+0:182 Condition
+0:182 Compare Less Than (bool)
+0:182 direct index (float)
+0:182 'color' (4-component vector of float)
+0:182 0 (const int)
+0:182 'd6' (uniform float)
+0:182 true case
+0:183 Sequence
+0:183 Loop with condition tested first
+0:183 Loop Condition
+0:183 Compare Less Than (bool)
+0:183 direct index (float)
+0:183 'color' (4-component vector of float)
+0:183 1 (const int)
+0:183 'd6' (uniform float)
+0:183 Loop Body
+0:184 Sequence
+0:184 add second child into first child (4-component vector of float)
+0:184 'color' (4-component vector of float)
+0:184 'bigColor6' (uniform 4-component vector of float)
+0:185 Test condition and select (void)
+0:185 Condition
+0:185 Compare Less Than (bool)
+0:185 'd7' (uniform float)
+0:185 1.000000
+0:185 true case
+0:186 Branch: Break
+0:182 false case
+0:190 Sequence
+0:190 Loop with condition tested first
+0:190 Loop Condition
+0:190 Compare Less Than (bool)
+0:190 direct index (float)
+0:190 'color' (4-component vector of float)
+0:190 2 (const int)
+0:190 'd6' (uniform float)
+0:190 Loop Body
+0:191 add second child into first child (float)
+0:191 direct index (float)
+0:191 'color' (4-component vector of float)
+0:191 2 (const int)
+0:191 direct index (float)
+0:191 'bigColor6' (uniform 4-component vector of float)
+0:191 2 (const int)
+0:209 Loop with condition not tested first
+0:209 Loop Condition
+0:209 true (const bool)
+0:209 Loop Body
+0:197 Sequence
+0:197 Test condition and select (void)
+0:197 Condition
+0:197 Compare Less Than (bool)
+0:197 'd7' (uniform float)
+0:197 0.000000
+0:197 true case
+0:198 Branch: Break
+0:200 add second child into first child (4-component vector of float)
+0:200 'color' (4-component vector of float)
+0:200 'bigColor7' (uniform 4-component vector of float)
+0:202 Test condition and select (void)
+0:202 Condition
+0:202 Compare Less Than (bool)
+0:202 'd7' (uniform float)
+0:202 1.000000
+0:202 true case
+0:203 Sequence
+0:203 Post-Increment (float)
+0:203 direct index (float)
+0:203 'color' (4-component vector of float)
+0:203 2 (const int)
+0:204 Branch: Break
+0:207 add second child into first child (4-component vector of float)
+0:207 'color' (4-component vector of float)
+0:207 'BaseColor' (smooth in 4-component vector of float)
+0:234 Loop with condition not tested first
+0:234 Loop Condition
+0:234 Compare Less Than (bool)
+0:234 direct index (float)
+0:234 'color' (4-component vector of float)
+0:234 2 (const int)
+0:234 'd8' (uniform float)
+0:234 Loop Body
+0:217 Sequence
+0:217 Test condition and select (void)
+0:217 Condition
+0:217 Compare Less Than (bool)
+0:217 'd8' (uniform float)
+0:217 0.000000
+0:217 true case
+0:218 Branch: Break
+0:220 add second child into first child (4-component vector of float)
+0:220 'color' (4-component vector of float)
+0:220 'bigColor7' (uniform 4-component vector of float)
+0:222 Test condition and select (void)
+0:222 Condition
+0:222 Compare Less Than (bool)
+0:222 'd8' (uniform float)
+0:222 1.000000
+0:222 true case
+0:223 Sequence
+0:223 Post-Increment (float)
+0:223 direct index (float)
+0:223 'color' (4-component vector of float)
+0:223 2 (const int)
+0:224 Test condition and select (void)
+0:224 Condition
+0:224 Compare Less Than (bool)
+0:224 'd8' (uniform float)
+0:224 2.000000
+0:224 true case
+0:225 Sequence
+0:225 Post-Increment (float)
+0:225 direct index (float)
+0:225 'color' (4-component vector of float)
+0:225 1 (const int)
+0:224 false case
+0:227 Sequence
+0:227 Post-Increment (float)
+0:227 direct index (float)
+0:227 'color' (4-component vector of float)
+0:227 0 (const int)
+0:229 Branch: Break
+0:232 add second child into first child (4-component vector of float)
+0:232 'color' (4-component vector of float)
+0:232 'BaseColor' (smooth in 4-component vector of float)
+0:237 Loop with condition tested first
+0:237 Loop Condition
+0:237 Compare Less Than (bool)
+0:237 direct index (float)
+0:237 'color' (4-component vector of float)
+0:237 3 (const int)
+0:237 'd9' (uniform float)
+0:237 Loop Body
+0:238 Sequence
+0:238 Test condition and select (void)
+0:238 Condition
+0:238 Compare Greater Than (bool)
+0:238 'd9' (uniform float)
+0:238 'd8' (uniform float)
+0:238 true case
+0:239 Sequence
+0:239 Test condition and select (void)
+0:239 Condition
+0:239 Compare Less Than or Equal (bool)
+0:239 direct index (float)
+0:239 'color' (4-component vector of float)
+0:239 0 (const int)
+0:239 'd7' (uniform float)
+0:239 true case
+0:240 Sequence
+0:240 Test condition and select (void)
+0:240 Condition
+0:240 Compare Equal (bool)
+0:240 direct index (float)
+0:240 'color' (4-component vector of float)
+0:240 2 (const int)
+0:240 5.000000
+0:240 true case
+0:241 Post-Increment (float)
+0:241 direct index (float)
+0:241 'color' (4-component vector of float)
+0:241 3 (const int)
+0:240 false case
+0:243 Branch: Break
+0:250 Loop with condition tested first
+0:250 Loop Condition
+0:250 Compare Less Than (bool)
+0:250 direct index (float)
+0:250 'color' (4-component vector of float)
+0:250 2 (const int)
+0:250 'd10' (uniform float)
+0:250 Loop Body
+0:251 Sequence
+0:251 Post-Increment (float)
+0:251 direct index (float)
+0:251 'color' (4-component vector of float)
+0:251 1 (const int)
+0:252 Test condition and select (void)
+0:252 Condition
+0:252 Compare Less Than (bool)
+0:252 direct index (float)
+0:252 'color' (4-component vector of float)
+0:252 1 (const int)
+0:252 'd11' (uniform float)
+0:252 true case
+0:253 Sequence
+0:253 Post-Increment (float)
+0:253 direct index (float)
+0:253 'color' (4-component vector of float)
+0:253 2 (const int)
+0:254 Test condition and select (void)
+0:254 Condition
+0:254 Compare Less Than (bool)
+0:254 direct index (float)
+0:254 'color' (4-component vector of float)
+0:254 3 (const int)
+0:254 'd12' (uniform float)
+0:254 true case
+0:255 Post-Increment (float)
+0:255 direct index (float)
+0:255 'color' (4-component vector of float)
+0:255 3 (const int)
+0:254 false case
+0:257 Post-Increment (float)
+0:257 direct index (float)
+0:257 'color' (4-component vector of float)
+0:257 0 (const int)
+0:258 Branch: Continue
+0:261 Post-Increment (4-component vector of float)
+0:261 'color' (4-component vector of float)
+0:262 Branch: Break
+0:266 Loop with condition tested first
+0:266 Loop Condition
+0:266 Compare Less Than (bool)
+0:266 direct index (float)
+0:266 'color' (4-component vector of float)
+0:266 0 (const int)
+0:266 10.000000
+0:266 Loop Body
+0:267 Sequence
+0:267 add second child into first child (4-component vector of float)
+0:267 'color' (4-component vector of float)
+0:267 'bigColor8' (uniform 4-component vector of float)
+0:269 Test condition and select (void)
+0:269 Condition
+0:269 Compare Less Than (bool)
+0:269 direct index (float)
+0:269 'color' (4-component vector of float)
+0:269 2 (const int)
+0:269 'd8' (uniform float)
+0:269 true case
+0:270 Test condition and select (void)
+0:270 Condition
+0:270 Compare Less Than (bool)
+0:270 direct index (float)
+0:270 'color' (4-component vector of float)
+0:270 3 (const int)
+0:270 'd6' (uniform float)
+0:270 true case
+0:271 Branch: Continue
+0:273 add second child into first child (float)
+0:273 direct index (float)
+0:273 'color' (4-component vector of float)
+0:273 1 (const int)
+0:273 direct index (float)
+0:273 'bigColor8' (uniform 4-component vector of float)
+0:273 0 (const int)
+0:276 Post-Increment (4-component vector of float)
+0:276 'color' (4-component vector of float)
+0:277 move second child to first child (4-component vector of float)
+0:277 'gl_FragColor' (fragColor 4-component vector of float)
+0:277 'color' (4-component vector of float)
+0:280 Loop with condition tested first
+0:280 Loop Condition
+0:280 Compare Less Than (bool)
+0:280 direct index (float)
+0:280 'color' (4-component vector of float)
+0:280 0 (const int)
+0:280 'd14' (uniform float)
+0:280 Loop Body
+0:281 Sequence
+0:281 Test condition and select (void)
+0:281 Condition
+0:281 Compare Less Than (bool)
+0:281 direct index (float)
+0:281 'color' (4-component vector of float)
+0:281 1 (const int)
+0:281 'd15' (uniform float)
+0:281 true case
+0:282 Sequence
+0:282 Branch: Return
+0:281 false case
+0:285 Post-Increment (4-component vector of float)
+0:285 'color' (4-component vector of float)
+0:288 Post-Increment (4-component vector of float)
+0:288 'color' (4-component vector of float)
+0:290 Loop with condition tested first
+0:290 Loop Condition
+0:290 Compare Less Than (bool)
+0:290 direct index (float)
+0:290 'color' (4-component vector of float)
+0:290 3 (const int)
+0:290 'd16' (uniform float)
+0:290 Loop Body
+0:291 Sequence
+0:291 Post-Increment (float)
+0:291 direct index (float)
+0:291 'color' (4-component vector of float)
+0:291 3 (const int)
+0:296 Loop with condition tested first
+0:296 Loop Condition
+0:296 logical-and (bool)
+0:296 Compare Less Than (bool)
+0:296 direct index (float)
+0:296 'color' (4-component vector of float)
+0:296 3 (const int)
+0:296 'd2' (uniform float)
+0:296 Compare Less Than (bool)
+0:296 direct index (float)
+0:296 'color' (4-component vector of float)
+0:296 1 (const int)
+0:296 'd3' (uniform float)
+0:296 Loop Body
+0:297 Sequence
+0:297 add second child into first child (4-component vector of float)
+0:297 'color' (4-component vector of float)
+0:297 'bigColor1_2' (uniform 4-component vector of float)
+0:298 Test condition and select (void)
+0:298 Condition
+0:298 Compare Less Than (bool)
+0:298 direct index (float)
+0:298 'color' (4-component vector of float)
+0:298 2 (const int)
+0:298 'd3' (uniform float)
+0:298 true case
+0:299 Branch: Return
+0:307 Loop with condition not tested first
+0:307 Loop Condition
+0:307 Compare Less Than (bool)
+0:307 direct index (float)
+0:307 'color' (4-component vector of float)
+0:307 0 (const int)
+0:307 'd17' (uniform float)
+0:307 Loop Body
+0:304 Sequence
+0:304 Test condition and select (void)
+0:304 Condition
+0:304 Compare Less Than (bool)
+0:304 direct index (float)
+0:304 'color' (4-component vector of float)
+0:304 1 (const int)
+0:304 'd18' (uniform float)
+0:304 true case
+0:305 Branch: Return
+0:306 Post-Increment (4-component vector of float)
+0:306 'color' (4-component vector of float)
+0:310 Loop with condition tested first
+0:310 Loop Condition
+0:310 Compare Less Than (bool)
+0:310 direct index (float)
+0:310 'color' (4-component vector of float)
+0:310 1 (const int)
+0:310 'd16' (uniform float)
+0:310 Loop Body
+0:311 Sequence
+0:311 Test condition and select (void)
+0:311 Condition
+0:311 Compare Less Than (bool)
+0:311 direct index (float)
+0:311 'color' (4-component vector of float)
+0:311 3 (const int)
+0:311 'd16' (uniform float)
+0:311 true case
+0:312 Sequence
+0:312 Branch: Kill
+0:311 false case
+0:314 Post-Increment (4-component vector of float)
+0:314 'color' (4-component vector of float)
+0:317 Post-Increment (4-component vector of float)
+0:317 'color' (4-component vector of float)
+0:319 move second child to first child (4-component vector of float)
+0:319 'gl_FragColor' (fragColor 4-component vector of float)
+0:319 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'bigColor1_1' (uniform 4-component vector of float)
+0:? 'bigColor1_2' (uniform 4-component vector of float)
+0:? 'bigColor1_3' (uniform 4-component vector of float)
+0:? 'bigColor2' (uniform 4-component vector of float)
+0:? 'bigColor3' (uniform 4-component vector of float)
+0:? 'bigColor4' (uniform 4-component vector of float)
+0:? 'bigColor5' (uniform 4-component vector of float)
+0:? 'bigColor6' (uniform 4-component vector of float)
+0:? 'bigColor7' (uniform 4-component vector of float)
+0:? 'bigColor8' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'd' (uniform float)
+0:? 'd2' (uniform float)
+0:? 'd3' (uniform float)
+0:? 'd4' (uniform float)
+0:? 'd5' (uniform float)
+0:? 'd6' (uniform float)
+0:? 'd7' (uniform float)
+0:? 'd8' (uniform float)
+0:? 'd9' (uniform float)
+0:? 'd10' (uniform float)
+0:? 'd11' (uniform float)
+0:? 'd12' (uniform float)
+0:? 'd13' (uniform float)
+0:? 'd14' (uniform float)
+0:? 'd15' (uniform float)
+0:? 'd16' (uniform float)
+0:? 'd17' (uniform float)
+0:? 'd18' (uniform float)
+0:? 'd19' (uniform float)
+0:? 'd20' (uniform float)
+0:? 'd21' (uniform float)
+0:? 'd22' (uniform float)
+0:? 'd23' (uniform float)
+0:? 'd24' (uniform float)
+0:? 'd25' (uniform float)
+0:? 'd26' (uniform float)
+0:? 'd27' (uniform float)
+0:? 'd28' (uniform float)
+0:? 'd29' (uniform float)
+0:? 'd30' (uniform float)
+0:? 'd31' (uniform float)
+0:? 'd32' (uniform float)
+0:? 'd33' (uniform float)
+0:? 'd34' (uniform float)
+0:? 'Count' (uniform int)
+
diff --git a/Test/baseResults/loopsArtificial.frag.out b/Test/baseResults/loopsArtificial.frag.out
new file mode 100644
index 0000000..5681ac4
--- /dev/null
+++ b/Test/baseResults/loopsArtificial.frag.out
@@ -0,0 +1,194 @@
+WARNING: 0:14: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:53 Function Definition: main( (void)
+0:53 Function Parameters:
+0:55 Sequence
+0:55 Sequence
+0:55 move second child to first child (4-component vector of float)
+0:55 'color' (4-component vector of float)
+0:55 'BaseColor' (smooth in 4-component vector of float)
+0:71 Loop with condition not tested first
+0:71 Loop Condition
+0:71 Compare Less Than (bool)
+0:71 direct index (float)
+0:71 'color' (4-component vector of float)
+0:71 2 (const int)
+0:71 'd4' (uniform float)
+0:71 Loop Body
+0:59 Sequence
+0:59 add second child into first child (4-component vector of float)
+0:59 'color' (4-component vector of float)
+0:59 'bigColor4' (uniform 4-component vector of float)
+0:60 Test condition and select (void)
+0:60 Condition
+0:60 Compare Less Than (bool)
+0:60 direct index (float)
+0:60 'color' (4-component vector of float)
+0:60 0 (const int)
+0:60 'd4' (uniform float)
+0:60 true case
+0:61 Sequence
+0:61 add second child into first child (float)
+0:61 direct index (float)
+0:61 'color' (4-component vector of float)
+0:61 2 (const int)
+0:61 2.000000
+0:62 Test condition and select (void)
+0:62 Condition
+0:62 Compare Less Than (bool)
+0:62 direct index (float)
+0:62 'color' (4-component vector of float)
+0:62 2 (const int)
+0:62 'd4' (uniform float)
+0:62 true case
+0:63 Sequence
+0:63 Post-Increment (float)
+0:63 direct index (float)
+0:63 'color' (4-component vector of float)
+0:63 0 (const int)
+0:64 Branch: Continue
+0:67 Test condition and select (void)
+0:67 Condition
+0:67 Compare Less Than (bool)
+0:67 direct index (float)
+0:67 'color' (4-component vector of float)
+0:67 1 (const int)
+0:67 'd4' (uniform float)
+0:67 true case
+0:68 add second child into first child (float)
+0:68 direct index (float)
+0:68 'color' (4-component vector of float)
+0:68 1 (const int)
+0:68 'd4' (uniform float)
+0:67 false case
+0:70 add second child into first child (float)
+0:70 direct index (float)
+0:70 'color' (4-component vector of float)
+0:70 0 (const int)
+0:70 'd4' (uniform float)
+0:74 Loop with condition tested first
+0:74 Loop Condition
+0:74 Compare Less Than (bool)
+0:74 direct index (float)
+0:74 'color' (4-component vector of float)
+0:74 3 (const int)
+0:74 'd13' (uniform float)
+0:74 Loop Body
+0:75 Sequence
+0:75 Test condition and select (void)
+0:75 Condition
+0:75 Compare Less Than (bool)
+0:75 direct index (float)
+0:75 'color' (4-component vector of float)
+0:75 2 (const int)
+0:75 'd13' (uniform float)
+0:75 true case
+0:76 Post-Increment (4-component vector of float)
+0:76 'color' (4-component vector of float)
+0:75 false case
+0:78 Post-Decrement (4-component vector of float)
+0:78 'color' (4-component vector of float)
+0:80 add second child into first child (4-component vector of float)
+0:80 'color' (4-component vector of float)
+0:80 'bigColor4' (uniform 4-component vector of float)
+0:81 Test condition and select (void)
+0:81 Condition
+0:81 Compare Less Than (bool)
+0:81 direct index (float)
+0:81 'color' (4-component vector of float)
+0:81 0 (const int)
+0:81 'd4' (uniform float)
+0:81 true case
+0:82 Sequence
+0:82 add second child into first child (float)
+0:82 direct index (float)
+0:82 'color' (4-component vector of float)
+0:82 2 (const int)
+0:82 2.000000
+0:83 Test condition and select (void)
+0:83 Condition
+0:83 Compare Less Than (bool)
+0:83 direct index (float)
+0:83 'color' (4-component vector of float)
+0:83 2 (const int)
+0:83 'd4' (uniform float)
+0:83 true case
+0:84 Sequence
+0:84 Post-Increment (float)
+0:84 direct index (float)
+0:84 'color' (4-component vector of float)
+0:84 0 (const int)
+0:85 Branch: Continue
+0:88 Test condition and select (void)
+0:88 Condition
+0:88 Compare Less Than (bool)
+0:88 direct index (float)
+0:88 'color' (4-component vector of float)
+0:88 1 (const int)
+0:88 'd4' (uniform float)
+0:88 true case
+0:89 add second child into first child (float)
+0:89 direct index (float)
+0:89 'color' (4-component vector of float)
+0:89 1 (const int)
+0:89 'd4' (uniform float)
+0:88 false case
+0:91 add second child into first child (float)
+0:91 direct index (float)
+0:91 'color' (4-component vector of float)
+0:91 0 (const int)
+0:91 'd4' (uniform float)
+0:94 Post-Increment (4-component vector of float)
+0:94 'color' (4-component vector of float)
+0:95 move second child to first child (4-component vector of float)
+0:95 'gl_FragColor' (fragColor 4-component vector of float)
+0:95 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'bigColor1_1' (uniform 4-component vector of float)
+0:? 'bigColor1_2' (uniform 4-component vector of float)
+0:? 'bigColor1_3' (uniform 4-component vector of float)
+0:? 'bigColor2' (uniform 4-component vector of float)
+0:? 'bigColor3' (uniform 4-component vector of float)
+0:? 'bigColor4' (uniform 4-component vector of float)
+0:? 'bigColor5' (uniform 4-component vector of float)
+0:? 'bigColor6' (uniform 4-component vector of float)
+0:? 'bigColor7' (uniform 4-component vector of float)
+0:? 'bigColor8' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'd' (uniform float)
+0:? 'd2' (uniform float)
+0:? 'd3' (uniform float)
+0:? 'd4' (uniform float)
+0:? 'd5' (uniform float)
+0:? 'd6' (uniform float)
+0:? 'd7' (uniform float)
+0:? 'd8' (uniform float)
+0:? 'd9' (uniform float)
+0:? 'd10' (uniform float)
+0:? 'd11' (uniform float)
+0:? 'd12' (uniform float)
+0:? 'd13' (uniform float)
+0:? 'd14' (uniform float)
+0:? 'd15' (uniform float)
+0:? 'd16' (uniform float)
+0:? 'd17' (uniform float)
+0:? 'd18' (uniform float)
+0:? 'd19' (uniform float)
+0:? 'd20' (uniform float)
+0:? 'd21' (uniform float)
+0:? 'd22' (uniform float)
+0:? 'd23' (uniform float)
+0:? 'd24' (uniform float)
+0:? 'd25' (uniform float)
+0:? 'd26' (uniform float)
+0:? 'd27' (uniform float)
+0:? 'd28' (uniform float)
+0:? 'd29' (uniform float)
+0:? 'd30' (uniform float)
+0:? 'd31' (uniform float)
+0:? 'd32' (uniform float)
+0:? 'd33' (uniform float)
+0:? 'd34' (uniform float)
+0:? 'Count' (uniform int)
+
diff --git a/Test/baseResults/matrix.frag.out b/Test/baseResults/matrix.frag.out
new file mode 100644
index 0000000..2c28b78
--- /dev/null
+++ b/Test/baseResults/matrix.frag.out
@@ -0,0 +1,212 @@
+WARNING: 0:6: varying deprecated in version 130; may be removed in future release
+WARNING: 0:17: varying deprecated in version 130; may be removed in future release
+WARNING: 0:22: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:25 Function Definition: main( (void)
+0:25 Function Parameters:
+0:27 Sequence
+0:27 move second child to first child (4-component vector of float)
+0:27 'gl_FragColor' (fragColor 4-component vector of float)
+0:27 Construct vec4 (4-component vector of float)
+0:27 direct index (uniform 4-component vector of float)
+0:27 'un34' (uniform 4X4 matrix of float)
+0:27 1 (const int)
+0:28 add second child into first child (4-component vector of float)
+0:28 'gl_FragColor' (fragColor 4-component vector of float)
+0:28 Construct vec4 (4-component vector of float)
+0:28 vector-times-matrix (3-component vector of float)
+0:28 'Color' (smooth in 3-component vector of float)
+0:28 'colorTransform' (uniform 3X3 matrix of float)
+0:28 1.000000
+0:30 Test condition and select (void)
+0:30 Condition
+0:30 Compare Not Equal (bool)
+0:30 'm' (uniform 4X4 matrix of float)
+0:30 'n' (uniform 4X4 matrix of float)
+0:30 true case
+0:31 add second child into first child (4-component vector of float)
+0:31 'gl_FragColor' (fragColor 4-component vector of float)
+0:31 'v' (smooth in 4-component vector of float)
+0:30 false case
+0:33 Sequence
+0:33 add second child into first child (4-component vector of float)
+0:33 'gl_FragColor' (fragColor 4-component vector of float)
+0:33 matrix-times-vector (4-component vector of float)
+0:33 'm' (uniform 4X4 matrix of float)
+0:33 'v' (smooth in 4-component vector of float)
+0:34 add second child into first child (4-component vector of float)
+0:34 'gl_FragColor' (fragColor 4-component vector of float)
+0:34 vector-times-matrix (4-component vector of float)
+0:34 'v' (smooth in 4-component vector of float)
+0:34 subtract (4X4 matrix of float)
+0:34 'm' (uniform 4X4 matrix of float)
+0:34 'n' (uniform 4X4 matrix of float)
+0:42 Sequence
+0:42 move second child to first child (4X4 matrix of float)
+0:42 'm34' (4X4 matrix of float)
+0:45 Construct mat4 (4X4 matrix of float)
+0:42 component-wise multiply (float)
+0:42 direct index (float)
+0:42 'v' (smooth in 4-component vector of float)
+0:42 0 (const int)
+0:42 direct index (float)
+0:42 'u' (smooth in 4-component vector of float)
+0:42 0 (const int)
+0:42 component-wise multiply (float)
+0:42 direct index (float)
+0:42 'v' (smooth in 4-component vector of float)
+0:42 0 (const int)
+0:42 direct index (float)
+0:42 'u' (smooth in 4-component vector of float)
+0:42 1 (const int)
+0:42 component-wise multiply (float)
+0:42 direct index (float)
+0:42 'v' (smooth in 4-component vector of float)
+0:42 0 (const int)
+0:42 direct index (float)
+0:42 'u' (smooth in 4-component vector of float)
+0:42 2 (const int)
+0:42 component-wise multiply (float)
+0:42 direct index (float)
+0:42 'v' (smooth in 4-component vector of float)
+0:42 0 (const int)
+0:42 direct index (float)
+0:42 'u' (smooth in 4-component vector of float)
+0:42 3 (const int)
+0:43 component-wise multiply (float)
+0:43 direct index (float)
+0:43 'v' (smooth in 4-component vector of float)
+0:43 1 (const int)
+0:43 direct index (float)
+0:43 'u' (smooth in 4-component vector of float)
+0:43 0 (const int)
+0:43 component-wise multiply (float)
+0:43 direct index (float)
+0:43 'v' (smooth in 4-component vector of float)
+0:43 1 (const int)
+0:43 direct index (float)
+0:43 'u' (smooth in 4-component vector of float)
+0:43 1 (const int)
+0:43 component-wise multiply (float)
+0:43 direct index (float)
+0:43 'v' (smooth in 4-component vector of float)
+0:43 1 (const int)
+0:43 direct index (float)
+0:43 'u' (smooth in 4-component vector of float)
+0:43 2 (const int)
+0:43 component-wise multiply (float)
+0:43 direct index (float)
+0:43 'v' (smooth in 4-component vector of float)
+0:43 1 (const int)
+0:43 direct index (float)
+0:43 'u' (smooth in 4-component vector of float)
+0:43 3 (const int)
+0:44 component-wise multiply (float)
+0:44 direct index (float)
+0:44 'v' (smooth in 4-component vector of float)
+0:44 2 (const int)
+0:44 direct index (float)
+0:44 'u' (smooth in 4-component vector of float)
+0:44 0 (const int)
+0:44 component-wise multiply (float)
+0:44 direct index (float)
+0:44 'v' (smooth in 4-component vector of float)
+0:44 2 (const int)
+0:44 direct index (float)
+0:44 'u' (smooth in 4-component vector of float)
+0:44 1 (const int)
+0:44 component-wise multiply (float)
+0:44 direct index (float)
+0:44 'v' (smooth in 4-component vector of float)
+0:44 2 (const int)
+0:44 direct index (float)
+0:44 'u' (smooth in 4-component vector of float)
+0:44 2 (const int)
+0:44 component-wise multiply (float)
+0:44 direct index (float)
+0:44 'v' (smooth in 4-component vector of float)
+0:44 2 (const int)
+0:44 direct index (float)
+0:44 'u' (smooth in 4-component vector of float)
+0:44 3 (const int)
+0:45 component-wise multiply (float)
+0:45 direct index (float)
+0:45 'v' (smooth in 4-component vector of float)
+0:45 3 (const int)
+0:45 direct index (float)
+0:45 'u' (smooth in 4-component vector of float)
+0:45 0 (const int)
+0:45 component-wise multiply (float)
+0:45 direct index (float)
+0:45 'v' (smooth in 4-component vector of float)
+0:45 3 (const int)
+0:45 direct index (float)
+0:45 'u' (smooth in 4-component vector of float)
+0:45 1 (const int)
+0:45 component-wise multiply (float)
+0:45 direct index (float)
+0:45 'v' (smooth in 4-component vector of float)
+0:45 3 (const int)
+0:45 direct index (float)
+0:45 'u' (smooth in 4-component vector of float)
+0:45 2 (const int)
+0:45 component-wise multiply (float)
+0:45 direct index (float)
+0:45 'v' (smooth in 4-component vector of float)
+0:45 3 (const int)
+0:45 direct index (float)
+0:45 'u' (smooth in 4-component vector of float)
+0:45 3 (const int)
+0:46 add second child into first child (4X4 matrix of float)
+0:46 'm34' (4X4 matrix of float)
+0:46 Construct mat4 (4X4 matrix of float)
+0:46 direct index (float)
+0:46 'v' (smooth in 4-component vector of float)
+0:46 0 (const int)
+0:47 add second child into first child (4X4 matrix of float)
+0:47 'm34' (4X4 matrix of float)
+0:47 Construct mat4 (4X4 matrix of float)
+0:47 'u' (smooth in 4-component vector of float)
+0:47 direct index (float)
+0:47 'u' (smooth in 4-component vector of float)
+0:47 0 (const int)
+0:47 'u' (smooth in 4-component vector of float)
+0:47 direct index (float)
+0:47 'u' (smooth in 4-component vector of float)
+0:47 0 (const int)
+0:47 'u' (smooth in 4-component vector of float)
+0:47 direct index (float)
+0:47 'u' (smooth in 4-component vector of float)
+0:47 0 (const int)
+0:47 direct index (float)
+0:47 'u' (smooth in 4-component vector of float)
+0:47 0 (const int)
+0:51 Test condition and select (void)
+0:51 Condition
+0:51 Compare Equal (bool)
+0:51 'm34' (4X4 matrix of float)
+0:51 'un34' (uniform 4X4 matrix of float)
+0:51 true case
+0:52 add second child into first child (4-component vector of float)
+0:52 'gl_FragColor' (fragColor 4-component vector of float)
+0:52 matrix-times-vector (4-component vector of float)
+0:52 'm34' (4X4 matrix of float)
+0:52 'u' (smooth in 4-component vector of float)
+0:51 false case
+0:54 add second child into first child (4-component vector of float)
+0:54 'gl_FragColor' (fragColor 4-component vector of float)
+0:54 matrix-times-vector (4-component vector of float)
+0:54 matrix-multiply (4X4 matrix of float)
+0:54 'un34' (uniform 4X4 matrix of float)
+0:54 'um43' (uniform 4X4 matrix of float)
+0:54 'v' (smooth in 4-component vector of float)
+0:? Linker Objects
+0:? 'colorTransform' (uniform 3X3 matrix of float)
+0:? 'Color' (smooth in 3-component vector of float)
+0:? 'm' (uniform 4X4 matrix of float)
+0:? 'n' (uniform 4X4 matrix of float)
+0:? 'um43' (uniform 4X4 matrix of float)
+0:? 'un34' (uniform 4X4 matrix of float)
+0:? 'v' (smooth in 4-component vector of float)
+0:? 'u' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/matrix2.frag.out b/Test/baseResults/matrix2.frag.out
new file mode 100644
index 0000000..8bf9225
--- /dev/null
+++ b/Test/baseResults/matrix2.frag.out
@@ -0,0 +1,144 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+WARNING: 0:13: varying deprecated in version 130; may be removed in future release
+WARNING: 0:15: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:19 Function Definition: main( (void)
+0:19 Function Parameters:
+0:21 Sequence
+0:21 Sequence
+0:21 move second child to first child (3X4 matrix of float)
+0:21 'm34' (3X4 matrix of float)
+0:21 outer product (3X4 matrix of float)
+0:21 'v' (smooth in 4-component vector of float)
+0:21 'u' (smooth in 3-component vector of float)
+0:23 add second child into first child (3X4 matrix of float)
+0:23 'm34' (3X4 matrix of float)
+0:23 4.300000
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:23 4.300000
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:23 0.000000
+0:23 4.300000
+0:23 0.000000
+0:25 move second child to first child (4-component vector of float)
+0:25 'FragColor' (out 4-component vector of float)
+0:25 Construct vec4 (4-component vector of float)
+0:25 'Color' (smooth in 3-component vector of float)
+0:25 1.000000
+0:26 multiply second child into first child (4-component vector of float)
+0:26 'FragColor' (out 4-component vector of float)
+0:26 Construct vec4 (4-component vector of float)
+0:26 vector-times-matrix (3-component vector of float)
+0:26 'FragColor' (out 4-component vector of float)
+0:26 'm34' (3X4 matrix of float)
+0:26 1.000000
+0:28 matrix scale second child into first child (3X4 matrix of float)
+0:28 'm34' (3X4 matrix of float)
+0:28 direct index (float)
+0:28 'v' (smooth in 4-component vector of float)
+0:28 0 (const int)
+0:30 Sequence
+0:30 move second child to first child (4X4 matrix of float)
+0:30 'm44' (4X4 matrix of float)
+0:30 Construct mat4 (4X4 matrix of float)
+0:30 'un34' (uniform 3X4 matrix of float)
+0:32 add second child into first child (4X4 matrix of float)
+0:32 'm44' (4X4 matrix of float)
+0:32 matrix-multiply (4X4 matrix of float)
+0:32 'm34' (3X4 matrix of float)
+0:32 'um43' (uniform 4X3 matrix of float)
+0:34 add second child into first child (4-component vector of float)
+0:34 'FragColor' (out 4-component vector of float)
+0:34 matrix-times-vector (4-component vector of float)
+0:34 Negate value (4X4 matrix of float)
+0:34 'm44' (4X4 matrix of float)
+0:34 'v' (smooth in 4-component vector of float)
+0:36 matrix mult second child into first child (4-component vector of float)
+0:36 'FragColor' (out 4-component vector of float)
+0:36 component-wise multiply (4X4 matrix of float)
+0:36 'm44' (4X4 matrix of float)
+0:36 'm44' (4X4 matrix of float)
+0:38 move second child to first child (3X4 matrix of float)
+0:38 'm34' (3X4 matrix of float)
+0:38 transpose (3X4 matrix of float)
+0:38 'um43' (uniform 4X3 matrix of float)
+0:39 multiply second child into first child (4-component vector of float)
+0:39 'FragColor' (out 4-component vector of float)
+0:39 Construct vec4 (4-component vector of float)
+0:39 vector-times-matrix (3-component vector of float)
+0:39 'FragColor' (out 4-component vector of float)
+0:39 'm34' (3X4 matrix of float)
+0:39 1.000000
+0:40 multiply second child into first child (4-component vector of float)
+0:40 'FragColor' (out 4-component vector of float)
+0:40 Construct vec4 (4-component vector of float)
+0:40 determinant (float)
+0:40 'um4' (uniform 4X4 matrix of float)
+0:41 Sequence
+0:41 move second child to first child (2X2 matrix of float)
+0:41 'inv' (2X2 matrix of float)
+0:41 inverse (2X2 matrix of float)
+0:41 'um2' (uniform 2X2 matrix of float)
+0:42 multiply second child into first child (4-component vector of float)
+0:42 'FragColor' (out 4-component vector of float)
+0:42 Construct vec4 (4-component vector of float)
+0:42 direct index (float)
+0:42 direct index (2-component vector of float)
+0:42 'inv' (2X2 matrix of float)
+0:42 0 (const int)
+0:42 0 (const int)
+0:42 direct index (float)
+0:42 direct index (2-component vector of float)
+0:42 'inv' (2X2 matrix of float)
+0:42 1 (const int)
+0:42 0 (const int)
+0:42 direct index (float)
+0:42 direct index (2-component vector of float)
+0:42 'inv' (2X2 matrix of float)
+0:42 0 (const int)
+0:42 1 (const int)
+0:42 direct index (float)
+0:42 direct index (2-component vector of float)
+0:42 'inv' (2X2 matrix of float)
+0:42 1 (const int)
+0:42 1 (const int)
+0:43 Sequence
+0:43 move second child to first child (3X3 matrix of float)
+0:43 'inv3' (3X3 matrix of float)
+0:43 inverse (3X3 matrix of float)
+0:43 'um3' (uniform 3X3 matrix of float)
+0:44 multiply second child into first child (4-component vector of float)
+0:44 'FragColor' (out 4-component vector of float)
+0:44 Construct vec4 (4-component vector of float)
+0:44 direct index (float)
+0:44 direct index (3-component vector of float)
+0:44 'inv3' (3X3 matrix of float)
+0:44 2 (const int)
+0:44 1 (const int)
+0:46 Sequence
+0:46 move second child to first child (4X4 matrix of float)
+0:46 'inv4' (4X4 matrix of float)
+0:46 inverse (4X4 matrix of float)
+0:46 'um4' (uniform 4X4 matrix of float)
+0:47 matrix mult second child into first child (4-component vector of float)
+0:47 'FragColor' (out 4-component vector of float)
+0:47 'inv4' (4X4 matrix of float)
+0:? Linker Objects
+0:? 'colorTransform' (uniform 3X3 matrix of float)
+0:? 'Color' (smooth in 3-component vector of float)
+0:? 'm' (uniform 4X4 matrix of float)
+0:? 'n' (uniform 4X4 matrix of float)
+0:? 'um43' (uniform 4X3 matrix of float)
+0:? 'un34' (uniform 3X4 matrix of float)
+0:? 'um2' (uniform 2X2 matrix of float)
+0:? 'um3' (uniform 3X3 matrix of float)
+0:? 'um4' (uniform 4X4 matrix of float)
+0:? 'v' (smooth in 4-component vector of float)
+0:? 'u' (smooth in 3-component vector of float)
+0:? 'FragColor' (out 4-component vector of float)
+
diff --git a/Test/baseResults/matrixError.vert.out b/Test/baseResults/matrixError.vert.out
new file mode 100644
index 0000000..9412393
--- /dev/null
+++ b/Test/baseResults/matrixError.vert.out
@@ -0,0 +1,29 @@
+ERROR: 0:10: 'constructor' : too many arguments
+ERROR: 0:7: '=' : cannot assign to 'const 2X4 matrix of float'
+ERROR: 0:17: 'assign' : cannot convert from '2-component vector of float' to '3-component vector of float'
+ERROR: 0:18: 'assign' : cannot convert from '2-component vector of float' to '3-component vector of float'
+ERROR: 0:19: '.' : field selection not allowed on matrix
+ERROR: 0:21: '[' : index out of range '2'
+ERROR: 0:21: '[' : index out of range '4'
+ERROR: 7 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:12 Function Definition: main( (void)
+0:12 Function Parameters:
+0:? Sequence
+0:17 'a' (3-component vector of float)
+0:18 'b' (3-component vector of float)
+0:19 'm23' (2X3 matrix of float)
+0:21 move second child to first child (4-component vector of float)
+0:21 'gl_Position' (gl_Position 4-component vector of float)
+0:21 Construct vec4 (4-component vector of float)
+0:21 matrix-times-vector (3-component vector of float)
+0:21 matrix-multiply (3X3 matrix of float)
+0:21 'm23' (2X3 matrix of float)
+0:21 'm32' (uniform 3X2 matrix of float)
+0:21 'v3' (in 3-component vector of float)
+0:21 'm24' (float)
+0:? Linker Objects
+0:? 'v3' (in 3-component vector of float)
+0:? 'm32' (uniform 3X2 matrix of float)
+
diff --git a/Test/baseResults/newTexture.frag.out b/Test/baseResults/newTexture.frag.out
new file mode 100644
index 0000000..8bb8a41
--- /dev/null
+++ b/Test/baseResults/newTexture.frag.out
@@ -0,0 +1,204 @@
+0:? Sequence
+0:34 Function Definition: main( (void)
+0:34 Function Parameters:
+0:36 Sequence
+0:36 Sequence
+0:36 move second child to first child (4-component vector of float)
+0:36 'v' (4-component vector of float)
+0:36 Function Call: texture(s21;vf2; (4-component vector of float)
+0:36 's2D' (uniform sampler2D)
+0:36 'c2D' (smooth in 2-component vector of float)
+0:37 add second child into first child (4-component vector of float)
+0:37 'v' (4-component vector of float)
+0:37 Function Call: textureProj(s31;vf4; (4-component vector of float)
+0:37 's3D' (uniform sampler3D)
+0:37 'c4D' (smooth in 4-component vector of float)
+0:38 add second child into first child (4-component vector of float)
+0:38 'v' (4-component vector of float)
+0:38 Function Call: textureLod(sA21;vf3;f1; (4-component vector of float)
+0:38 's2DArray' (uniform sampler2DArray)
+0:38 'c3D' (smooth in 3-component vector of float)
+0:38 1.200000
+0:39 add second child into first child (float)
+0:39 direct index (float)
+0:39 'v' (4-component vector of float)
+0:39 1 (const int)
+0:39 Function Call: textureOffset(sS21;vf3;vi2;f1; (float)
+0:39 's2DShadow' (uniform sampler2DShadow)
+0:39 'c3D' (smooth in 3-component vector of float)
+0:39 'ic2D' (flat in 2-component vector of int)
+0:39 'c1D' (smooth in float)
+0:40 add second child into first child (4-component vector of float)
+0:40 'v' (4-component vector of float)
+0:40 Function Call: texelFetch(s31;vi3;i1; (4-component vector of float)
+0:40 's3D' (uniform sampler3D)
+0:40 'ic3D' (flat in 3-component vector of int)
+0:40 'ic1D' (flat in int)
+0:41 add second child into first child (4-component vector of float)
+0:41 'v' (4-component vector of float)
+0:41 Function Call: texelFetchOffset(s21;vi2;i1;vi2; (4-component vector of float)
+0:41 's2D' (uniform sampler2D)
+0:41 'ic2D' (flat in 2-component vector of int)
+0:41 4 (const int)
+0:41 'ic2D' (flat in 2-component vector of int)
+0:42 add second child into first child (float)
+0:42 direct index (float)
+0:42 'v' (4-component vector of float)
+0:42 1 (const int)
+0:42 Function Call: textureLodOffset(sS21;vf3;f1;vi2; (float)
+0:42 's2DShadow' (uniform sampler2DShadow)
+0:42 'c3D' (smooth in 3-component vector of float)
+0:42 'c1D' (smooth in float)
+0:42 'ic2D' (flat in 2-component vector of int)
+0:43 add second child into first child (4-component vector of float)
+0:43 'v' (4-component vector of float)
+0:43 Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (4-component vector of float)
+0:43 's2D' (uniform sampler2D)
+0:43 'c3D' (smooth in 3-component vector of float)
+0:43 'c1D' (smooth in float)
+0:43 'ic2D' (flat in 2-component vector of int)
+0:44 add second child into first child (4-component vector of float)
+0:44 'v' (4-component vector of float)
+0:44 Function Call: textureGrad(sC1;vf3;vf3;vf3; (4-component vector of float)
+0:44 'sCube' (uniform samplerCube)
+0:44 'c3D' (smooth in 3-component vector of float)
+0:44 'c3D' (smooth in 3-component vector of float)
+0:44 'c3D' (smooth in 3-component vector of float)
+0:45 add second child into first child (float)
+0:45 direct index (float)
+0:45 'v' (4-component vector of float)
+0:45 0 (const int)
+0:45 Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (float)
+0:45 's2DArrayShadow' (uniform sampler2DArrayShadow)
+0:45 'c4D' (smooth in 4-component vector of float)
+0:45 'c2D' (smooth in 2-component vector of float)
+0:45 'c2D' (smooth in 2-component vector of float)
+0:45 'ic2D' (flat in 2-component vector of int)
+0:46 add second child into first child (4-component vector of float)
+0:46 'v' (4-component vector of float)
+0:46 Function Call: textureProjGrad(s31;vf4;vf3;vf3; (4-component vector of float)
+0:46 's3D' (uniform sampler3D)
+0:46 'c4D' (smooth in 4-component vector of float)
+0:46 'c3D' (smooth in 3-component vector of float)
+0:46 'c3D' (smooth in 3-component vector of float)
+0:47 add second child into first child (4-component vector of float)
+0:47 'v' (4-component vector of float)
+0:47 Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)
+0:47 's2D' (uniform sampler2D)
+0:47 'c3D' (smooth in 3-component vector of float)
+0:47 'c2D' (smooth in 2-component vector of float)
+0:47 'c2D' (smooth in 2-component vector of float)
+0:47 'ic2D' (flat in 2-component vector of int)
+0:49 Sequence
+0:49 move second child to first child (4-component vector of int)
+0:49 'iv' (4-component vector of int)
+0:49 Function Call: texture(is21;vf2; (4-component vector of int)
+0:49 'is2D' (uniform isampler2D)
+0:49 'c2D' (smooth in 2-component vector of float)
+0:50 add second child into first child (4-component vector of float)
+0:50 'v' (4-component vector of float)
+0:50 Convert int to float (4-component vector of float)
+0:50 'iv' (4-component vector of int)
+0:51 move second child to first child (4-component vector of int)
+0:51 'iv' (4-component vector of int)
+0:51 Function Call: textureProjOffset(is21;vf4;vi2; (4-component vector of int)
+0:51 'is2D' (uniform isampler2D)
+0:51 'c4D' (smooth in 4-component vector of float)
+0:51 'ic2D' (flat in 2-component vector of int)
+0:52 add second child into first child (4-component vector of float)
+0:52 'v' (4-component vector of float)
+0:52 Convert int to float (4-component vector of float)
+0:52 'iv' (4-component vector of int)
+0:53 move second child to first child (4-component vector of int)
+0:53 'iv' (4-component vector of int)
+0:53 Function Call: textureProjLod(is21;vf3;f1; (4-component vector of int)
+0:53 'is2D' (uniform isampler2D)
+0:53 'c3D' (smooth in 3-component vector of float)
+0:53 'c1D' (smooth in float)
+0:54 add second child into first child (4-component vector of float)
+0:54 'v' (4-component vector of float)
+0:54 Convert int to float (4-component vector of float)
+0:54 'iv' (4-component vector of int)
+0:55 move second child to first child (4-component vector of int)
+0:55 'iv' (4-component vector of int)
+0:55 Function Call: textureProjGrad(is21;vf3;vf2;vf2; (4-component vector of int)
+0:55 'is2D' (uniform isampler2D)
+0:55 'c3D' (smooth in 3-component vector of float)
+0:55 'c2D' (smooth in 2-component vector of float)
+0:55 'c2D' (smooth in 2-component vector of float)
+0:56 add second child into first child (4-component vector of float)
+0:56 'v' (4-component vector of float)
+0:56 Convert int to float (4-component vector of float)
+0:56 'iv' (4-component vector of int)
+0:57 move second child to first child (4-component vector of int)
+0:57 'iv' (4-component vector of int)
+0:57 Function Call: texture(is31;vf3;f1; (4-component vector of int)
+0:57 'is3D' (uniform isampler3D)
+0:57 'c3D' (smooth in 3-component vector of float)
+0:57 4.200000
+0:58 add second child into first child (4-component vector of float)
+0:58 'v' (4-component vector of float)
+0:58 Convert int to float (4-component vector of float)
+0:58 'iv' (4-component vector of int)
+0:59 move second child to first child (4-component vector of int)
+0:59 'iv' (4-component vector of int)
+0:59 Function Call: textureLod(isC1;vf3;f1; (4-component vector of int)
+0:59 'isCube' (uniform isamplerCube)
+0:59 'c3D' (smooth in 3-component vector of float)
+0:59 'c1D' (smooth in float)
+0:60 add second child into first child (4-component vector of float)
+0:60 'v' (4-component vector of float)
+0:60 Convert int to float (4-component vector of float)
+0:60 'iv' (4-component vector of int)
+0:61 move second child to first child (4-component vector of int)
+0:61 'iv' (4-component vector of int)
+0:61 Function Call: texelFetch(isA21;vi3;i1; (4-component vector of int)
+0:61 'is2DArray' (uniform isampler2DArray)
+0:61 'ic3D' (flat in 3-component vector of int)
+0:61 'ic1D' (flat in int)
+0:62 add second child into first child (4-component vector of float)
+0:62 'v' (4-component vector of float)
+0:62 Convert int to float (4-component vector of float)
+0:62 'iv' (4-component vector of int)
+0:64 Sequence
+0:64 move second child to first child (2-component vector of int)
+0:64 'iv2' (2-component vector of int)
+0:64 Function Call: textureSize(sSC1;i1; (2-component vector of int)
+0:64 'sCubeShadow' (uniform samplerCubeShadow)
+0:64 2 (const int)
+0:67 move second child to first child (4-component vector of float)
+0:67 'FragData' (out 4-component vector of float)
+0:67 add (4-component vector of float)
+0:67 'v' (4-component vector of float)
+0:67 Construct vec4 (4-component vector of float)
+0:67 Convert int to float (2-component vector of float)
+0:67 'iv2' (2-component vector of int)
+0:67 0.000000
+0:67 0.000000
+0:? Linker Objects
+0:? 's2D' (uniform sampler2D)
+0:? 's3D' (uniform sampler3D)
+0:? 'sCube' (uniform samplerCube)
+0:? 'sCubeShadow' (uniform samplerCubeShadow)
+0:? 's2DShadow' (uniform sampler2DShadow)
+0:? 's2DArray' (uniform sampler2DArray)
+0:? 's2DArrayShadow' (uniform sampler2DArrayShadow)
+0:? 'is2D' (uniform isampler2D)
+0:? 'is3D' (uniform isampler3D)
+0:? 'isCube' (uniform isamplerCube)
+0:? 'is2DArray' (uniform isampler2DArray)
+0:? 'is2Dms' (uniform isampler2DMS)
+0:? 'us2D' (uniform usampler2D)
+0:? 'us3D' (uniform usampler3D)
+0:? 'usCube' (uniform usamplerCube)
+0:? 'us2DArray' (uniform usampler2DArray)
+0:? 'c1D' (smooth in float)
+0:? 'c2D' (smooth in 2-component vector of float)
+0:? 'c3D' (smooth in 3-component vector of float)
+0:? 'c4D' (smooth in 4-component vector of float)
+0:? 'ic1D' (flat in int)
+0:? 'ic2D' (flat in 2-component vector of int)
+0:? 'ic3D' (flat in 3-component vector of int)
+0:? 'ic4D' (flat in 4-component vector of int)
+0:? 'FragData' (out 4-component vector of float)
+
diff --git a/Test/baseResults/nonSquare.vert.out b/Test/baseResults/nonSquare.vert.out
new file mode 100644
index 0000000..5ee5ea1
--- /dev/null
+++ b/Test/baseResults/nonSquare.vert.out
@@ -0,0 +1,62 @@
+0:? Sequence
+0:15 Function Definition: main( (void)
+0:15 Function Parameters:
+0:? Sequence
+0:20 move second child to first child (2-component vector of float)
+0:20 'a' (2-component vector of float)
+0:20 vector-times-matrix (2-component vector of float)
+0:20 'v3' (in 3-component vector of float)
+0:20 'm23' (2X3 matrix of float)
+0:21 move second child to first child (2-component vector of float)
+0:21 'b' (2-component vector of float)
+0:21 matrix-times-vector (2-component vector of float)
+0:21 'm32' (uniform 3X2 matrix of float)
+0:21 'v3' (in 3-component vector of float)
+0:23 move second child to first child (4-component vector of float)
+0:23 'gl_Position' (gl_Position 4-component vector of float)
+0:24 add (4-component vector of float)
+0:24 add (4-component vector of float)
+0:24 add (4-component vector of float)
+0:23 add (4-component vector of float)
+0:23 Construct vec4 (4-component vector of float)
+0:23 matrix-times-vector (3-component vector of float)
+0:23 matrix-multiply (3X3 matrix of float)
+0:23 'm23' (2X3 matrix of float)
+0:23 'm32' (uniform 3X2 matrix of float)
+0:23 'v3' (in 3-component vector of float)
+0:23 0.000000
+0:24 matrix-times-vector (4-component vector of float)
+0:24 3.000000
+0:24 6.000000
+0:24 0.000000
+0:24 0.000000
+0:24 9.000000
+0:24 12.000000
+0:24 0.000000
+0:24 0.000000
+0:24 15.000000
+0:24 18.000000
+0:24 0.000000
+0:24 0.000000
+0:24 21.000000
+0:24 24.000000
+0:24 0.000000
+0:24 0.000000
+0:24 'v4' (in 4-component vector of float)
+0:24 50.000000
+0:24 110.000000
+0:24 170.000000
+0:24 230.000000
+0:24 30.000000
+0:24 60.000000
+0:24 0.000000
+0:24 0.000000
+0:24 20.000000
+0:24 10.000000
+0:24 6.000000
+0:24 5.000000
+0:? Linker Objects
+0:? 'v3' (in 3-component vector of float)
+0:? 'v4' (in 4-component vector of float)
+0:? 'm32' (uniform 3X2 matrix of float)
+
diff --git a/Test/baseResults/numeral.frag.out b/Test/baseResults/numeral.frag.out
new file mode 100644
index 0000000..6b99a42
--- /dev/null
+++ b/Test/baseResults/numeral.frag.out
@@ -0,0 +1,308 @@
+ERROR: 0:14: '' : octal literal digit too large
+ERROR: 0:15: '' : octal literal digit too large
+ERROR: 0:16: '' : octal literal digit too large
+ERROR: 0:17: '' : octal literal too big
+ERROR: 0:18: '' : octal literal too big
+ERROR: 0:23: '' : octal literal digit too large
+ERROR: 0:24: '' : octal literal digit too large
+ERROR: 0:49: '' : bad digit in hexidecimal literal
+ERROR: 0:50: '' : hexidecimal literal too big
+ERROR: 0:88: '' : float literal needs a decimal point or exponent
+ERROR: 10 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:3 Function Definition: main( (void)
+0:3 Function Parameters:
+0:5 Sequence
+0:5 Sequence
+0:5 move second child to first child (int)
+0:5 'o00' (int)
+0:5 0 (const int)
+0:6 Sequence
+0:6 move second child to first child (int)
+0:6 'o000' (int)
+0:6 0 (const int)
+0:7 Sequence
+0:7 move second child to first child (int)
+0:7 'o0000' (int)
+0:7 0 (const int)
+0:8 Sequence
+0:8 move second child to first child (int)
+0:8 'o5' (int)
+0:8 5 (const int)
+0:9 Sequence
+0:9 move second child to first child (int)
+0:9 'o05' (int)
+0:9 5 (const int)
+0:10 Sequence
+0:10 move second child to first child (int)
+0:10 'o006' (int)
+0:10 6 (const int)
+0:11 Sequence
+0:11 move second child to first child (int)
+0:11 'o7' (int)
+0:11 7 (const int)
+0:12 Sequence
+0:12 move second child to first child (int)
+0:12 'o58' (int)
+0:12 58 (const int)
+0:13 Sequence
+0:13 move second child to first child (int)
+0:13 'omax' (int)
+0:13 -1 (const int)
+0:14 Sequence
+0:14 move second child to first child (int)
+0:14 'o8' (int)
+0:14 0 (const int)
+0:15 Sequence
+0:15 move second child to first child (int)
+0:15 'o08' (int)
+0:15 0 (const int)
+0:16 Sequence
+0:16 move second child to first child (int)
+0:16 'o009' (int)
+0:16 0 (const int)
+0:17 Sequence
+0:17 move second child to first child (int)
+0:17 'obig' (int)
+0:17 995208915 (const int)
+0:18 Sequence
+0:18 move second child to first child (int)
+0:18 'omax1' (int)
+0:18 536870912 (const int)
+0:20 Sequence
+0:20 move second child to first child (uint)
+0:20 'uo5' (uint)
+0:20 5 (const uint)
+0:21 Sequence
+0:21 move second child to first child (uint)
+0:21 'uo6' (uint)
+0:21 6 (const uint)
+0:22 Sequence
+0:22 move second child to first child (uint)
+0:22 'uo7' (uint)
+0:22 7 (const uint)
+0:23 Sequence
+0:23 move second child to first child (uint)
+0:23 'uo8' (uint)
+0:23 0 (const uint)
+0:24 Sequence
+0:24 move second child to first child (uint)
+0:24 'uo9' (uint)
+0:24 0 (const uint)
+0:26 Sequence
+0:26 move second child to first child (int)
+0:26 'h0' (int)
+0:26 0 (const int)
+0:27 Sequence
+0:27 move second child to first child (int)
+0:27 'h00' (int)
+0:27 0 (const int)
+0:28 Sequence
+0:28 move second child to first child (int)
+0:28 'h000' (int)
+0:28 0 (const int)
+0:29 Sequence
+0:29 move second child to first child (int)
+0:29 'h1' (int)
+0:29 1 (const int)
+0:30 Sequence
+0:30 move second child to first child (int)
+0:30 'h2' (int)
+0:30 2 (const int)
+0:31 Sequence
+0:31 move second child to first child (int)
+0:31 'h300' (int)
+0:31 768 (const int)
+0:32 Sequence
+0:32 move second child to first child (int)
+0:32 'hABCDEF' (int)
+0:32 11259375 (const int)
+0:33 Sequence
+0:33 move second child to first child (int)
+0:33 'hFFFFFFFF' (int)
+0:33 -1 (const int)
+0:34 Sequence
+0:34 move second child to first child (int)
+0:34 'h12345678' (int)
+0:34 12345678 (const int)
+0:35 Sequence
+0:35 move second child to first child (int)
+0:35 'hToBeOrNotToBe' (int)
+0:35 -1 (const int)
+0:37 Sequence
+0:37 move second child to first child (uint)
+0:37 'uh0' (uint)
+0:37 0 (const uint)
+0:38 Sequence
+0:38 move second child to first child (uint)
+0:38 'uhg' (uint)
+0:38 12 (const uint)
+0:39 Sequence
+0:39 move second child to first child (uint)
+0:39 'uh000' (uint)
+0:39 0 (const uint)
+0:40 Sequence
+0:40 move second child to first child (uint)
+0:40 'uh1' (uint)
+0:40 1 (const uint)
+0:41 Sequence
+0:41 move second child to first child (uint)
+0:41 'uh2' (uint)
+0:41 2 (const uint)
+0:42 Sequence
+0:42 move second child to first child (uint)
+0:42 'uh300' (uint)
+0:42 768 (const uint)
+0:43 Sequence
+0:43 move second child to first child (uint)
+0:43 'uhABCDEF' (uint)
+0:43 11259375 (const uint)
+0:44 Sequence
+0:44 move second child to first child (uint)
+0:44 'uhFFFFFFFF' (uint)
+0:44 4294967295 (const uint)
+0:45 Sequence
+0:45 move second child to first child (uint)
+0:45 'uh12345678' (uint)
+0:45 12345678 (const uint)
+0:46 Sequence
+0:46 move second child to first child (uint)
+0:46 'uhToBeOrNotToBe' (uint)
+0:46 4294967295 (const uint)
+0:49 Sequence
+0:49 move second child to first child (int)
+0:49 'he2' (int)
+0:49 0 (const int)
+0:50 Sequence
+0:50 move second child to first child (int)
+0:50 'hbig' (int)
+0:50 -1 (const int)
+0:52 Sequence
+0:52 move second child to first child (float)
+0:52 'f1' (float)
+0:52 1.000000
+0:53 Sequence
+0:53 move second child to first child (float)
+0:53 'f2' (float)
+0:53 2.000000
+0:54 Sequence
+0:54 move second child to first child (float)
+0:54 'f3' (float)
+0:54 3.000000
+0:55 Sequence
+0:55 move second child to first child (float)
+0:55 'f4' (float)
+0:55 4.000000
+0:56 Sequence
+0:56 move second child to first child (float)
+0:56 'f5' (float)
+0:56 5.000000
+0:57 Sequence
+0:57 move second child to first child (float)
+0:57 'f6' (float)
+0:57 6.000000
+0:58 Sequence
+0:58 move second child to first child (float)
+0:58 'f7' (float)
+0:58 7.000000
+0:59 Sequence
+0:59 move second child to first child (float)
+0:59 'f8' (float)
+0:59 8.000000
+0:60 Sequence
+0:60 move second child to first child (float)
+0:60 'f9' (float)
+0:60 9.000000
+0:61 Sequence
+0:61 move second child to first child (float)
+0:61 'f10' (float)
+0:61 10.000000
+0:62 Sequence
+0:62 move second child to first child (float)
+0:62 'f11' (float)
+0:62 11.000000
+0:63 Sequence
+0:63 move second child to first child (float)
+0:63 'f12' (float)
+0:63 12.000000
+0:64 Sequence
+0:64 move second child to first child (float)
+0:64 'f543' (float)
+0:64 543.000000
+0:65 Sequence
+0:65 move second child to first child (float)
+0:65 'f6789' (float)
+0:65 6789.000000
+0:66 Sequence
+0:66 move second child to first child (float)
+0:66 'f88' (float)
+0:66 88.000000
+0:68 Sequence
+0:68 move second child to first child (float)
+0:68 'g1' (float)
+0:68 53876.000000
+0:69 Sequence
+0:69 move second child to first child (float)
+0:69 'g2' (float)
+0:69 0.040000
+0:70 Sequence
+0:70 move second child to first child (float)
+0:70 'g3' (float)
+0:70 100000.000000
+0:71 Sequence
+0:71 move second child to first child (float)
+0:71 'g4' (float)
+0:71 0.007321
+0:72 Sequence
+0:72 move second child to first child (float)
+0:72 'g5' (float)
+0:72 32000.000000
+0:73 Sequence
+0:73 move second child to first child (float)
+0:73 'g6' (float)
+0:73 0.000005
+0:74 Sequence
+0:74 move second child to first child (float)
+0:74 'g7' (float)
+0:74 0.450000
+0:75 Sequence
+0:75 move second child to first child (float)
+0:75 'g8' (float)
+0:75 60000000000.000000
+0:77 Sequence
+0:77 move second child to first child (double)
+0:77 'gf1' (double)
+0:77 1.000000
+0:78 Sequence
+0:78 move second child to first child (double)
+0:78 'gf2' (double)
+0:78 2.000000
+0:79 Sequence
+0:79 move second child to first child (double)
+0:79 'gf3' (double)
+0:79 3.000000
+0:80 Sequence
+0:80 move second child to first child (double)
+0:80 'gf4' (double)
+0:80 4.000000
+0:81 Sequence
+0:81 move second child to first child (float)
+0:81 'gf5' (float)
+0:81 5.000000
+0:82 Sequence
+0:82 move second child to first child (float)
+0:82 'gf6' (float)
+0:82 6.000000
+0:88 Sequence
+0:88 move second child to first child (float)
+0:88 'e5' (float)
+0:88 5.000000
+0:? Linker Objects
+0:? 'c2' (layout(location=2 ) out 4-component vector of float)
+0:? 'c3' (layout(location=3 ) out 4-component vector of float)
+0:? 'c4' (layout(location=4 ) out 4-component vector of float)
+0:? 'c5' (layout(location=5 ) out 4-component vector of float)
+0:? 'c6' (layout(location=6 ) out 4-component vector of float)
+0:? 'c7' (layout(location=7 ) out 4-component vector of float)
+
diff --git a/Test/baseResults/pointCoord.frag.out b/Test/baseResults/pointCoord.frag.out
new file mode 100644
index 0000000..5b01501
--- /dev/null
+++ b/Test/baseResults/pointCoord.frag.out
@@ -0,0 +1,30 @@
+WARNING: 0:1: '#version' : statement missing: use #version on first line of shader
+0:? Sequence
+0:5 Function Definition: main( (void)
+0:5 Function Parameters:
+0:? Sequence
+0:9 Test condition and select (void)
+0:9 Condition
+0:9 Compare Less Than (bool)
+0:9 length (mediump float)
+0:9 'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)
+0:9 0.300000
+0:9 true case
+0:10 move second child to first child (highp 4-component vector of float)
+0:10 'color' (highp 4-component vector of float)
+0:10 Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)
+0:10 'sampler' (uniform lowp sampler2D)
+0:10 'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float)
+0:9 false case
+0:12 move second child to first child (highp 4-component vector of float)
+0:12 'color' (highp 4-component vector of float)
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:12 0.000000
+0:14 move second child to first child (highp 4-component vector of float)
+0:14 'gl_FragColor' (fragColor mediump 4-component vector of float)
+0:14 'color' (highp 4-component vector of float)
+0:? Linker Objects
+0:? 'sampler' (uniform lowp sampler2D)
+
diff --git a/Test/baseResults/precision.frag.out b/Test/baseResults/precision.frag.out
new file mode 100644
index 0000000..e36f97a
--- /dev/null
+++ b/Test/baseResults/precision.frag.out
@@ -0,0 +1,105 @@
+ERROR: 0:3: 'float' : type requires declaration of default precision qualifier
+ERROR: 0:18: 'int' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
+ERROR: 0:19: 'int' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
+ERROR: 0:21: 'float' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
+ERROR: 0:72: 'bool' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
+ERROR: 0:75: 'structure' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type
+ERROR: 0:76: 'bool' : type cannot have precision qualifier
+ERROR: 7 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:5 Function Definition: foo(vf3; (lowp 2-component vector of float)
+0:5 Function Parameters:
+0:5 'mv3' (in mediump 3-component vector of float)
+0:? Sequence
+0:8 Branch: Return with expression
+0:8 vector swizzle (highp 2-component vector of float)
+0:8 'hv4' (highp 4-component vector of float)
+0:8 Sequence
+0:8 0 (const int)
+0:8 1 (const int)
+0:25 Function Definition: main( (void)
+0:25 Function Parameters:
+0:27 Sequence
+0:27 Sequence
+0:27 move second child to first child (highp int)
+0:27 'sum' (lowp int)
+0:27 add (highp int)
+0:27 'global_medium' (mediump int)
+0:27 'global_high' (highp int)
+0:29 move second child to first child (mediump 4-component vector of float)
+0:29 'gl_FragColor' (fragColor mediump 4-component vector of float)
+0:29 Construct vec4 (mediump 4-component vector of float)
+0:29 'color' (smooth in mediump 3-component vector of float)
+0:29 1.000000
+0:32 add second child into first child (highp int)
+0:32 'sum' (lowp int)
+0:32 'level1_high' (highp int)
+0:36 add second child into first child (lowp int)
+0:36 'sum' (lowp int)
+0:36 'level1_low' (lowp int)
+0:41 Sequence
+0:41 move second child to first child (mediump float)
+0:41 'd' (lowp float)
+0:41 distance (mediump float)
+0:41 'arg1' (lowp float)
+0:41 'arg2' (mediump float)
+0:? Sequence
+0:45 add second child into first child (lowp int)
+0:45 'sum' (lowp int)
+0:45 'level2_low' (lowp int)
+0:49 add second child into first child (highp int)
+0:49 'sum' (lowp int)
+0:49 'level2_high' (highp int)
+0:58 Loop with condition not tested first
+0:58 Loop Condition
+0:58 true (const bool)
+0:58 Loop Body
+0:? Sequence
+0:? Sequence
+0:54 add second child into first child (mediump int)
+0:54 'sum' (lowp int)
+0:54 'level4_medium' (mediump int)
+0:57 add second child into first child (highp int)
+0:57 'sum' (lowp int)
+0:57 'level3_high' (highp int)
+0:60 add second child into first child (highp int)
+0:60 'sum' (lowp int)
+0:60 'level2_high2' (highp int)
+0:63 add second child into first child (lowp int)
+0:63 'sum' (lowp int)
+0:63 'level1_low3' (lowp int)
+0:65 add second child into first child (lowp int)
+0:65 'sum' (lowp int)
+0:65 add (lowp int)
+0:65 4 (const int)
+0:65 direct index (lowp int)
+0:65 add (lowp 2-component vector of int)
+0:65 component-wise multiply (lowp 2-component vector of int)
+0:65 Construct ivec2 (lowp 2-component vector of int)
+0:65 'level1_low3' (lowp int)
+0:65 Construct ivec2 (lowp 2-component vector of int)
+0:65 'level1_high' (highp int)
+0:65 Construct ivec2 (lowp 2-component vector of int)
+0:65 Comma (highp int)
+0:65 'level1_low3' (lowp int)
+0:65 'level1_high' (highp int)
+0:65 0 (const int)
+0:67 Function Call: texture2D(s21;vf2; (lowp 4-component vector of float)
+0:67 'samplerLow' (uniform lowp sampler2D)
+0:67 0.100000
+0:67 0.200000
+0:68 Function Call: texture2D(s21;vf2; (mediump 4-component vector of float)
+0:68 'samplerMed' (uniform mediump sampler2D)
+0:68 0.100000
+0:68 0.200000
+0:69 Function Call: texture2D(s21;vf2; (highp 4-component vector of float)
+0:69 'samplerHigh' (uniform highp sampler2D)
+0:69 0.100000
+0:69 0.200000
+0:? Linker Objects
+0:? 'color' (smooth in mediump 3-component vector of float)
+0:? 'samplerLow' (uniform lowp sampler2D)
+0:? 'samplerMed' (uniform mediump sampler2D)
+0:? 'samplerHigh' (uniform highp sampler2D)
+
diff --git a/Test/baseResults/precision.vert.out b/Test/baseResults/precision.vert.out
new file mode 100644
index 0000000..ed13267
--- /dev/null
+++ b/Test/baseResults/precision.vert.out
@@ -0,0 +1,45 @@
+ERROR: 0:7: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:8: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 0:14: 'sampler/image' : type requires declaration of default precision qualifier
+ERROR: 3 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:18 Function Definition: main( (void)
+0:18 Function Parameters:
+0:20 Sequence
+0:20 Sequence
+0:20 move second child to first child (highp 4-component vector of float)
+0:20 't' (highp 4-component vector of float)
+0:20 Function Call: texture(s21;vf2; (highp 4-component vector of float)
+0:20 's2D' (uniform lowp sampler2D)
+0:20 0.100000
+0:20 0.200000
+0:21 add second child into first child (highp 4-component vector of float)
+0:21 't' (highp 4-component vector of float)
+0:21 Function Call: texture(s21;vf2; (highp 4-component vector of float)
+0:21 's2Dhigh' (uniform highp sampler2D)
+0:21 0.100000
+0:21 0.200000
+0:22 add second child into first child (highp 4-component vector of float)
+0:22 't' (highp 4-component vector of float)
+0:22 Function Call: texture(sAS21;vf4; (highp float)
+0:22 's2dAS' (uniform mediump sampler2DArrayShadow)
+0:22 0.500000
+0:22 0.500000
+0:22 0.500000
+0:22 0.500000
+0:24 move second child to first child (highp 4-component vector of float)
+0:24 'gl_Position' (gl_Position highp 4-component vector of float)
+0:24 'pos' (in highp 4-component vector of float)
+0:? Linker Objects
+0:? 'pos' (in highp 4-component vector of float)
+0:? 's2D' (uniform lowp sampler2D)
+0:? 'sCube' (uniform lowp samplerCube)
+0:? 'is2DAbad' (uniform mediump isampler2DArray)
+0:? 's2dASbad' (uniform mediump sampler2DArrayShadow)
+0:? 's2dAS' (uniform mediump sampler2DArrayShadow)
+0:? 'is2DAbad2' (uniform mediump isampler2DArray)
+0:? 's2Dhigh' (uniform highp sampler2D)
+0:? 'gl_VertexID' (gl_VertexId highp int)
+0:? 'gl_InstanceID' (gl_InstanceId highp int)
+
diff --git a/Test/baseResults/prepost.frag.out b/Test/baseResults/prepost.frag.out
new file mode 100644
index 0000000..bddbcae
--- /dev/null
+++ b/Test/baseResults/prepost.frag.out
@@ -0,0 +1,112 @@
+0:3Function Definition: main( (void)
+0:3 Function Parameters:
+0:? Sequence
+0:10 Sequence
+0:10 move second child to first child (int)
+0:10 'index' (int)
+0:10 5 (const int)
+0:12 move second child to first child (float)
+0:12 direct index (float)
+0:12 y: direct index for structure (5-element array of float)
+0:12 'str' (structure)
+0:12 0 (const int)
+0:12 4 (const int)
+0:12 2.000000
+0:13 move second child to first child (float)
+0:13 't' (float)
+0:13 Pre-Increment (float)
+0:13 indirect index (float)
+0:13 y: direct index for structure (5-element array of float)
+0:13 'str' (structure)
+0:13 0 (const int)
+0:13 Pre-Decrement (int)
+0:13 'index' (int)
+0:14 add second child into first child (float)
+0:14 direct index (float)
+0:14 y: direct index for structure (5-element array of float)
+0:14 'str' (structure)
+0:14 0 (const int)
+0:14 4 (const int)
+0:14 't' (float)
+0:15 move second child to first child (float)
+0:15 't' (float)
+0:15 Post-Decrement (float)
+0:15 direct index (float)
+0:15 y: direct index for structure (5-element array of float)
+0:15 'str' (structure)
+0:15 0 (const int)
+0:15 4 (const int)
+0:16 add second child into first child (float)
+0:16 indirect index (float)
+0:16 y: direct index for structure (5-element array of float)
+0:16 'str' (structure)
+0:16 0 (const int)
+0:16 Post-Increment (int)
+0:16 'index' (int)
+0:16 't' (float)
+0:17 Pre-Decrement (float)
+0:17 indirect index (float)
+0:17 y: direct index for structure (5-element array of float)
+0:17 'str' (structure)
+0:17 0 (const int)
+0:17 Pre-Decrement (int)
+0:17 'index' (int)
+0:19 Sequence
+0:19 move second child to first child (float)
+0:19 'x' (float)
+0:19 direct index (float)
+0:19 y: direct index for structure (5-element array of float)
+0:19 'str' (structure)
+0:19 0 (const int)
+0:19 4 (const int)
+0:20 Pre-Increment (float)
+0:20 'x' (float)
+0:21 Pre-Decrement (float)
+0:21 'x' (float)
+0:22 Post-Increment (float)
+0:22 'x' (float)
+0:23 Post-Decrement (float)
+0:23 'x' (float)
+0:27 Sequence
+0:27 move second child to first child (float)
+0:27 'y' (float)
+0:27 component-wise multiply (float)
+0:27 'x' (float)
+0:27 Pre-Increment (float)
+0:27 'x' (float)
+0:28 Sequence
+0:28 move second child to first child (float)
+0:28 'z' (float)
+0:28 component-wise multiply (float)
+0:28 'y' (float)
+0:28 Post-Decrement (float)
+0:28 'x' (float)
+0:33 Sequence
+0:33 move second child to first child (4-component vector of float)
+0:33 'v' (4-component vector of float)
+0:33 1.000000
+0:33 2.000000
+0:33 3.000000
+0:33 4.000000
+0:34 move second child to first child (float)
+0:34 direct index (float)
+0:34 'v' (4-component vector of float)
+0:34 1 (const int)
+0:34 Post-Decrement (float)
+0:34 direct index (float)
+0:34 'v' (4-component vector of float)
+0:34 2 (const int)
+0:35 move second child to first child (float)
+0:35 direct index (float)
+0:35 'v' (4-component vector of float)
+0:35 0 (const int)
+0:35 Pre-Decrement (float)
+0:35 direct index (float)
+0:35 'v' (4-component vector of float)
+0:35 3 (const int)
+0:37 move second child to first child (4-component vector of float)
+0:37 'gl_FragColor' (fragColor 4-component vector of float)
+0:37 vector-scale (4-component vector of float)
+0:37 'z' (float)
+0:37 'v' (4-component vector of float)
+
diff --git a/Test/baseResults/sample.frag.out b/Test/baseResults/sample.frag.out
new file mode 100644
index 0000000..0b5f302
--- /dev/null
+++ b/Test/baseResults/sample.frag.out
@@ -0,0 +1,12 @@
+0:? Sequence
+0:38 Function Definition: main( (void)
+0:38 Function Parameters:
+0:40 Sequence
+0:40 move second child to first child (4-component vector of float)
+0:40 'gl_FragColor' (fragColor 4-component vector of float)
+0:40 Construct vec4 (4-component vector of float)
+0:40 'color' (smooth in 3-component vector of float)
+0:40 1.000000
+0:? Linker Objects
+0:? 'color' (smooth in 3-component vector of float)
+
diff --git a/Test/baseResults/sample.vert.out b/Test/baseResults/sample.vert.out
new file mode 100644
index 0000000..34628e3
--- /dev/null
+++ b/Test/baseResults/sample.vert.out
@@ -0,0 +1,17 @@
+0:? Sequence
+0:38 Function Definition: main( (void)
+0:38 Function Parameters:
+0:40 Sequence
+0:40 move second child to first child (3-component vector of float)
+0:40 'color' (smooth out 3-component vector of float)
+0:40 1.000000
+0:40 1.000000
+0:40 1.000000
+0:42 move second child to first child (4-component vector of float)
+0:42 'gl_Position' (gl_Position 4-component vector of float)
+0:42 matrix-times-vector (4-component vector of float)
+0:42 'gl_ModelViewProjectionMatrix' (uniform 4X4 matrix of float)
+0:42 'gl_Vertex' (in 4-component vector of float)
+0:? Linker Objects
+0:? 'color' (smooth out 3-component vector of float)
+
diff --git a/Test/baseResults/simpleFunctionCall.frag.out b/Test/baseResults/simpleFunctionCall.frag.out
new file mode 100644
index 0000000..fa0bee7
--- /dev/null
+++ b/Test/baseResults/simpleFunctionCall.frag.out
@@ -0,0 +1,18 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:7 Function Definition: foo( (4-component vector of float)
+0:7 Function Parameters:
+0:9 Sequence
+0:9 Branch: Return with expression
+0:9 'BaseColor' (smooth in 4-component vector of float)
+0:12 Function Definition: main( (void)
+0:12 Function Parameters:
+0:14 Sequence
+0:14 move second child to first child (4-component vector of float)
+0:14 'gl_FragColor' (fragColor 4-component vector of float)
+0:14 Function Call: foo( (4-component vector of float)
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'd' (uniform float)
+
diff --git a/Test/baseResults/solidworks.frag.out b/Test/baseResults/solidworks.frag.out
new file mode 100644
index 0000000..624479c
--- /dev/null
+++ b/Test/baseResults/solidworks.frag.out
@@ -0,0 +1,2947 @@
+0:? Sequence
+0:210 Function Definition: saturate(vf4; (4-component vector of float)
+0:210 Function Parameters:
+0:210 'value' (in 4-component vector of float)
+0:212 Sequence
+0:212 Branch: Return with expression
+0:212 clamp (4-component vector of float)
+0:212 'value' (in 4-component vector of float)
+0:212 0.000000
+0:212 1.000000
+0:214 Function Definition: saturate(vf3; (3-component vector of float)
+0:214 Function Parameters:
+0:214 'value' (in 3-component vector of float)
+0:216 Sequence
+0:216 Branch: Return with expression
+0:216 clamp (3-component vector of float)
+0:216 'value' (in 3-component vector of float)
+0:216 0.000000
+0:216 1.000000
+0:218 Function Definition: saturate(vf2; (2-component vector of float)
+0:218 Function Parameters:
+0:218 'value' (in 2-component vector of float)
+0:220 Sequence
+0:220 Branch: Return with expression
+0:220 clamp (2-component vector of float)
+0:220 'value' (in 2-component vector of float)
+0:220 0.000000
+0:220 1.000000
+0:222 Function Definition: saturate(f1; (float)
+0:222 Function Parameters:
+0:222 'value' (in float)
+0:224 Sequence
+0:224 Branch: Return with expression
+0:224 clamp (float)
+0:224 'value' (in float)
+0:224 0.000000
+0:224 1.000000
+0:227 Function Definition: SphereMapCoord(vf3; (2-component vector of float)
+0:227 Function Parameters:
+0:227 'envcoord' (in 3-component vector of float)
+0:229 Sequence
+0:229 Sequence
+0:229 move second child to first child (3-component vector of float)
+0:229 'd' (3-component vector of float)
+0:229 normalize (3-component vector of float)
+0:229 'envcoord' (in 3-component vector of float)
+0:230 Branch: Return with expression
+0:230 Construct vec2 (2-component vector of float)
+0:230 subtract (float)
+0:230 component-wise multiply (float)
+0:230 component-wise multiply (float)
+0:230 arc tangent (float)
+0:230 direct index (float)
+0:230 'd' (3-component vector of float)
+0:230 2 (const int)
+0:230 direct index (float)
+0:230 'd' (3-component vector of float)
+0:230 0 (const int)
+0:230 0.318309
+0:230 0.500000
+0:230 0.250000
+0:230 add (float)
+0:230 component-wise multiply (float)
+0:230 arc sine (float)
+0:230 direct index (float)
+0:230 'd' (3-component vector of float)
+0:230 1 (const int)
+0:230 0.318309
+0:230 0.500000
+0:233 Function Definition: Flip(vf2;b1; (2-component vector of float)
+0:233 Function Parameters:
+0:233 'coord' (in 2-component vector of float)
+0:233 'envmapFlip' (const (read only) bool)
+0:235 Sequence
+0:235 Test condition and select (void)
+0:235 Condition
+0:235 'envmapFlip' (const (read only) bool)
+0:235 true case
+0:235 Branch: Return with expression
+0:235 Construct vec2 (2-component vector of float)
+0:235 direct index (float)
+0:235 'coord' (in 2-component vector of float)
+0:235 0 (const int)
+0:235 subtract (float)
+0:235 1.000000
+0:235 direct index (float)
+0:235 'coord' (in 2-component vector of float)
+0:235 1 (const int)
+0:235 false case
+0:236 Branch: Return with expression
+0:236 'coord' (in 2-component vector of float)
+0:239 Function Definition: Affine(vf4; (3-component vector of float)
+0:239 Function Parameters:
+0:239 'v' (in 4-component vector of float)
+0:241 Sequence
+0:241 Branch: Return with expression
+0:241 vector-scale (3-component vector of float)
+0:241 vector swizzle (3-component vector of float)
+0:241 'v' (in 4-component vector of float)
+0:241 Sequence
+0:241 0 (const int)
+0:241 1 (const int)
+0:241 2 (const int)
+0:241 divide (float)
+0:241 1.000000
+0:241 direct index (float)
+0:241 'v' (in 4-component vector of float)
+0:241 3 (const int)
+0:246 Function Definition: myExp(f1; (float)
+0:246 Function Parameters:
+0:246 'x' (in float)
+0:246 Sequence
+0:246 Branch: Return with expression
+0:246 pow (float)
+0:246 2.718282
+0:246 'x' (in float)
+0:247 Function Definition: myLog(f1; (float)
+0:247 Function Parameters:
+0:247 'x' (in float)
+0:247 Sequence
+0:247 Branch: Return with expression
+0:247 log (float)
+0:247 'x' (in float)
+0:249 Function Definition: myExpBase(f1;f1; (float)
+0:249 Function Parameters:
+0:249 'x' (in float)
+0:249 'base' (in float)
+0:249 Sequence
+0:249 Branch: Return with expression
+0:249 pow (float)
+0:249 'base' (in float)
+0:249 'x' (in float)
+0:250 Function Definition: myLogBase(f1;f1; (float)
+0:250 Function Parameters:
+0:250 'x' (in float)
+0:250 'base' (in float)
+0:250 Sequence
+0:250 Branch: Return with expression
+0:250 divide (float)
+0:250 log (float)
+0:250 'x' (in float)
+0:250 log (float)
+0:250 'base' (in float)
+0:255 Function Definition: GetLuminance(vf3; (float)
+0:255 Function Parameters:
+0:255 'color' (in 3-component vector of float)
+0:257 Sequence
+0:257 Branch: Return with expression
+0:257 max (float)
+0:257 dot-product (float)
+0:257 0.300000
+0:257 0.590000
+0:257 0.110000
+0:257 'color' (in 3-component vector of float)
+0:257 0.000000
+0:261 Function Definition: nonZeroSign(f1; (float)
+0:261 Function Parameters:
+0:261 'x' (in float)
+0:263 Sequence
+0:263 Branch: Return with expression
+0:263 Test condition and select (const float)
+0:263 Condition
+0:263 Compare Less Than (bool)
+0:263 'x' (in float)
+0:263 0.000000
+0:263 true case
+0:263 -1.000000
+0:263 false case
+0:263 1.000000
+0:266 Function Definition: ApplyMat2D(vf2;mf44; (2-component vector of float)
+0:266 Function Parameters:
+0:266 'v' (in 2-component vector of float)
+0:266 'm' (in 4X4 matrix of float)
+0:268 Sequence
+0:268 Branch: Return with expression
+0:268 vector swizzle (2-component vector of float)
+0:268 matrix-times-vector (4-component vector of float)
+0:268 'm' (in 4X4 matrix of float)
+0:268 Construct vec4 (4-component vector of float)
+0:268 'v' (in 2-component vector of float)
+0:268 0.000000
+0:268 1.000000
+0:268 Sequence
+0:268 0 (const int)
+0:268 1 (const int)
+0:272 Function Definition: saturateLight(vf4; (4-component vector of float)
+0:272 Function Parameters:
+0:272 'value' (in 4-component vector of float)
+0:275 Sequence
+0:275 Branch: Return with expression
+0:275 Function Call: saturate(vf4; (4-component vector of float)
+0:275 'value' (in 4-component vector of float)
+0:277 Function Definition: saturateLight(vf3; (3-component vector of float)
+0:277 Function Parameters:
+0:277 'value' (in 3-component vector of float)
+0:280 Sequence
+0:280 Branch: Return with expression
+0:280 Function Call: saturate(vf3; (3-component vector of float)
+0:280 'value' (in 3-component vector of float)
+0:282 Function Definition: saturateLight(vf2; (2-component vector of float)
+0:282 Function Parameters:
+0:282 'value' (in 2-component vector of float)
+0:285 Sequence
+0:285 Branch: Return with expression
+0:285 Function Call: saturate(vf2; (2-component vector of float)
+0:285 'value' (in 2-component vector of float)
+0:287 Function Definition: saturateLight(f1; (float)
+0:287 Function Parameters:
+0:287 'value' (in float)
+0:290 Sequence
+0:290 Branch: Return with expression
+0:290 Function Call: saturate(f1; (float)
+0:290 'value' (in float)
+0:293 Function Definition: SetSwizzleInW(vf3;vf4;vf4;vf4; (void)
+0:293 Function Parameters:
+0:293 'value' (in 3-component vector of float)
+0:293 'vx' (inout 4-component vector of float)
+0:293 'vy' (inout 4-component vector of float)
+0:293 'vz' (inout 4-component vector of float)
+0:295 Sequence
+0:295 move second child to first child (float)
+0:295 direct index (float)
+0:295 'vx' (inout 4-component vector of float)
+0:295 3 (const int)
+0:295 direct index (float)
+0:295 'value' (in 3-component vector of float)
+0:295 0 (const int)
+0:296 move second child to first child (float)
+0:296 direct index (float)
+0:296 'vy' (inout 4-component vector of float)
+0:296 3 (const int)
+0:296 direct index (float)
+0:296 'value' (in 3-component vector of float)
+0:296 1 (const int)
+0:297 move second child to first child (float)
+0:297 direct index (float)
+0:297 'vz' (inout 4-component vector of float)
+0:297 3 (const int)
+0:297 direct index (float)
+0:297 'value' (in 3-component vector of float)
+0:297 2 (const int)
+0:299 Function Definition: GetSwizzleInW(vf4;vf4;vf4; (3-component vector of float)
+0:299 Function Parameters:
+0:299 'vx' (in 4-component vector of float)
+0:299 'vy' (in 4-component vector of float)
+0:299 'vz' (in 4-component vector of float)
+0:301 Sequence
+0:301 Branch: Return with expression
+0:301 Construct vec3 (3-component vector of float)
+0:301 direct index (float)
+0:301 'vx' (in 4-component vector of float)
+0:301 3 (const int)
+0:301 direct index (float)
+0:301 'vy' (in 4-component vector of float)
+0:301 3 (const int)
+0:301 direct index (float)
+0:301 'vz' (in 4-component vector of float)
+0:301 3 (const int)
+0:304 Function Definition: Max3(vf3; (float)
+0:304 Function Parameters:
+0:304 'lightSpec' (in 3-component vector of float)
+0:306 Sequence
+0:306 Sequence
+0:306 move second child to first child (float)
+0:306 'maxSpec' (float)
+0:306 Test condition and select (float)
+0:306 Condition
+0:306 Compare Greater Than (bool)
+0:306 direct index (float)
+0:306 'lightSpec' (in 3-component vector of float)
+0:306 0 (const int)
+0:306 direct index (float)
+0:306 'lightSpec' (in 3-component vector of float)
+0:306 1 (const int)
+0:306 true case
+0:306 direct index (float)
+0:306 'lightSpec' (in 3-component vector of float)
+0:306 0 (const int)
+0:306 false case
+0:306 direct index (float)
+0:306 'lightSpec' (in 3-component vector of float)
+0:306 1 (const int)
+0:307 Test condition and select (void)
+0:307 Condition
+0:307 Compare Greater Than (bool)
+0:307 direct index (float)
+0:307 'lightSpec' (in 3-component vector of float)
+0:307 2 (const int)
+0:307 'maxSpec' (float)
+0:307 true case
+0:307 move second child to first child (float)
+0:307 'maxSpec' (float)
+0:307 direct index (float)
+0:307 'lightSpec' (in 3-component vector of float)
+0:307 2 (const int)
+0:308 Branch: Return with expression
+0:308 'maxSpec' (float)
+0:311 Function Definition: pGetProjectedPosition(vf4;mf44; (4-component vector of float)
+0:311 Function Parameters:
+0:311 'oPosition' (in 4-component vector of float)
+0:311 'o2pMatrix' (in 4X4 matrix of float)
+0:313 Sequence
+0:313 Branch: Return with expression
+0:313 matrix-times-vector (4-component vector of float)
+0:313 'o2pMatrix' (in 4X4 matrix of float)
+0:313 'oPosition' (in 4-component vector of float)
+0:316 Function Definition: eGetNormal(vf3;mf33;b1; (3-component vector of float)
+0:316 Function Parameters:
+0:316 'oNormal' (in 3-component vector of float)
+0:316 'o2eMatrix' (in 3X3 matrix of float)
+0:316 'bDoubleSided' (in bool)
+0:318 Sequence
+0:318 Sequence
+0:318 move second child to first child (3-component vector of float)
+0:318 'normal' (3-component vector of float)
+0:318 normalize (3-component vector of float)
+0:318 matrix-times-vector (3-component vector of float)
+0:318 'o2eMatrix' (in 3X3 matrix of float)
+0:318 'oNormal' (in 3-component vector of float)
+0:320 Test condition and select (void)
+0:320 Condition
+0:320 logical-and (bool)
+0:320 Compare Less Than (bool)
+0:320 direct index (float)
+0:320 'normal' (3-component vector of float)
+0:320 2 (const int)
+0:320 0.000000
+0:320 'bDoubleSided' (in bool)
+0:320 true case
+0:322 Sequence
+0:322 move second child to first child (3-component vector of float)
+0:322 'normal' (3-component vector of float)
+0:322 Negate value (3-component vector of float)
+0:322 'normal' (3-component vector of float)
+0:324 Branch: Return with expression
+0:324 'normal' (3-component vector of float)
+0:326 Function Definition: t2eGetMatrixTBN(mf33;vf3;vf3;b1; (3X3 matrix of float)
+0:326 Function Parameters:
+0:326 'o2eMatrix' (in 3X3 matrix of float)
+0:326 'oNormal' (in 3-component vector of float)
+0:326 'oTangent' (in 3-component vector of float)
+0:326 'bDoubleSided' (in bool)
+0:? Sequence
+0:331 move second child to first child (3-component vector of float)
+0:331 direct index (3-component vector of float)
+0:331 'res' (3X3 matrix of float)
+0:331 2 (const int)
+0:331 normalize (3-component vector of float)
+0:331 matrix-times-vector (3-component vector of float)
+0:331 'o2eMatrix' (in 3X3 matrix of float)
+0:331 'oNormal' (in 3-component vector of float)
+0:332 move second child to first child (3-component vector of float)
+0:332 direct index (3-component vector of float)
+0:332 'res' (3X3 matrix of float)
+0:332 0 (const int)
+0:332 normalize (3-component vector of float)
+0:332 matrix-times-vector (3-component vector of float)
+0:332 'o2eMatrix' (in 3X3 matrix of float)
+0:332 'oTangent' (in 3-component vector of float)
+0:333 move second child to first child (3-component vector of float)
+0:333 direct index (3-component vector of float)
+0:333 'res' (3X3 matrix of float)
+0:333 1 (const int)
+0:333 normalize (3-component vector of float)
+0:333 cross-product (3-component vector of float)
+0:333 direct index (3-component vector of float)
+0:333 'res' (3X3 matrix of float)
+0:333 0 (const int)
+0:333 direct index (3-component vector of float)
+0:333 'res' (3X3 matrix of float)
+0:333 2 (const int)
+0:334 move second child to first child (3-component vector of float)
+0:334 direct index (3-component vector of float)
+0:334 'res' (3X3 matrix of float)
+0:334 0 (const int)
+0:334 normalize (3-component vector of float)
+0:334 cross-product (3-component vector of float)
+0:334 direct index (3-component vector of float)
+0:334 'res' (3X3 matrix of float)
+0:334 2 (const int)
+0:334 direct index (3-component vector of float)
+0:334 'res' (3X3 matrix of float)
+0:334 1 (const int)
+0:336 Test condition and select (void)
+0:336 Condition
+0:336 logical-and (bool)
+0:336 Compare Less Than (bool)
+0:336 direct index (float)
+0:336 direct index (3-component vector of float)
+0:336 'res' (3X3 matrix of float)
+0:336 2 (const int)
+0:336 2 (const int)
+0:336 0.000000
+0:336 'bDoubleSided' (in bool)
+0:336 true case
+0:338 Sequence
+0:338 move second child to first child (3-component vector of float)
+0:338 direct index (3-component vector of float)
+0:338 'res' (3X3 matrix of float)
+0:338 2 (const int)
+0:338 Negate value (3-component vector of float)
+0:338 direct index (3-component vector of float)
+0:338 'res' (3X3 matrix of float)
+0:338 2 (const int)
+0:340 Branch: Return with expression
+0:340 'res' (3X3 matrix of float)
+0:342 Function Definition: CreateMatrixTBN(vf3;vf3;b1; (3X3 matrix of float)
+0:342 Function Parameters:
+0:342 'eTangent' (in 3-component vector of float)
+0:342 'eNormal' (in 3-component vector of float)
+0:342 'bDoubleSided' (in bool)
+0:? Sequence
+0:347 move second child to first child (3-component vector of float)
+0:347 direct index (3-component vector of float)
+0:347 'res' (3X3 matrix of float)
+0:347 2 (const int)
+0:347 'eNormal' (in 3-component vector of float)
+0:348 move second child to first child (3-component vector of float)
+0:348 direct index (3-component vector of float)
+0:348 'res' (3X3 matrix of float)
+0:348 0 (const int)
+0:348 'eTangent' (in 3-component vector of float)
+0:349 move second child to first child (3-component vector of float)
+0:349 direct index (3-component vector of float)
+0:349 'res' (3X3 matrix of float)
+0:349 1 (const int)
+0:349 Negate value (3-component vector of float)
+0:349 normalize (3-component vector of float)
+0:349 cross-product (3-component vector of float)
+0:349 direct index (3-component vector of float)
+0:349 'res' (3X3 matrix of float)
+0:349 2 (const int)
+0:349 direct index (3-component vector of float)
+0:349 'res' (3X3 matrix of float)
+0:349 0 (const int)
+0:351 Test condition and select (void)
+0:351 Condition
+0:351 logical-and (bool)
+0:351 Compare Less Than (bool)
+0:351 direct index (float)
+0:351 direct index (3-component vector of float)
+0:351 'res' (3X3 matrix of float)
+0:351 2 (const int)
+0:351 2 (const int)
+0:351 0.000000
+0:351 'bDoubleSided' (in bool)
+0:351 true case
+0:353 Sequence
+0:353 move second child to first child (3-component vector of float)
+0:353 direct index (3-component vector of float)
+0:353 'res' (3X3 matrix of float)
+0:353 2 (const int)
+0:353 Negate value (3-component vector of float)
+0:353 direct index (3-component vector of float)
+0:353 'res' (3X3 matrix of float)
+0:353 2 (const int)
+0:355 Branch: Return with expression
+0:355 'res' (3X3 matrix of float)
+0:357 Function Definition: tGetBumpNormal(s21;vf2;b1; (3-component vector of float)
+0:357 Function Parameters:
+0:357 'normalMap' (in sampler2D)
+0:357 'commonCoord' (in 2-component vector of float)
+0:357 'bNormalHack' (in bool)
+0:359 Sequence
+0:359 Sequence
+0:359 move second child to first child (3-component vector of float)
+0:359 'tBumpNormal' (3-component vector of float)
+0:359 subtract (3-component vector of float)
+0:359 vector-scale (3-component vector of float)
+0:359 2.000000
+0:359 Construct vec3 (3-component vector of float)
+0:359 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:359 'normalMap' (in sampler2D)
+0:359 'commonCoord' (in 2-component vector of float)
+0:359 1.000000
+0:359 1.000000
+0:359 1.000000
+0:360 Test condition and select (void)
+0:360 Condition
+0:360 'bNormalHack' (in bool)
+0:360 true case
+0:362 Sequence
+0:362 vector scale second child into first child (3-component vector of float)
+0:362 'tBumpNormal' (3-component vector of float)
+0:362 0.800000
+0:364 Branch: Return with expression
+0:364 normalize (3-component vector of float)
+0:364 'tBumpNormal' (3-component vector of float)
+0:366 Function Definition: tGetBumpMapNormal(s21;vf2;b1;f1; (3-component vector of float)
+0:366 Function Parameters:
+0:366 'normalMap' (in sampler2D)
+0:366 'commonCoord' (in 2-component vector of float)
+0:366 'bNormalHack' (in bool)
+0:366 'scale' (in float)
+0:368 Sequence
+0:368 Sequence
+0:368 move second child to first child (float)
+0:368 'up' (float)
+0:368 direct index (float)
+0:368 Construct vec3 (3-component vector of float)
+0:368 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:368 'normalMap' (in sampler2D)
+0:368 Construct vec2 (2-component vector of float)
+0:368 direct index (float)
+0:368 'commonCoord' (in 2-component vector of float)
+0:368 0 (const int)
+0:368 add (float)
+0:368 direct index (float)
+0:368 'commonCoord' (in 2-component vector of float)
+0:368 1 (const int)
+0:368 0.010000
+0:368 0 (const int)
+0:369 Sequence
+0:369 move second child to first child (float)
+0:369 'down' (float)
+0:369 direct index (float)
+0:369 Construct vec3 (3-component vector of float)
+0:369 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:369 'normalMap' (in sampler2D)
+0:369 Construct vec2 (2-component vector of float)
+0:369 direct index (float)
+0:369 'commonCoord' (in 2-component vector of float)
+0:369 0 (const int)
+0:369 subtract (float)
+0:369 direct index (float)
+0:369 'commonCoord' (in 2-component vector of float)
+0:369 1 (const int)
+0:369 0.010000
+0:369 0 (const int)
+0:370 Sequence
+0:370 move second child to first child (float)
+0:370 'left' (float)
+0:370 direct index (float)
+0:370 Construct vec3 (3-component vector of float)
+0:370 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:370 'normalMap' (in sampler2D)
+0:370 Construct vec2 (2-component vector of float)
+0:370 subtract (float)
+0:370 direct index (float)
+0:370 'commonCoord' (in 2-component vector of float)
+0:370 0 (const int)
+0:370 0.010000
+0:370 direct index (float)
+0:370 'commonCoord' (in 2-component vector of float)
+0:370 1 (const int)
+0:370 0 (const int)
+0:371 Sequence
+0:371 move second child to first child (float)
+0:371 'right' (float)
+0:371 direct index (float)
+0:371 Construct vec3 (3-component vector of float)
+0:371 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:371 'normalMap' (in sampler2D)
+0:371 Construct vec2 (2-component vector of float)
+0:371 add (float)
+0:371 direct index (float)
+0:371 'commonCoord' (in 2-component vector of float)
+0:371 0 (const int)
+0:371 0.010000
+0:371 direct index (float)
+0:371 'commonCoord' (in 2-component vector of float)
+0:371 1 (const int)
+0:371 0 (const int)
+0:372 Sequence
+0:372 move second child to first child (3-component vector of float)
+0:372 'tBumpNormal' (3-component vector of float)
+0:372 Construct vec3 (3-component vector of float)
+0:372 subtract (float)
+0:372 'right' (float)
+0:372 'left' (float)
+0:372 subtract (float)
+0:372 'down' (float)
+0:372 'up' (float)
+0:372 'scale' (in float)
+0:373 Branch: Return with expression
+0:373 normalize (3-component vector of float)
+0:373 'tBumpNormal' (3-component vector of float)
+0:381 Function Definition: GetEyeInfo(vf4;mf44; (structure)
+0:381 Function Parameters:
+0:381 'oPosition' (in 4-component vector of float)
+0:381 'o2eMatrix' (in 4X4 matrix of float)
+0:? Sequence
+0:384 move second child to first child (4-component vector of float)
+0:384 ePosition: direct index for structure (4-component vector of float)
+0:384 'res' (structure)
+0:384 0 (const int)
+0:384 matrix-times-vector (4-component vector of float)
+0:384 'o2eMatrix' (in 4X4 matrix of float)
+0:384 'oPosition' (in 4-component vector of float)
+0:385 move second child to first child (3-component vector of float)
+0:385 eEyeDirection: direct index for structure (3-component vector of float)
+0:385 'res' (structure)
+0:385 1 (const int)
+0:385 normalize (3-component vector of float)
+0:385 vector swizzle (3-component vector of float)
+0:385 ePosition: direct index for structure (4-component vector of float)
+0:385 'res' (structure)
+0:385 0 (const int)
+0:385 Sequence
+0:385 0 (const int)
+0:385 1 (const int)
+0:385 2 (const int)
+0:387 Branch: Return with expression
+0:387 'res' (structure)
+0:390 Function Definition: eGetReflection(vf3;vf3;vf3; (3-component vector of float)
+0:390 Function Parameters:
+0:390 'eNormal' (in 3-component vector of float)
+0:390 'eEnvEyePosition' (in 3-component vector of float)
+0:390 'eEyeCoordPosition' (in 3-component vector of float)
+0:392 Sequence
+0:392 Sequence
+0:392 move second child to first child (3-component vector of float)
+0:392 'viewVec' (3-component vector of float)
+0:392 subtract (3-component vector of float)
+0:392 'eEyeCoordPosition' (in 3-component vector of float)
+0:392 'eEnvEyePosition' (in 3-component vector of float)
+0:393 Branch: Return with expression
+0:393 subtract (3-component vector of float)
+0:393 'viewVec' (3-component vector of float)
+0:393 vector-scale (3-component vector of float)
+0:393 vector-scale (3-component vector of float)
+0:393 2.000000
+0:393 'eNormal' (in 3-component vector of float)
+0:393 dot-product (float)
+0:393 'eNormal' (in 3-component vector of float)
+0:393 'viewVec' (3-component vector of float)
+0:397 Function Definition: oGetAutomaticTangent(vf3;mf44; (3-component vector of float)
+0:397 Function Parameters:
+0:397 'nNormal' (in 3-component vector of float)
+0:397 'n2oMatrix' (in 4X4 matrix of float)
+0:400 Sequence
+0:400 Sequence
+0:400 move second child to first child (3-component vector of float)
+0:400 'nAbsnormal' (3-component vector of float)
+0:400 Absolute value (3-component vector of float)
+0:400 'nNormal' (in 3-component vector of float)
+0:403 Sequence
+0:403 move second child to first child (3-component vector of float)
+0:403 'teststep' (3-component vector of float)
+0:403 step (3-component vector of float)
+0:403 0.000000
+0:403 0.000000
+0:403 0.000000
+0:403 subtract (3-component vector of float)
+0:403 'nAbsnormal' (3-component vector of float)
+0:403 vector swizzle (3-component vector of float)
+0:403 'nAbsnormal' (3-component vector of float)
+0:403 Sequence
+0:403 1 (const int)
+0:403 2 (const int)
+0:403 0 (const int)
+0:404 Sequence
+0:404 move second child to first child (3-component vector of float)
+0:404 'teststep2' (3-component vector of float)
+0:404 subtract (3-component vector of float)
+0:404 1.000000
+0:404 1.000000
+0:404 1.000000
+0:404 vector swizzle (3-component vector of float)
+0:404 'teststep' (3-component vector of float)
+0:404 Sequence
+0:404 2 (const int)
+0:404 0 (const int)
+0:404 1 (const int)
+0:405 Sequence
+0:405 move second child to first child (3-component vector of float)
+0:405 'cmp' (3-component vector of float)
+0:405 component-wise multiply (3-component vector of float)
+0:405 'teststep' (3-component vector of float)
+0:405 'teststep2' (3-component vector of float)
+0:408 Test condition and select (void)
+0:408 Condition
+0:408 Compare Equal (bool)
+0:408 direct index (float)
+0:408 'cmp' (3-component vector of float)
+0:408 2 (const int)
+0:408 1.000000
+0:408 true case
+0:410 Sequence
+0:410 Branch: Return with expression
+0:410 1.000000
+0:410 0.000000
+0:410 0.000000
+0:412 Sequence
+0:412 move second child to first child (float)
+0:412 'nSign' (float)
+0:412 dot-product (float)
+0:412 Sign (3-component vector of float)
+0:412 'nNormal' (in 3-component vector of float)
+0:412 'cmp' (3-component vector of float)
+0:413 Test condition and select (void)
+0:413 Condition
+0:413 Compare Equal (bool)
+0:413 direct index (float)
+0:413 'cmp' (3-component vector of float)
+0:413 1 (const int)
+0:413 1.000000
+0:413 true case
+0:414 Branch: Return with expression
+0:414 Construct vec3 (3-component vector of float)
+0:414 Negate value (float)
+0:414 'nSign' (float)
+0:414 0.000000
+0:414 0.000000
+0:413 false case
+0:416 Branch: Return with expression
+0:416 Construct vec3 (3-component vector of float)
+0:416 0.000000
+0:416 'nSign' (float)
+0:416 0.000000
+0:418 Function Definition: xGetAutomaticTexCoords(vf3;vf3;mf44; (2-component vector of float)
+0:418 Function Parameters:
+0:418 'nPos' (in 3-component vector of float)
+0:418 'nNormal' (in 3-component vector of float)
+0:418 'n2xMatrix' (in 4X4 matrix of float)
+0:421 Sequence
+0:421 Sequence
+0:421 move second child to first child (3-component vector of float)
+0:421 'nAbsnormal' (3-component vector of float)
+0:421 Absolute value (3-component vector of float)
+0:421 'nNormal' (in 3-component vector of float)
+0:424 Sequence
+0:424 move second child to first child (3-component vector of float)
+0:424 'teststep' (3-component vector of float)
+0:424 step (3-component vector of float)
+0:424 0.000000
+0:424 0.000000
+0:424 0.000000
+0:424 subtract (3-component vector of float)
+0:424 'nAbsnormal' (3-component vector of float)
+0:424 vector swizzle (3-component vector of float)
+0:424 'nAbsnormal' (3-component vector of float)
+0:424 Sequence
+0:424 1 (const int)
+0:424 2 (const int)
+0:424 0 (const int)
+0:425 Sequence
+0:425 move second child to first child (3-component vector of float)
+0:425 'teststep2' (3-component vector of float)
+0:425 subtract (3-component vector of float)
+0:425 1.000000
+0:425 1.000000
+0:425 1.000000
+0:425 vector swizzle (3-component vector of float)
+0:425 'teststep' (3-component vector of float)
+0:425 Sequence
+0:425 2 (const int)
+0:425 0 (const int)
+0:425 1 (const int)
+0:426 Sequence
+0:426 move second child to first child (3-component vector of float)
+0:426 'cmp' (3-component vector of float)
+0:426 component-wise multiply (3-component vector of float)
+0:426 'teststep' (3-component vector of float)
+0:426 'teststep2' (3-component vector of float)
+0:429 Sequence
+0:429 move second child to first child (3-component vector of float)
+0:429 'nNormalsign' (3-component vector of float)
+0:429 Sign (3-component vector of float)
+0:429 'nNormal' (in 3-component vector of float)
+0:432 multiply second child into first child (float)
+0:432 direct index (float)
+0:432 'nNormalsign' (3-component vector of float)
+0:432 1 (const int)
+0:432 -1.000000
+0:433 multiply second child into first child (float)
+0:433 direct index (float)
+0:433 'cmp' (3-component vector of float)
+0:433 2 (const int)
+0:433 direct index (float)
+0:433 'nNormalsign' (3-component vector of float)
+0:433 2 (const int)
+0:434 Sequence
+0:434 move second child to first child (2-component vector of float)
+0:434 'nTexcoord' (2-component vector of float)
+0:434 Construct vec2 (2-component vector of float)
+0:434 dot-product (float)
+0:434 component-wise multiply (3-component vector of float)
+0:434 'nNormalsign' (3-component vector of float)
+0:434 vector swizzle (3-component vector of float)
+0:434 'nPos' (in 3-component vector of float)
+0:434 Sequence
+0:434 1 (const int)
+0:434 0 (const int)
+0:434 0 (const int)
+0:434 'cmp' (3-component vector of float)
+0:434 dot-product (float)
+0:434 vector swizzle (3-component vector of float)
+0:434 'nPos' (in 3-component vector of float)
+0:434 Sequence
+0:434 2 (const int)
+0:434 2 (const int)
+0:434 1 (const int)
+0:434 'cmp' (3-component vector of float)
+0:437 Branch: Return with expression
+0:437 Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)
+0:437 'nTexcoord' (2-component vector of float)
+0:437 'n2xMatrix' (in 4X4 matrix of float)
+0:440 Function Definition: oGetCylindricalTangent(vf3;mf44; (3-component vector of float)
+0:440 Function Parameters:
+0:440 'nPos' (in 3-component vector of float)
+0:440 'n2oMatrix' (in 4X4 matrix of float)
+0:443 Sequence
+0:443 Sequence
+0:443 move second child to first child (float)
+0:443 'l' (float)
+0:443 length (float)
+0:443 vector swizzle (2-component vector of float)
+0:443 'nPos' (in 3-component vector of float)
+0:443 Sequence
+0:443 0 (const int)
+0:443 2 (const int)
+0:444 Sequence
+0:444 move second child to first child (2-component vector of float)
+0:444 'nCylnormal' (2-component vector of float)
+0:444 divide (2-component vector of float)
+0:444 vector swizzle (2-component vector of float)
+0:444 'nPos' (in 3-component vector of float)
+0:444 Sequence
+0:444 0 (const int)
+0:444 2 (const int)
+0:444 add (float)
+0:444 'l' (float)
+0:444 0.001000
+0:446 Branch: Return with expression
+0:446 vector swizzle (3-component vector of float)
+0:446 matrix-times-vector (4-component vector of float)
+0:446 'n2oMatrix' (in 4X4 matrix of float)
+0:446 Construct vec4 (4-component vector of float)
+0:446 direct index (float)
+0:446 'nCylnormal' (2-component vector of float)
+0:446 1 (const int)
+0:446 0.000000
+0:446 Negate value (float)
+0:446 direct index (float)
+0:446 'nCylnormal' (2-component vector of float)
+0:446 0 (const int)
+0:446 0.000000
+0:446 Sequence
+0:446 0 (const int)
+0:446 1 (const int)
+0:446 2 (const int)
+0:448 Function Definition: xGetCylindricalTexCoords(vf3;mf44; (2-component vector of float)
+0:448 Function Parameters:
+0:448 'nPos' (in 3-component vector of float)
+0:448 'n2xMatrix' (in 4X4 matrix of float)
+0:450 Sequence
+0:450 Sequence
+0:450 move second child to first child (2-component vector of float)
+0:450 'nDir' (2-component vector of float)
+0:450 normalize (2-component vector of float)
+0:450 vector swizzle (2-component vector of float)
+0:450 'nPos' (in 3-component vector of float)
+0:450 Sequence
+0:450 0 (const int)
+0:450 2 (const int)
+0:451 Sequence
+0:451 move second child to first child (float)
+0:451 'angle' (float)
+0:451 component-wise multiply (float)
+0:451 arc cosine (float)
+0:451 Negate value (float)
+0:451 direct index (float)
+0:451 'nDir' (2-component vector of float)
+0:451 0 (const int)
+0:451 Function Call: nonZeroSign(f1; (float)
+0:451 direct index (float)
+0:451 'nDir' (2-component vector of float)
+0:451 1 (const int)
+0:452 Sequence
+0:452 move second child to first child (2-component vector of float)
+0:452 'nTexcoord' (2-component vector of float)
+0:452 Construct vec2 (2-component vector of float)
+0:452 component-wise multiply (float)
+0:452 component-wise multiply (float)
+0:452 0.159155
+0:452 add (float)
+0:452 3.141592
+0:452 'angle' (float)
+0:452 'faceWidth' (uniform float)
+0:452 direct index (float)
+0:452 'nPos' (in 3-component vector of float)
+0:452 1 (const int)
+0:453 Branch: Return with expression
+0:453 Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)
+0:453 'nTexcoord' (2-component vector of float)
+0:453 'n2xMatrix' (in 4X4 matrix of float)
+0:455 Function Definition: xGetSphericalTexCoords(vf3;mf44; (2-component vector of float)
+0:455 Function Parameters:
+0:455 'nDir' (in 3-component vector of float)
+0:455 'n2xMatrix' (in 4X4 matrix of float)
+0:457 Sequence
+0:457 move second child to first child (3-component vector of float)
+0:457 'nDir' (in 3-component vector of float)
+0:457 normalize (3-component vector of float)
+0:457 'nDir' (in 3-component vector of float)
+0:458 Sequence
+0:458 move second child to first child (2-component vector of float)
+0:458 'nTexcoord' (2-component vector of float)
+0:458 vector-scale (2-component vector of float)
+0:458 component-wise multiply (float)
+0:458 'faceWidth' (uniform float)
+0:458 0.318309
+0:458 Construct vec2 (2-component vector of float)
+0:458 subtract (float)
+0:458 1.570796
+0:458 component-wise multiply (float)
+0:458 arc tangent (float)
+0:458 direct index (float)
+0:458 'nDir' (in 3-component vector of float)
+0:458 2 (const int)
+0:458 Negate value (float)
+0:458 direct index (float)
+0:458 'nDir' (in 3-component vector of float)
+0:458 0 (const int)
+0:458 0.500000
+0:458 arc cosine (float)
+0:458 direct index (float)
+0:458 'nDir' (in 3-component vector of float)
+0:458 1 (const int)
+0:459 Branch: Return with expression
+0:459 Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)
+0:459 'nTexcoord' (2-component vector of float)
+0:459 'n2xMatrix' (in 4X4 matrix of float)
+0:462 Function Definition: oGetProjectedTangent(mf44; (3-component vector of float)
+0:462 Function Parameters:
+0:462 'n2oMatrix' (in 4X4 matrix of float)
+0:464 Sequence
+0:464 Branch: Return with expression
+0:464 normalize (3-component vector of float)
+0:464 vector swizzle (3-component vector of float)
+0:464 direct index (in 4-component vector of float)
+0:464 'n2oMatrix' (in 4X4 matrix of float)
+0:464 0 (const int)
+0:464 Sequence
+0:464 0 (const int)
+0:464 1 (const int)
+0:464 2 (const int)
+0:466 Function Definition: xGetPlanarTexCoords(vf4;mf44; (2-component vector of float)
+0:466 Function Parameters:
+0:466 'nPos' (in 4-component vector of float)
+0:466 'n2xMatrix' (in 4X4 matrix of float)
+0:468 Sequence
+0:468 Branch: Return with expression
+0:468 Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)
+0:468 vector swizzle (2-component vector of float)
+0:468 'nPos' (in 4-component vector of float)
+0:468 Sequence
+0:468 0 (const int)
+0:468 1 (const int)
+0:468 'n2xMatrix' (in 4X4 matrix of float)
+0:471 Function Definition: xGetSurfaceTexCoords(vf4;mf44; (2-component vector of float)
+0:471 Function Parameters:
+0:471 'nTexCoord' (in 4-component vector of float)
+0:471 'n2xMatrix' (in 4X4 matrix of float)
+0:473 Sequence
+0:473 Branch: Return with expression
+0:473 Function Call: ApplyMat2D(vf2;mf44; (2-component vector of float)
+0:473 vector swizzle (2-component vector of float)
+0:473 'nTexCoord' (in 4-component vector of float)
+0:473 Sequence
+0:473 0 (const int)
+0:473 1 (const int)
+0:473 'n2xMatrix' (in 4X4 matrix of float)
+0:477 Function Definition: GetCommonTexCoord(vf4;vf4;i1;mf44;mf44; (3-component vector of float)
+0:477 Function Parameters:
+0:477 'texCoord' (in 4-component vector of float)
+0:477 'vertex' (in 4-component vector of float)
+0:477 'iTextureCoordinates' (in int)
+0:477 'textureMatrix' (in 4X4 matrix of float)
+0:477 'o2nMatrix' (in 4X4 matrix of float)
+0:? Sequence
+0:481 Test condition and select (void)
+0:481 Condition
+0:481 Compare Equal (bool)
+0:481 'iTextureCoordinates' (in int)
+0:481 41 (const int)
+0:481 true case
+0:483 Sequence
+0:483 move second child to first child (2-component vector of float)
+0:483 vector swizzle (2-component vector of float)
+0:483 'texCoordOut' (3-component vector of float)
+0:483 Sequence
+0:483 0 (const int)
+0:483 1 (const int)
+0:483 vector swizzle (2-component vector of float)
+0:483 Function Call: xGetSurfaceTexCoords(vf4;mf44; (2-component vector of float)
+0:483 'texCoord' (in 4-component vector of float)
+0:483 'textureMatrix' (in 4X4 matrix of float)
+0:483 Sequence
+0:483 0 (const int)
+0:483 1 (const int)
+0:481 false case
+0:485 Test condition and select (void)
+0:485 Condition
+0:485 Compare Equal (bool)
+0:485 'iTextureCoordinates' (in int)
+0:485 73 (const int)
+0:485 true case
+0:487 Sequence
+0:487 move second child to first child (2-component vector of float)
+0:487 vector swizzle (2-component vector of float)
+0:487 'texCoordOut' (3-component vector of float)
+0:487 Sequence
+0:487 0 (const int)
+0:487 1 (const int)
+0:487 Function Call: xGetPlanarTexCoords(vf4;mf44; (2-component vector of float)
+0:487 matrix-times-vector (4-component vector of float)
+0:487 'o2nMatrix' (in 4X4 matrix of float)
+0:487 'vertex' (in 4-component vector of float)
+0:487 'textureMatrix' (in 4X4 matrix of float)
+0:485 false case
+0:490 Test condition and select (void)
+0:490 Condition
+0:490 Compare Equal (bool)
+0:490 'iTextureCoordinates' (in int)
+0:490 57 (const int)
+0:490 true case
+0:492 Sequence
+0:492 move second child to first child (3-component vector of float)
+0:492 'texCoordOut' (3-component vector of float)
+0:492 vector swizzle (3-component vector of float)
+0:492 matrix-times-vector (4-component vector of float)
+0:492 'o2nMatrix' (in 4X4 matrix of float)
+0:492 'vertex' (in 4-component vector of float)
+0:492 Sequence
+0:492 0 (const int)
+0:492 1 (const int)
+0:492 2 (const int)
+0:490 false case
+0:494 Test condition and select (void)
+0:494 Condition
+0:494 Compare Equal (bool)
+0:494 'iTextureCoordinates' (in int)
+0:494 89 (const int)
+0:494 true case
+0:496 Sequence
+0:496 move second child to first child (3-component vector of float)
+0:496 'texCoordOut' (3-component vector of float)
+0:496 vector swizzle (3-component vector of float)
+0:496 matrix-times-vector (4-component vector of float)
+0:496 'o2nMatrix' (in 4X4 matrix of float)
+0:496 'vertex' (in 4-component vector of float)
+0:496 Sequence
+0:496 0 (const int)
+0:496 1 (const int)
+0:496 2 (const int)
+0:494 false case
+0:498 Test condition and select (void)
+0:498 Condition
+0:498 Compare Equal (bool)
+0:498 'iTextureCoordinates' (in int)
+0:498 105 (const int)
+0:498 true case
+0:500 Sequence
+0:500 move second child to first child (3-component vector of float)
+0:500 'texCoordOut' (3-component vector of float)
+0:500 vector swizzle (3-component vector of float)
+0:500 matrix-times-vector (4-component vector of float)
+0:500 'o2nMatrix' (in 4X4 matrix of float)
+0:500 'vertex' (in 4-component vector of float)
+0:500 Sequence
+0:500 0 (const int)
+0:500 1 (const int)
+0:500 2 (const int)
+0:498 false case
+0:503 move second child to first child (3-component vector of float)
+0:503 'texCoordOut' (3-component vector of float)
+0:503 0.000000
+0:503 0.000000
+0:503 0.000000
+0:505 Branch: Return with expression
+0:505 'texCoordOut' (3-component vector of float)
+0:510 Function Definition: oGetTangent(vf3;vf3;i1;mf44; (3-component vector of float)
+0:510 Function Parameters:
+0:510 'pos' (in 3-component vector of float)
+0:510 'normal' (in 3-component vector of float)
+0:510 'iTextureCoordinates' (in int)
+0:510 'n2oMatrix' (in 4X4 matrix of float)
+0:? Sequence
+0:513 Test condition and select (void)
+0:513 Condition
+0:513 Compare Equal (bool)
+0:513 'iTextureCoordinates' (in int)
+0:513 57 (const int)
+0:513 true case
+0:515 Sequence
+0:515 move second child to first child (3-component vector of float)
+0:515 'tangentOut' (3-component vector of float)
+0:515 Function Call: oGetAutomaticTangent(vf3;mf44; (3-component vector of float)
+0:515 'normal' (in 3-component vector of float)
+0:515 'n2oMatrix' (in 4X4 matrix of float)
+0:513 false case
+0:517 Test condition and select (void)
+0:517 Condition
+0:517 Compare Equal (bool)
+0:517 'iTextureCoordinates' (in int)
+0:517 89 (const int)
+0:517 true case
+0:519 Sequence
+0:519 move second child to first child (3-component vector of float)
+0:519 'tangentOut' (3-component vector of float)
+0:519 Function Call: oGetCylindricalTangent(vf3;mf44; (3-component vector of float)
+0:519 'pos' (in 3-component vector of float)
+0:519 'n2oMatrix' (in 4X4 matrix of float)
+0:517 false case
+0:521 Test condition and select (void)
+0:521 Condition
+0:521 Compare Equal (bool)
+0:521 'iTextureCoordinates' (in int)
+0:521 105 (const int)
+0:521 true case
+0:523 Sequence
+0:523 move second child to first child (3-component vector of float)
+0:523 'tangentOut' (3-component vector of float)
+0:523 Function Call: oGetCylindricalTangent(vf3;mf44; (3-component vector of float)
+0:523 'pos' (in 3-component vector of float)
+0:523 'n2oMatrix' (in 4X4 matrix of float)
+0:521 false case
+0:525 Test condition and select (void)
+0:525 Condition
+0:525 Compare Equal (bool)
+0:525 'iTextureCoordinates' (in int)
+0:525 73 (const int)
+0:525 true case
+0:527 Sequence
+0:527 move second child to first child (3-component vector of float)
+0:527 'tangentOut' (3-component vector of float)
+0:527 Function Call: oGetProjectedTangent(mf44; (3-component vector of float)
+0:527 'n2oMatrix' (in 4X4 matrix of float)
+0:525 false case
+0:530 move second child to first child (3-component vector of float)
+0:530 'tangentOut' (3-component vector of float)
+0:530 0.000000
+0:530 0.000000
+0:530 0.000000
+0:532 Branch: Return with expression
+0:532 'tangentOut' (3-component vector of float)
+0:537 Function Definition: tGetTexCoords(vf3;vf3;i1;mf44; (2-component vector of float)
+0:537 Function Parameters:
+0:537 'texCoords' (in 3-component vector of float)
+0:537 'normal' (in 3-component vector of float)
+0:537 'iTextureCoordinates' (in int)
+0:537 'textureMatrix' (in 4X4 matrix of float)
+0:? Sequence
+0:541 Test condition and select (void)
+0:541 Condition
+0:541 logical-or (bool)
+0:541 Compare Equal (bool)
+0:541 'iTextureCoordinates' (in int)
+0:541 41 (const int)
+0:541 Compare Equal (bool)
+0:541 'iTextureCoordinates' (in int)
+0:541 73 (const int)
+0:541 true case
+0:543 Sequence
+0:543 move second child to first child (2-component vector of float)
+0:543 vector swizzle (2-component vector of float)
+0:543 'texCoordsOut' (2-component vector of float)
+0:543 Sequence
+0:543 0 (const int)
+0:543 1 (const int)
+0:543 vector swizzle (2-component vector of float)
+0:543 'texCoords' (in 3-component vector of float)
+0:543 Sequence
+0:543 0 (const int)
+0:543 1 (const int)
+0:541 false case
+0:546 Test condition and select (void)
+0:546 Condition
+0:546 Compare Equal (bool)
+0:546 'iTextureCoordinates' (in int)
+0:546 57 (const int)
+0:546 true case
+0:548 Sequence
+0:548 move second child to first child (2-component vector of float)
+0:548 'texCoordsOut' (2-component vector of float)
+0:548 Function Call: xGetAutomaticTexCoords(vf3;vf3;mf44; (2-component vector of float)
+0:548 'texCoords' (in 3-component vector of float)
+0:548 'normal' (in 3-component vector of float)
+0:548 'textureMatrix' (in 4X4 matrix of float)
+0:546 false case
+0:550 Test condition and select (void)
+0:550 Condition
+0:550 Compare Equal (bool)
+0:550 'iTextureCoordinates' (in int)
+0:550 89 (const int)
+0:550 true case
+0:552 Sequence
+0:552 move second child to first child (2-component vector of float)
+0:552 'texCoordsOut' (2-component vector of float)
+0:552 Function Call: xGetCylindricalTexCoords(vf3;mf44; (2-component vector of float)
+0:552 'texCoords' (in 3-component vector of float)
+0:552 'textureMatrix' (in 4X4 matrix of float)
+0:550 false case
+0:554 Test condition and select (void)
+0:554 Condition
+0:554 Compare Equal (bool)
+0:554 'iTextureCoordinates' (in int)
+0:554 105 (const int)
+0:554 true case
+0:556 Sequence
+0:556 move second child to first child (2-component vector of float)
+0:556 'texCoordsOut' (2-component vector of float)
+0:556 Function Call: xGetSphericalTexCoords(vf3;mf44; (2-component vector of float)
+0:556 'texCoords' (in 3-component vector of float)
+0:556 'textureMatrix' (in 4X4 matrix of float)
+0:559 Branch: Return with expression
+0:559 'texCoordsOut' (2-component vector of float)
+0:562 Function Definition: tGetDispTexCoords(s21;vf2;vf3;f1; (2-component vector of float)
+0:562 Function Parameters:
+0:562 'normalMap' (in sampler2D)
+0:562 'commonCoord' (in 2-component vector of float)
+0:562 'viewDir' (in 3-component vector of float)
+0:562 'parallaxOffset' (in float)
+0:565 Sequence
+0:565 Sequence
+0:565 move second child to first child (float)
+0:565 'height' (float)
+0:565 component-wise multiply (float)
+0:565 2.000000
+0:565 subtract (float)
+0:565 direct index (float)
+0:565 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:565 'normalMap' (in sampler2D)
+0:565 'commonCoord' (in 2-component vector of float)
+0:565 3 (const int)
+0:565 0.500000
+0:566 Sequence
+0:566 move second child to first child (2-component vector of float)
+0:566 'offset' (2-component vector of float)
+0:566 vector-scale (2-component vector of float)
+0:566 vector-scale (2-component vector of float)
+0:566 vector swizzle (2-component vector of float)
+0:566 normalize (3-component vector of float)
+0:566 vector swizzle (3-component vector of float)
+0:566 'viewDir' (in 3-component vector of float)
+0:566 Sequence
+0:566 0 (const int)
+0:566 1 (const int)
+0:566 2 (const int)
+0:566 Sequence
+0:566 0 (const int)
+0:566 1 (const int)
+0:566 'height' (float)
+0:566 'parallaxOffset' (in float)
+0:568 Branch: Return with expression
+0:568 add (2-component vector of float)
+0:568 'commonCoord' (in 2-component vector of float)
+0:568 'offset' (2-component vector of float)
+0:570 Function Definition: getCosmeticTexcoord(vf4;mf44; (2-component vector of float)
+0:570 Function Parameters:
+0:570 'ePos' (in 4-component vector of float)
+0:570 'e2cTransform' (in 4X4 matrix of float)
+0:572 Sequence
+0:572 Sequence
+0:572 move second child to first child (4-component vector of float)
+0:572 'cPos' (4-component vector of float)
+0:572 matrix-times-vector (4-component vector of float)
+0:572 'e2cTransform' (in 4X4 matrix of float)
+0:572 'ePos' (in 4-component vector of float)
+0:573 Branch: Return with expression
+0:573 divide (2-component vector of float)
+0:573 vector swizzle (2-component vector of float)
+0:573 'cPos' (4-component vector of float)
+0:573 Sequence
+0:573 0 (const int)
+0:573 1 (const int)
+0:573 direct index (float)
+0:573 'cPos' (4-component vector of float)
+0:573 3 (const int)
+0:576 Function Definition: getCosmeticAlpha(vf2;s21; (float)
+0:576 Function Parameters:
+0:576 'texcoord' (in 2-component vector of float)
+0:576 'alphaMap' (in sampler2D)
+0:578 Sequence
+0:578 Branch: Return with expression
+0:578 direct index (float)
+0:578 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:578 'alphaMap' (in sampler2D)
+0:578 vector swizzle (2-component vector of float)
+0:578 'texcoord' (in 2-component vector of float)
+0:578 Sequence
+0:578 0 (const int)
+0:578 1 (const int)
+0:578 3 (const int)
+0:581 Function Definition: GetLightDir_DP(vf3;vf3;f1; (3-component vector of float)
+0:581 Function Parameters:
+0:581 'lightDirOrPos' (in 3-component vector of float)
+0:581 'position' (in 3-component vector of float)
+0:581 'lightType' (in float)
+0:583 Sequence
+0:583 Branch: Return with expression
+0:583 normalize (3-component vector of float)
+0:583 subtract (3-component vector of float)
+0:583 'lightDirOrPos' (in 3-component vector of float)
+0:583 vector-scale (3-component vector of float)
+0:583 'position' (in 3-component vector of float)
+0:583 'lightType' (in float)
+0:585 Function Definition: GetLightDir_D(vf3; (3-component vector of float)
+0:585 Function Parameters:
+0:585 'lightDir' (in 3-component vector of float)
+0:588 Sequence
+0:588 Branch: Return with expression
+0:588 normalize (3-component vector of float)
+0:588 'lightDir' (in 3-component vector of float)
+0:590 Function Definition: GetLightDir_P(vf3;vf3; (3-component vector of float)
+0:590 Function Parameters:
+0:590 'lightPos' (in 3-component vector of float)
+0:590 'position' (in 3-component vector of float)
+0:592 Sequence
+0:592 Branch: Return with expression
+0:592 normalize (3-component vector of float)
+0:592 subtract (3-component vector of float)
+0:592 'lightPos' (in 3-component vector of float)
+0:592 'position' (in 3-component vector of float)
+0:594 Function Definition: tGetLightDir_D(mf33;vf3; (3-component vector of float)
+0:594 Function Parameters:
+0:594 't2eMatrixTBN' (in 3X3 matrix of float)
+0:594 'eLightDir' (in 3-component vector of float)
+0:596 Sequence
+0:596 Branch: Return with expression
+0:596 vector-times-matrix (3-component vector of float)
+0:596 Function Call: GetLightDir_D(vf3; (3-component vector of float)
+0:596 'eLightDir' (in 3-component vector of float)
+0:596 't2eMatrixTBN' (in 3X3 matrix of float)
+0:598 Function Definition: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)
+0:598 Function Parameters:
+0:598 'eLightDirOrPos' (in 3-component vector of float)
+0:598 'ePosition' (in 3-component vector of float)
+0:598 'lightType' (in float)
+0:600 Sequence
+0:600 Branch: Return with expression
+0:600 Function Call: GetLightDir_DP(vf3;vf3;f1; (3-component vector of float)
+0:600 'eLightDirOrPos' (in 3-component vector of float)
+0:600 'ePosition' (in 3-component vector of float)
+0:600 'lightType' (in float)
+0:602 Function Definition: tGetLightDir_DP(mf33;vf3;vf3;f1; (3-component vector of float)
+0:602 Function Parameters:
+0:602 't2eMatrixTBN' (in 3X3 matrix of float)
+0:602 'eLightDirOrPos' (in 3-component vector of float)
+0:602 'ePosition' (in 3-component vector of float)
+0:602 'lightType' (in float)
+0:604 Sequence
+0:604 Branch: Return with expression
+0:604 vector-times-matrix (3-component vector of float)
+0:604 Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)
+0:604 'eLightDirOrPos' (in 3-component vector of float)
+0:604 'ePosition' (in 3-component vector of float)
+0:604 'lightType' (in float)
+0:604 't2eMatrixTBN' (in 3X3 matrix of float)
+0:608 Function Definition: GetHalfVector(vf3;vf3; (3-component vector of float)
+0:608 Function Parameters:
+0:608 'lightDir' (in 3-component vector of float)
+0:608 'eyeDirection' (in 3-component vector of float)
+0:610 Sequence
+0:610 Branch: Return with expression
+0:610 normalize (3-component vector of float)
+0:610 add (3-component vector of float)
+0:610 'lightDir' (in 3-component vector of float)
+0:610 'eyeDirection' (in 3-component vector of float)
+0:612 Function Definition: eGetHalfVector(vf3;vf3; (3-component vector of float)
+0:612 Function Parameters:
+0:612 'eLightDir' (in 3-component vector of float)
+0:612 'eEyeDirection' (in 3-component vector of float)
+0:618 Sequence
+0:618 Branch: Return with expression
+0:618 Function Call: GetHalfVector(vf3;vf3; (3-component vector of float)
+0:618 'eLightDir' (in 3-component vector of float)
+0:618 0.000000
+0:618 0.000000
+0:618 1.000000
+0:620 Function Definition: tGetHalfVector(vf3;vf3;mf33; (3-component vector of float)
+0:620 Function Parameters:
+0:620 'tLightDir' (in 3-component vector of float)
+0:620 'eEyeDirection' (in 3-component vector of float)
+0:620 't2eMatrixTBN' (in 3X3 matrix of float)
+0:626 Sequence
+0:626 Sequence
+0:626 move second child to first child (3-component vector of float)
+0:626 'tEyeDirection' (3-component vector of float)
+0:626 Construct vec3 (3-component vector of float)
+0:626 direct index (float)
+0:626 direct index (in 3-component vector of float)
+0:626 't2eMatrixTBN' (in 3X3 matrix of float)
+0:626 0 (const int)
+0:626 2 (const int)
+0:626 direct index (float)
+0:626 direct index (in 3-component vector of float)
+0:626 't2eMatrixTBN' (in 3X3 matrix of float)
+0:626 1 (const int)
+0:626 2 (const int)
+0:626 direct index (float)
+0:626 direct index (in 3-component vector of float)
+0:626 't2eMatrixTBN' (in 3X3 matrix of float)
+0:626 2 (const int)
+0:626 2 (const int)
+0:627 Branch: Return with expression
+0:627 Function Call: GetHalfVector(vf3;vf3; (3-component vector of float)
+0:627 'tLightDir' (in 3-component vector of float)
+0:627 'tEyeDirection' (3-component vector of float)
+0:631 Function Definition: GetFresnelPower(vf3; (float)
+0:631 Function Parameters:
+0:631 'eNormal' (in 3-component vector of float)
+0:636 Sequence
+0:636 Sequence
+0:636 move second child to first child (float)
+0:636 'oneMCosAngle' (float)
+0:636 max (float)
+0:636 subtract (float)
+0:636 1.000000
+0:636 Absolute value (float)
+0:636 direct index (float)
+0:636 'eNormal' (in 3-component vector of float)
+0:636 2 (const int)
+0:636 0.010000
+0:637 Branch: Return with expression
+0:637 pow (float)
+0:637 'oneMCosAngle' (float)
+0:637 5.000000
+0:640 Function Definition: GetFresnelTerm_Transparency(vf3;f1;vf2; (float)
+0:640 Function Parameters:
+0:640 'eNormal' (in 3-component vector of float)
+0:640 'transparency' (in float)
+0:640 'fresnelCoef' (in 2-component vector of float)
+0:642 Sequence
+0:642 Branch: Return with expression
+0:642 add (float)
+0:642 component-wise multiply (float)
+0:642 subtract (float)
+0:642 1.000000
+0:642 'transparency' (in float)
+0:642 direct index (float)
+0:642 'fresnelCoef' (in 2-component vector of float)
+0:642 0 (const int)
+0:642 component-wise multiply (float)
+0:642 direct index (float)
+0:642 'fresnelCoef' (in 2-component vector of float)
+0:642 1 (const int)
+0:642 Function Call: GetFresnelPower(vf3; (float)
+0:642 'eNormal' (in 3-component vector of float)
+0:645 Function Definition: GetFresnelTerm_Standard(vf3;vf2; (float)
+0:645 Function Parameters:
+0:645 'eNormal' (in 3-component vector of float)
+0:645 'fresnelCoef' (in 2-component vector of float)
+0:647 Sequence
+0:647 Branch: Return with expression
+0:647 add (float)
+0:647 direct index (float)
+0:647 'fresnelCoef' (in 2-component vector of float)
+0:647 0 (const int)
+0:647 component-wise multiply (float)
+0:647 direct index (float)
+0:647 'fresnelCoef' (in 2-component vector of float)
+0:647 1 (const int)
+0:647 Function Call: GetFresnelPower(vf3; (float)
+0:647 'eNormal' (in 3-component vector of float)
+0:649 Function Definition: GetFresnel_New(vf3;f1; (float)
+0:649 Function Parameters:
+0:649 'eNormal' (in 3-component vector of float)
+0:649 'fresnelCoef' (in float)
+0:651 Sequence
+0:651 Branch: Return with expression
+0:651 pow (float)
+0:651 max (float)
+0:651 subtract (float)
+0:651 1.000000
+0:651 Absolute value (float)
+0:651 direct index (float)
+0:651 'eNormal' (in 3-component vector of float)
+0:651 2 (const int)
+0:651 0.010000
+0:651 'fresnelCoef' (in float)
+0:654 Function Definition: GetFresnelTerm(vf3;f1;vf2;i1; (float)
+0:654 Function Parameters:
+0:654 'eNormal' (in 3-component vector of float)
+0:654 'transparency' (in float)
+0:654 'fresnelCoef' (in 2-component vector of float)
+0:654 'iFresnelType' (in int)
+0:656 Sequence
+0:656 Test condition and select (void)
+0:656 Condition
+0:656 Compare Equal (bool)
+0:656 'iFresnelType' (in int)
+0:656 48 (const int)
+0:656 true case
+0:658 Sequence
+0:658 Branch: Return with expression
+0:658 Function Call: GetFresnelTerm_Transparency(vf3;f1;vf2; (float)
+0:658 'eNormal' (in 3-component vector of float)
+0:658 'transparency' (in float)
+0:658 'fresnelCoef' (in 2-component vector of float)
+0:656 false case
+0:660 Test condition and select (void)
+0:660 Condition
+0:660 Compare Equal (bool)
+0:660 'iFresnelType' (in int)
+0:660 32 (const int)
+0:660 true case
+0:662 Sequence
+0:662 Branch: Return with expression
+0:662 Function Call: GetFresnelTerm_Standard(vf3;vf2; (float)
+0:662 'eNormal' (in 3-component vector of float)
+0:662 'fresnelCoef' (in 2-component vector of float)
+0:660 false case
+0:666 Sequence
+0:666 Branch: Return with expression
+0:666 Function Call: GetFresnel_New(vf3;f1; (float)
+0:666 'eNormal' (in 3-component vector of float)
+0:666 direct index (float)
+0:666 'fresnelCoef' (in 2-component vector of float)
+0:666 0 (const int)
+0:672 Function Definition: GetRimLight(vf3;f1;f1;vf3; (3-component vector of float)
+0:672 Function Parameters:
+0:672 'tNormal' (in 3-component vector of float)
+0:672 'rimlightCoef1' (in float)
+0:672 'rimlightCoef2' (in float)
+0:672 'rimlightColor' (in 3-component vector of float)
+0:674 Sequence
+0:674 Branch: Return with expression
+0:674 vector-scale (3-component vector of float)
+0:674 add (float)
+0:674 component-wise multiply (float)
+0:674 'rimlightCoef1' (in float)
+0:674 Function Call: GetFresnelPower(vf3; (float)
+0:674 'tNormal' (in 3-component vector of float)
+0:674 'rimlightCoef2' (in float)
+0:674 'rimlightColor' (in 3-component vector of float)
+0:678 Function Definition: GetMaxSpecTerm(vf4;b1; (float)
+0:678 Function Parameters:
+0:678 'specular' (in 4-component vector of float)
+0:678 'iMaxSpecW' (in bool)
+0:680 Sequence
+0:680 Test condition and select (void)
+0:680 Condition
+0:680 'iMaxSpecW' (in bool)
+0:680 true case
+0:682 Sequence
+0:682 Branch: Return with expression
+0:682 direct index (float)
+0:682 'specular' (in 4-component vector of float)
+0:682 3 (const int)
+0:680 false case
+0:686 Sequence
+0:686 Branch: Return with expression
+0:686 direct index (float)
+0:686 'specular' (in 4-component vector of float)
+0:686 0 (const int)
+0:690 Function Definition: GetSpecFac(f1;vf2; (float)
+0:690 Function Parameters:
+0:690 'fMaxSpec' (in float)
+0:690 'coef' (in 2-component vector of float)
+0:692 Sequence
+0:692 Branch: Return with expression
+0:692 Function Call: saturate(f1; (float)
+0:692 component-wise multiply (float)
+0:692 subtract (float)
+0:692 'fMaxSpec' (in float)
+0:692 direct index (float)
+0:692 'coef' (in 2-component vector of float)
+0:692 0 (const int)
+0:692 direct index (float)
+0:692 'coef' (in 2-component vector of float)
+0:692 1 (const int)
+0:696 Function Definition: GetDiffuseFromOneLight(vf3;vf3;vf3;i1;f1; (3-component vector of float)
+0:696 Function Parameters:
+0:696 'normal' (in 3-component vector of float)
+0:696 'lightDir' (in 3-component vector of float)
+0:696 'lightColor' (in 3-component vector of float)
+0:696 'iAlphaType' (in int)
+0:696 'transparency' (in float)
+0:699 Sequence
+0:699 Sequence
+0:699 move second child to first child (float)
+0:699 'LdotB' (float)
+0:699 dot-product (float)
+0:699 'lightDir' (in 3-component vector of float)
+0:699 'normal' (in 3-component vector of float)
+0:700 Test condition and select (void)
+0:700 Condition
+0:700 Compare Equal (bool)
+0:700 'iAlphaType' (in int)
+0:700 26 (const int)
+0:700 true case
+0:702 Sequence
+0:702 move second child to first child (float)
+0:702 'LdotB' (float)
+0:702 Function Call: saturate(f1; (float)
+0:702 'LdotB' (float)
+0:700 false case
+0:706 Sequence
+0:706 Test condition and select (void)
+0:706 Condition
+0:706 Compare Less Than (bool)
+0:706 'LdotB' (float)
+0:706 0.000000
+0:706 true case
+0:708 Sequence
+0:708 move second child to first child (float)
+0:708 'LdotB' (float)
+0:708 component-wise multiply (float)
+0:708 Absolute value (float)
+0:708 'LdotB' (float)
+0:708 subtract (float)
+0:708 1.000000
+0:708 'transparency' (in float)
+0:713 Branch: Return with expression
+0:713 vector-scale (3-component vector of float)
+0:713 'LdotB' (float)
+0:713 'lightColor' (in 3-component vector of float)
+0:717 Function Definition: GetSpecularFromOneLight(vf3;vf3;f1;vf3;b1; (4-component vector of float)
+0:717 Function Parameters:
+0:717 'normal' (in 3-component vector of float)
+0:717 'halfVector' (in 3-component vector of float)
+0:717 'specularPower' (in float)
+0:717 'lightSpec' (in 3-component vector of float)
+0:717 'bSpecWTerm' (in bool)
+0:719 Sequence
+0:719 Sequence
+0:719 move second child to first child (float)
+0:719 'ndoth' (float)
+0:719 dot-product (float)
+0:719 'normal' (in 3-component vector of float)
+0:719 'halfVector' (in 3-component vector of float)
+0:720 move second child to first child (float)
+0:720 'ndoth' (float)
+0:720 pow (float)
+0:720 max (float)
+0:720 'ndoth' (float)
+0:720 0.010000
+0:720 'specularPower' (in float)
+0:722 Sequence
+0:722 move second child to first child (4-component vector of float)
+0:722 'res' (4-component vector of float)
+0:722 Construct vec4 (4-component vector of float)
+0:722 vector-scale (3-component vector of float)
+0:722 'ndoth' (float)
+0:722 'lightSpec' (in 3-component vector of float)
+0:722 0.000000
+0:723 Test condition and select (void)
+0:723 Condition
+0:723 'bSpecWTerm' (in bool)
+0:723 true case
+0:725 Sequence
+0:725 move second child to first child (float)
+0:725 direct index (float)
+0:725 'res' (4-component vector of float)
+0:725 3 (const int)
+0:725 component-wise multiply (float)
+0:725 'ndoth' (float)
+0:725 Function Call: Max3(vf3; (float)
+0:725 'lightSpec' (in 3-component vector of float)
+0:727 Branch: Return with expression
+0:727 'res' (4-component vector of float)
+0:734 Function Definition: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)
+0:734 Function Parameters:
+0:734 'normal' (in 3-component vector of float)
+0:734 'lightDirAux' (in 3-component vector of float)
+0:734 'lightColor' (in 3-component vector of float)
+0:734 'iAlphaType' (in int)
+0:734 'halfVector' (in 3-component vector of float)
+0:734 'lightSpec' (in 3-component vector of float)
+0:734 'specularPower' (in float)
+0:734 'bMaxSpec' (in bool)
+0:734 'noSpec' (in bool)
+0:734 'diffuseLight' (inout 3-component vector of float)
+0:734 'specularLight' (inout 4-component vector of float)
+0:734 'transparency' (in float)
+0:736 Sequence
+0:736 add second child into first child (3-component vector of float)
+0:736 'diffuseLight' (inout 3-component vector of float)
+0:736 Function Call: GetDiffuseFromOneLight(vf3;vf3;vf3;i1;f1; (3-component vector of float)
+0:736 'normal' (in 3-component vector of float)
+0:736 'lightDirAux' (in 3-component vector of float)
+0:736 'lightColor' (in 3-component vector of float)
+0:736 'iAlphaType' (in int)
+0:736 'transparency' (in float)
+0:737 Test condition and select (void)
+0:737 Condition
+0:737 Negate conditional (bool)
+0:737 'noSpec' (in bool)
+0:737 true case
+0:739 Sequence
+0:739 add second child into first child (4-component vector of float)
+0:739 'specularLight' (inout 4-component vector of float)
+0:739 Function Call: GetSpecularFromOneLight(vf3;vf3;f1;vf3;b1; (4-component vector of float)
+0:739 'normal' (in 3-component vector of float)
+0:739 'halfVector' (in 3-component vector of float)
+0:739 'specularPower' (in float)
+0:739 'lightSpec' (in 3-component vector of float)
+0:739 'bMaxSpec' (in bool)
+0:745 Function Definition: GetDiffuseTerm(vf3;vf3; (3-component vector of float)
+0:745 Function Parameters:
+0:745 'diffuseLight' (in 3-component vector of float)
+0:745 'materialColor' (in 3-component vector of float)
+0:747 Sequence
+0:747 Branch: Return with expression
+0:747 component-wise multiply (3-component vector of float)
+0:747 'diffuseLight' (in 3-component vector of float)
+0:747 'materialColor' (in 3-component vector of float)
+0:750 Function Definition: GetSpecularTerm(vf3;vf3; (3-component vector of float)
+0:750 Function Parameters:
+0:750 'specularLight' (in 3-component vector of float)
+0:750 'materialColor' (in 3-component vector of float)
+0:752 Sequence
+0:752 Branch: Return with expression
+0:752 component-wise multiply (3-component vector of float)
+0:752 'specularLight' (in 3-component vector of float)
+0:752 'materialColor' (in 3-component vector of float)
+0:755 Function Definition: GetFresnelAmbient(f1; (3-component vector of float)
+0:755 Function Parameters:
+0:755 'fresnel' (in float)
+0:757 Sequence
+0:757 Branch: Return with expression
+0:757 Construct vec3 (3-component vector of float)
+0:757 'fresnel' (in float)
+0:761 Function Definition: TransformEnvColor(vf3;b1;f1;f1;f1;vf3; (3-component vector of float)
+0:761 Function Parameters:
+0:761 'envColorIn' (in 3-component vector of float)
+0:761 'useHdr' (in bool)
+0:761 'envColorWash' (in float)
+0:761 'envBrightness' (in float)
+0:761 'envContrast' (in float)
+0:761 'envColorModifier' (in 3-component vector of float)
+0:763 Sequence
+0:763 Test condition and select (void)
+0:763 Condition
+0:763 'useHdr' (in bool)
+0:763 true case
+0:769 Sequence
+0:769 move second child to first child (3-component vector of float)
+0:769 'envColorIn' (in 3-component vector of float)
+0:769 add (3-component vector of float)
+0:769 vector-scale (3-component vector of float)
+0:769 subtract (3-component vector of float)
+0:769 'envColorIn' (in 3-component vector of float)
+0:769 'envcolorAverage' (uniform 3-component vector of float)
+0:769 'envContrast' (in float)
+0:769 vector-scale (3-component vector of float)
+0:769 'envcolorAverage' (uniform 3-component vector of float)
+0:769 'envBrightness' (in float)
+0:770 move second child to first child (3-component vector of float)
+0:770 'envColorIn' (in 3-component vector of float)
+0:770 mix (3-component vector of float)
+0:770 'envColorIn' (in 3-component vector of float)
+0:770 Construct vec3 (3-component vector of float)
+0:770 Function Call: GetLuminance(vf3; (float)
+0:770 'envColorIn' (in 3-component vector of float)
+0:770 'envColorWash' (in float)
+0:771 multiply second child into first child (3-component vector of float)
+0:771 'envColorIn' (in 3-component vector of float)
+0:771 'envColorModifier' (in 3-component vector of float)
+0:772 Branch: Return with expression
+0:772 max (3-component vector of float)
+0:772 'envColorIn' (in 3-component vector of float)
+0:772 0.000000
+0:772 0.000000
+0:772 0.000000
+0:763 false case
+0:776 Sequence
+0:776 Sequence
+0:776 move second child to first child (3-component vector of float)
+0:776 'color' (3-component vector of float)
+0:776 mix (3-component vector of float)
+0:776 vector swizzle (3-component vector of float)
+0:776 'envColorIn' (in 3-component vector of float)
+0:776 Sequence
+0:776 0 (const int)
+0:776 1 (const int)
+0:776 2 (const int)
+0:776 Construct vec3 (3-component vector of float)
+0:776 Function Call: GetLuminance(vf3; (float)
+0:776 'envColorIn' (in 3-component vector of float)
+0:776 'envColorWash' (in float)
+0:777 Sequence
+0:777 move second child to first child (3-component vector of float)
+0:777 'res' (3-component vector of float)
+0:777 add (3-component vector of float)
+0:777 add (3-component vector of float)
+0:777 vector-scale (3-component vector of float)
+0:777 add (3-component vector of float)
+0:777 subtract (3-component vector of float)
+0:777 'color' (3-component vector of float)
+0:777 0.635000
+0:777 'envBrightness' (in float)
+0:777 'envContrast' (in float)
+0:777 0.635000
+0:777 'envColorModifier' (in 3-component vector of float)
+0:778 Branch: Return with expression
+0:778 'res' (3-component vector of float)
+0:783 Function Definition: GetEnv(vf3; (4-component vector of float)
+0:783 Function Parameters:
+0:783 'envCoord' (in 3-component vector of float)
+0:787 Sequence
+0:787 Sequence
+0:787 Branch: Return with expression
+0:787 Function Call: textureCube(sC1;vf3; (4-component vector of float)
+0:787 'envCubicSpecular' (uniform samplerCube)
+0:787 'envCoord' (in 3-component vector of float)
+0:795 Function Definition: GetEnvDiffuse(vf3; (4-component vector of float)
+0:795 Function Parameters:
+0:795 'envCoord' (in 3-component vector of float)
+0:799 Sequence
+0:799 Sequence
+0:799 Branch: Return with expression
+0:799 Function Call: textureCube(sC1;vf3; (4-component vector of float)
+0:799 'envCubicDiffuse' (uniform samplerCube)
+0:799 'envCoord' (in 3-component vector of float)
+0:806 Function Definition: GetAmbiantAndDiffuseModifierEnv(vf3;f1;f1;f1;vf3;b1; (3-component vector of float)
+0:806 Function Parameters:
+0:806 'envCoord' (in 3-component vector of float)
+0:806 'envColorWash' (in float)
+0:806 'envBrightness' (in float)
+0:806 'envContrast' (in float)
+0:806 'envColor' (in 3-component vector of float)
+0:806 'useHdr' (in bool)
+0:808 Sequence
+0:808 Sequence
+0:808 move second child to first child (4-component vector of float)
+0:808 'env' (4-component vector of float)
+0:808 Function Call: GetEnv(vf3; (4-component vector of float)
+0:808 'envCoord' (in 3-component vector of float)
+0:809 Branch: Return with expression
+0:809 Function Call: TransformEnvColor(vf3;b1;f1;f1;f1;vf3; (3-component vector of float)
+0:809 vector swizzle (3-component vector of float)
+0:809 'env' (4-component vector of float)
+0:809 Sequence
+0:809 0 (const int)
+0:809 1 (const int)
+0:809 2 (const int)
+0:809 'useHdr' (in bool)
+0:809 'envColorWash' (in float)
+0:809 'envBrightness' (in float)
+0:809 'envContrast' (in float)
+0:809 'envColor' (in 3-component vector of float)
+0:811 Function Definition: GetDiffuseMap(s21;vf2;vf3;vf3; (4-component vector of float)
+0:811 Function Parameters:
+0:811 'diffMap' (in sampler2D)
+0:811 'coord' (in 2-component vector of float)
+0:811 'average' (in 3-component vector of float)
+0:811 'diffuseMapModifierCWB' (in 3-component vector of float)
+0:822 Sequence
+0:822 Sequence
+0:822 Branch: Return with expression
+0:822 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:822 'diffMap' (in sampler2D)
+0:822 'coord' (in 2-component vector of float)
+0:826 Function Definition: GetAmbiantAndDiffuseModifierDiff(s21;vf2;vf3;vf3; (3-component vector of float)
+0:826 Function Parameters:
+0:826 'diffMap' (in sampler2D)
+0:826 'commonCoord' (in 2-component vector of float)
+0:826 'average' (in 3-component vector of float)
+0:826 'diffuseMapModifier' (in 3-component vector of float)
+0:828 Sequence
+0:828 Branch: Return with expression
+0:828 vector swizzle (3-component vector of float)
+0:828 Function Call: GetDiffuseMap(s21;vf2;vf3;vf3; (4-component vector of float)
+0:828 'diffMap' (in sampler2D)
+0:828 'commonCoord' (in 2-component vector of float)
+0:828 'average' (in 3-component vector of float)
+0:828 'diffuseMapModifier' (in 3-component vector of float)
+0:828 Sequence
+0:828 0 (const int)
+0:828 1 (const int)
+0:828 2 (const int)
+0:831 Function Definition: GetAmbiantAndDiffuseModifierDiffAlpha(s21;vf2;vf3;vf3; (4-component vector of float)
+0:831 Function Parameters:
+0:831 'diffMap' (in sampler2D)
+0:831 'commonCoord' (in 2-component vector of float)
+0:831 'average' (in 3-component vector of float)
+0:831 'diffuseMapModifier' (in 3-component vector of float)
+0:833 Sequence
+0:833 Branch: Return with expression
+0:833 vector swizzle (4-component vector of float)
+0:833 Function Call: GetDiffuseMap(s21;vf2;vf3;vf3; (4-component vector of float)
+0:833 'diffMap' (in sampler2D)
+0:833 'commonCoord' (in 2-component vector of float)
+0:833 'average' (in 3-component vector of float)
+0:833 'diffuseMapModifier' (in 3-component vector of float)
+0:833 Sequence
+0:833 0 (const int)
+0:833 1 (const int)
+0:833 2 (const int)
+0:833 3 (const int)
+0:838 Function Definition: GetAlphaFrom_Material(vf4; (float)
+0:838 Function Parameters:
+0:838 'matColor' (in 4-component vector of float)
+0:840 Sequence
+0:840 Branch: Return with expression
+0:840 direct index (float)
+0:840 'matColor' (in 4-component vector of float)
+0:840 3 (const int)
+0:842 Function Definition: GetAlphaFrom_Fresnel(f1; (float)
+0:842 Function Parameters:
+0:842 'fresnel' (in float)
+0:844 Sequence
+0:844 Branch: Return with expression
+0:844 subtract (float)
+0:844 1.000000
+0:844 'fresnel' (in float)
+0:846 Function Definition: GetAlphaFrom_FresnelPlusTransparency(f1;f1; (float)
+0:846 Function Parameters:
+0:846 'fresnel' (in float)
+0:846 'transparency' (in float)
+0:848 Sequence
+0:848 Branch: Return with expression
+0:848 add (float)
+0:848 'fresnel' (in float)
+0:848 'transparency' (in float)
+0:850 Function Definition: GetAlphaFrom_PlasticPerspex(vf3; (float)
+0:850 Function Parameters:
+0:850 'diffuseTerm' (in 3-component vector of float)
+0:852 Sequence
+0:852 Branch: Return with expression
+0:852 component-wise multiply (float)
+0:852 0.700000
+0:852 add (float)
+0:852 direct index (float)
+0:852 'diffuseTerm' (in 3-component vector of float)
+0:852 0 (const int)
+0:852 0.200000
+0:854 Function Definition: GetAlphaFrom_Glass(f1;f1;f1; (float)
+0:854 Function Parameters:
+0:854 'fMaxSpec' (in float)
+0:854 'fresnel' (in float)
+0:854 'transparency' (in float)
+0:856 Sequence
+0:856 Sequence
+0:856 move second child to first child (float)
+0:856 'specfac' (float)
+0:856 Function Call: saturate(f1; (float)
+0:856 component-wise multiply (float)
+0:856 subtract (float)
+0:856 'fMaxSpec' (in float)
+0:856 0.480000
+0:856 5.000000
+0:857 Sequence
+0:857 move second child to first child (float)
+0:857 'fresnelGlass' (float)
+0:857 Function Call: saturate(f1; (float)
+0:857 component-wise multiply (float)
+0:857 component-wise multiply (float)
+0:857 'fresnel' (in float)
+0:857 'fresnel' (in float)
+0:857 0.010000
+0:858 Branch: Return with expression
+0:858 add (float)
+0:858 component-wise multiply (float)
+0:858 Function Call: saturate(f1; (float)
+0:858 add (float)
+0:858 'fresnelGlass' (float)
+0:858 'transparency' (in float)
+0:858 subtract (float)
+0:858 1.000000
+0:858 'specfac' (float)
+0:858 'specfac' (float)
+0:860 Function Definition: GetAlpha(vf4;f1;f1;vf3;vf4;b1;i1; (float)
+0:860 Function Parameters:
+0:860 'matColor' (in 4-component vector of float)
+0:860 'fresnel' (in float)
+0:860 'transparency' (in float)
+0:860 'diffuseTerm' (in 3-component vector of float)
+0:860 'specularTerm' (in 4-component vector of float)
+0:860 'iMaxSpecW' (in bool)
+0:860 'iAlphaType' (in int)
+0:862 Sequence
+0:862 Test condition and select (void)
+0:862 Condition
+0:862 Compare Equal (bool)
+0:862 'iAlphaType' (in int)
+0:862 58 (const int)
+0:862 true case
+0:864 Sequence
+0:864 Branch: Return with expression
+0:864 Function Call: GetAlphaFrom_Fresnel(f1; (float)
+0:864 'fresnel' (in float)
+0:862 false case
+0:866 Test condition and select (void)
+0:866 Condition
+0:866 Compare Equal (bool)
+0:866 'iAlphaType' (in int)
+0:866 42 (const int)
+0:866 true case
+0:868 Sequence
+0:868 Branch: Return with expression
+0:868 Function Call: GetAlphaFrom_FresnelPlusTransparency(f1;f1; (float)
+0:868 'fresnel' (in float)
+0:868 'transparency' (in float)
+0:866 false case
+0:870 Test condition and select (void)
+0:870 Condition
+0:870 Compare Equal (bool)
+0:870 'iAlphaType' (in int)
+0:870 74 (const int)
+0:870 true case
+0:872 Sequence
+0:872 Branch: Return with expression
+0:872 Function Call: GetAlphaFrom_Material(vf4; (float)
+0:872 'matColor' (in 4-component vector of float)
+0:870 false case
+0:874 Test condition and select (void)
+0:874 Condition
+0:874 Compare Equal (bool)
+0:874 'iAlphaType' (in int)
+0:874 90 (const int)
+0:874 true case
+0:876 Sequence
+0:876 Branch: Return with expression
+0:876 Function Call: GetAlphaFrom_PlasticPerspex(vf3; (float)
+0:876 'diffuseTerm' (in 3-component vector of float)
+0:874 false case
+0:878 Test condition and select (void)
+0:878 Condition
+0:878 Compare Equal (bool)
+0:878 'iAlphaType' (in int)
+0:878 122 (const int)
+0:878 true case
+0:880 Sequence
+0:880 Sequence
+0:880 move second child to first child (float)
+0:880 't' (float)
+0:880 Function Call: GetMaxSpecTerm(vf4;b1; (float)
+0:880 'specularTerm' (in 4-component vector of float)
+0:880 'iMaxSpecW' (in bool)
+0:881 Branch: Return with expression
+0:881 Function Call: GetAlphaFrom_Glass(f1;f1;f1; (float)
+0:881 't' (float)
+0:881 'fresnel' (in float)
+0:881 'transparency' (in float)
+0:878 false case
+0:883 Test condition and select (void)
+0:883 Condition
+0:883 Compare Equal (bool)
+0:883 'iAlphaType' (in int)
+0:883 106 (const int)
+0:883 true case
+0:885 Sequence
+0:885 Branch: Return with expression
+0:885 'transparency' (in float)
+0:883 false case
+0:889 Sequence
+0:889 Branch: Return with expression
+0:889 1.000000
+0:895 Function Definition: GetFinalColor(vf3;vf3;vf3;f1; (4-component vector of float)
+0:895 Function Parameters:
+0:895 'ambiant' (in 3-component vector of float)
+0:895 'diffuse' (in 3-component vector of float)
+0:895 'specular' (in 3-component vector of float)
+0:895 'alpha' (in float)
+0:897 Sequence
+0:897 Branch: Return with expression
+0:897 Construct vec4 (4-component vector of float)
+0:897 add (3-component vector of float)
+0:897 add (3-component vector of float)
+0:897 'ambiant' (in 3-component vector of float)
+0:897 'diffuse' (in 3-component vector of float)
+0:897 'specular' (in 3-component vector of float)
+0:897 'alpha' (in float)
+0:899 Function Definition: GetFinalColor_Fac(vf3;vf3;vf3;f1;f1; (4-component vector of float)
+0:899 Function Parameters:
+0:899 'ambiant' (in 3-component vector of float)
+0:899 'diffuse' (in 3-component vector of float)
+0:899 'specular' (in 3-component vector of float)
+0:899 'facCoef' (in float)
+0:899 'alpha' (in float)
+0:901 Sequence
+0:901 Branch: Return with expression
+0:901 Construct vec4 (4-component vector of float)
+0:901 add (3-component vector of float)
+0:901 vector-scale (3-component vector of float)
+0:901 subtract (float)
+0:901 1.000000
+0:901 'facCoef' (in float)
+0:901 add (3-component vector of float)
+0:901 'ambiant' (in 3-component vector of float)
+0:901 'diffuse' (in 3-component vector of float)
+0:901 vector-scale (3-component vector of float)
+0:901 'facCoef' (in float)
+0:901 'specular' (in 3-component vector of float)
+0:901 'alpha' (in float)
+0:903 Function Definition: GetFinalColor_Fac_SaturateAD_ModifyAD(vf3;vf3;vf3;f1;vf3;f1; (4-component vector of float)
+0:903 Function Parameters:
+0:903 'ambiant' (in 3-component vector of float)
+0:903 'diffuse' (in 3-component vector of float)
+0:903 'specular' (in 3-component vector of float)
+0:903 'facCoef' (in float)
+0:903 'modify' (in 3-component vector of float)
+0:903 'alpha' (in float)
+0:905 Sequence
+0:905 Branch: Return with expression
+0:905 Construct vec4 (4-component vector of float)
+0:905 add (3-component vector of float)
+0:905 component-wise multiply (3-component vector of float)
+0:905 vector-scale (3-component vector of float)
+0:905 subtract (float)
+0:905 1.000000
+0:905 'facCoef' (in float)
+0:905 'modify' (in 3-component vector of float)
+0:905 Function Call: saturateLight(vf3; (3-component vector of float)
+0:905 add (3-component vector of float)
+0:905 'ambiant' (in 3-component vector of float)
+0:905 'diffuse' (in 3-component vector of float)
+0:905 vector-scale (3-component vector of float)
+0:905 'facCoef' (in float)
+0:905 'specular' (in 3-component vector of float)
+0:905 'alpha' (in float)
+0:907 Function Definition: GetFinalColor_SaturateAD_ModifyAD(vf3;vf3;vf3;vf3;f1; (4-component vector of float)
+0:907 Function Parameters:
+0:907 'ambiant' (in 3-component vector of float)
+0:907 'diffuse' (in 3-component vector of float)
+0:907 'specular' (in 3-component vector of float)
+0:907 'modify' (in 3-component vector of float)
+0:907 'alpha' (in float)
+0:909 Sequence
+0:909 Branch: Return with expression
+0:909 Construct vec4 (4-component vector of float)
+0:909 add (3-component vector of float)
+0:909 component-wise multiply (3-component vector of float)
+0:909 'modify' (in 3-component vector of float)
+0:909 Function Call: saturateLight(vf3; (3-component vector of float)
+0:909 add (3-component vector of float)
+0:909 'ambiant' (in 3-component vector of float)
+0:909 'diffuse' (in 3-component vector of float)
+0:909 'specular' (in 3-component vector of float)
+0:909 'alpha' (in float)
+0:911 Function Definition: GetFinalColor_ModifyADS(vf3;vf3;vf3;vf3;f1; (4-component vector of float)
+0:911 Function Parameters:
+0:911 'ambiant' (in 3-component vector of float)
+0:911 'diffuse' (in 3-component vector of float)
+0:911 'specular' (in 3-component vector of float)
+0:911 'modify' (in 3-component vector of float)
+0:911 'alpha' (in float)
+0:913 Sequence
+0:913 Branch: Return with expression
+0:913 Construct vec4 (4-component vector of float)
+0:913 component-wise multiply (3-component vector of float)
+0:913 'modify' (in 3-component vector of float)
+0:913 add (3-component vector of float)
+0:913 Function Call: saturateLight(vf3; (3-component vector of float)
+0:913 add (3-component vector of float)
+0:913 'ambiant' (in 3-component vector of float)
+0:913 'diffuse' (in 3-component vector of float)
+0:913 'specular' (in 3-component vector of float)
+0:913 'alpha' (in float)
+0:915 Function Definition: GetFinalColor_Illum(vf3;vf3;f1; (4-component vector of float)
+0:915 Function Parameters:
+0:915 'ambiant' (in 3-component vector of float)
+0:915 'diffuseAndSpecular' (in 3-component vector of float)
+0:915 'alpha' (in float)
+0:917 Sequence
+0:917 Branch: Return with expression
+0:917 Construct vec4 (4-component vector of float)
+0:917 add (3-component vector of float)
+0:917 'ambiant' (in 3-component vector of float)
+0:917 'diffuseAndSpecular' (in 3-component vector of float)
+0:917 'alpha' (in float)
+0:921 Function Definition: GetShadowColor(sS21;vf3;f1; (float)
+0:921 Function Parameters:
+0:921 'shadowMap' (in sampler2DShadow)
+0:921 'shadowUV' (in 3-component vector of float)
+0:921 'mapScale' (in float)
+0:923 Sequence
+0:923 Sequence
+0:923 move second child to first child (float)
+0:923 'shadowColor' (float)
+0:923 direct index (float)
+0:923 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:923 'shadowMap' (in sampler2DShadow)
+0:923 add (3-component vector of float)
+0:923 'shadowUV' (in 3-component vector of float)
+0:923 vector-scale (3-component vector of float)
+0:923 -1.500000
+0:923 -1.500000
+0:923 0.000000
+0:923 'mapScale' (in float)
+0:923 0 (const int)
+0:924 add second child into first child (float)
+0:924 'shadowColor' (float)
+0:924 direct index (float)
+0:924 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:924 'shadowMap' (in sampler2DShadow)
+0:924 add (3-component vector of float)
+0:924 'shadowUV' (in 3-component vector of float)
+0:924 vector-scale (3-component vector of float)
+0:924 -1.500000
+0:924 -0.500000
+0:924 0.000000
+0:924 'mapScale' (in float)
+0:924 0 (const int)
+0:925 add second child into first child (float)
+0:925 'shadowColor' (float)
+0:925 direct index (float)
+0:925 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:925 'shadowMap' (in sampler2DShadow)
+0:925 add (3-component vector of float)
+0:925 'shadowUV' (in 3-component vector of float)
+0:925 vector-scale (3-component vector of float)
+0:925 -1.500000
+0:925 0.500000
+0:925 0.000000
+0:925 'mapScale' (in float)
+0:925 0 (const int)
+0:926 add second child into first child (float)
+0:926 'shadowColor' (float)
+0:926 direct index (float)
+0:926 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:926 'shadowMap' (in sampler2DShadow)
+0:926 add (3-component vector of float)
+0:926 'shadowUV' (in 3-component vector of float)
+0:926 vector-scale (3-component vector of float)
+0:926 -1.500000
+0:926 1.500000
+0:926 0.000000
+0:926 'mapScale' (in float)
+0:926 0 (const int)
+0:928 add second child into first child (float)
+0:928 'shadowColor' (float)
+0:928 direct index (float)
+0:928 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:928 'shadowMap' (in sampler2DShadow)
+0:928 add (3-component vector of float)
+0:928 'shadowUV' (in 3-component vector of float)
+0:928 vector-scale (3-component vector of float)
+0:928 -0.500000
+0:928 -1.500000
+0:928 0.000000
+0:928 'mapScale' (in float)
+0:928 0 (const int)
+0:929 add second child into first child (float)
+0:929 'shadowColor' (float)
+0:929 direct index (float)
+0:929 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:929 'shadowMap' (in sampler2DShadow)
+0:929 add (3-component vector of float)
+0:929 'shadowUV' (in 3-component vector of float)
+0:929 vector-scale (3-component vector of float)
+0:929 -0.500000
+0:929 -0.500000
+0:929 0.000000
+0:929 'mapScale' (in float)
+0:929 0 (const int)
+0:930 add second child into first child (float)
+0:930 'shadowColor' (float)
+0:930 direct index (float)
+0:930 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:930 'shadowMap' (in sampler2DShadow)
+0:930 add (3-component vector of float)
+0:930 'shadowUV' (in 3-component vector of float)
+0:930 vector-scale (3-component vector of float)
+0:930 -0.500000
+0:930 0.500000
+0:930 0.000000
+0:930 'mapScale' (in float)
+0:930 0 (const int)
+0:931 add second child into first child (float)
+0:931 'shadowColor' (float)
+0:931 direct index (float)
+0:931 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:931 'shadowMap' (in sampler2DShadow)
+0:931 add (3-component vector of float)
+0:931 'shadowUV' (in 3-component vector of float)
+0:931 vector-scale (3-component vector of float)
+0:931 -0.500000
+0:931 1.500000
+0:931 0.000000
+0:931 'mapScale' (in float)
+0:931 0 (const int)
+0:933 add second child into first child (float)
+0:933 'shadowColor' (float)
+0:933 direct index (float)
+0:933 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:933 'shadowMap' (in sampler2DShadow)
+0:933 add (3-component vector of float)
+0:933 'shadowUV' (in 3-component vector of float)
+0:933 vector-scale (3-component vector of float)
+0:933 0.500000
+0:933 -1.500000
+0:933 0.000000
+0:933 'mapScale' (in float)
+0:933 0 (const int)
+0:934 add second child into first child (float)
+0:934 'shadowColor' (float)
+0:934 direct index (float)
+0:934 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:934 'shadowMap' (in sampler2DShadow)
+0:934 add (3-component vector of float)
+0:934 'shadowUV' (in 3-component vector of float)
+0:934 vector-scale (3-component vector of float)
+0:934 0.500000
+0:934 -0.500000
+0:934 0.000000
+0:934 'mapScale' (in float)
+0:934 0 (const int)
+0:935 add second child into first child (float)
+0:935 'shadowColor' (float)
+0:935 direct index (float)
+0:935 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:935 'shadowMap' (in sampler2DShadow)
+0:935 add (3-component vector of float)
+0:935 'shadowUV' (in 3-component vector of float)
+0:935 vector-scale (3-component vector of float)
+0:935 0.500000
+0:935 0.500000
+0:935 0.000000
+0:935 'mapScale' (in float)
+0:935 0 (const int)
+0:936 add second child into first child (float)
+0:936 'shadowColor' (float)
+0:936 direct index (float)
+0:936 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:936 'shadowMap' (in sampler2DShadow)
+0:936 add (3-component vector of float)
+0:936 'shadowUV' (in 3-component vector of float)
+0:936 vector-scale (3-component vector of float)
+0:936 0.500000
+0:936 1.500000
+0:936 0.000000
+0:936 'mapScale' (in float)
+0:936 0 (const int)
+0:938 add second child into first child (float)
+0:938 'shadowColor' (float)
+0:938 direct index (float)
+0:938 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:938 'shadowMap' (in sampler2DShadow)
+0:938 add (3-component vector of float)
+0:938 'shadowUV' (in 3-component vector of float)
+0:938 vector-scale (3-component vector of float)
+0:938 1.500000
+0:938 -1.500000
+0:938 0.000000
+0:938 'mapScale' (in float)
+0:938 0 (const int)
+0:939 add second child into first child (float)
+0:939 'shadowColor' (float)
+0:939 direct index (float)
+0:939 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:939 'shadowMap' (in sampler2DShadow)
+0:939 add (3-component vector of float)
+0:939 'shadowUV' (in 3-component vector of float)
+0:939 vector-scale (3-component vector of float)
+0:939 1.500000
+0:939 -0.500000
+0:939 0.000000
+0:939 'mapScale' (in float)
+0:939 0 (const int)
+0:940 add second child into first child (float)
+0:940 'shadowColor' (float)
+0:940 direct index (float)
+0:940 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:940 'shadowMap' (in sampler2DShadow)
+0:940 add (3-component vector of float)
+0:940 'shadowUV' (in 3-component vector of float)
+0:940 vector-scale (3-component vector of float)
+0:940 1.500000
+0:940 0.500000
+0:940 0.000000
+0:940 'mapScale' (in float)
+0:940 0 (const int)
+0:941 add second child into first child (float)
+0:941 'shadowColor' (float)
+0:941 direct index (float)
+0:941 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:941 'shadowMap' (in sampler2DShadow)
+0:941 add (3-component vector of float)
+0:941 'shadowUV' (in 3-component vector of float)
+0:941 vector-scale (3-component vector of float)
+0:941 1.500000
+0:941 1.500000
+0:941 0.000000
+0:941 'mapScale' (in float)
+0:941 0 (const int)
+0:942 Branch: Return with expression
+0:942 divide (float)
+0:942 'shadowColor' (float)
+0:942 16.000000
+0:947 Function Definition: GetShadowColorLow(sS21;vf3;f1; (float)
+0:947 Function Parameters:
+0:947 'shadowMap' (in sampler2DShadow)
+0:947 'shadowUV' (in 3-component vector of float)
+0:947 'mapScale' (in float)
+0:949 Sequence
+0:949 Sequence
+0:949 move second child to first child (float)
+0:949 'shadowColor' (float)
+0:949 direct index (float)
+0:949 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:949 'shadowMap' (in sampler2DShadow)
+0:949 add (3-component vector of float)
+0:949 'shadowUV' (in 3-component vector of float)
+0:949 vector-scale (3-component vector of float)
+0:949 -0.500000
+0:949 -0.500000
+0:949 0.000000
+0:949 'mapScale' (in float)
+0:949 0 (const int)
+0:950 add second child into first child (float)
+0:950 'shadowColor' (float)
+0:950 direct index (float)
+0:950 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:950 'shadowMap' (in sampler2DShadow)
+0:950 add (3-component vector of float)
+0:950 'shadowUV' (in 3-component vector of float)
+0:950 vector-scale (3-component vector of float)
+0:950 -0.500000
+0:950 0.500000
+0:950 0.000000
+0:950 'mapScale' (in float)
+0:950 0 (const int)
+0:951 add second child into first child (float)
+0:951 'shadowColor' (float)
+0:951 direct index (float)
+0:951 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:951 'shadowMap' (in sampler2DShadow)
+0:951 add (3-component vector of float)
+0:951 'shadowUV' (in 3-component vector of float)
+0:951 vector-scale (3-component vector of float)
+0:951 0.500000
+0:951 -0.500000
+0:951 0.000000
+0:951 'mapScale' (in float)
+0:951 0 (const int)
+0:952 add second child into first child (float)
+0:952 'shadowColor' (float)
+0:952 direct index (float)
+0:952 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:952 'shadowMap' (in sampler2DShadow)
+0:952 add (3-component vector of float)
+0:952 'shadowUV' (in 3-component vector of float)
+0:952 vector-scale (3-component vector of float)
+0:952 0.500000
+0:952 0.500000
+0:952 0.000000
+0:952 'mapScale' (in float)
+0:952 0 (const int)
+0:953 Branch: Return with expression
+0:953 divide (float)
+0:953 'shadowColor' (float)
+0:953 4.000000
+0:958 Function Definition: getMixColor(vf4;vf4;f1;vf3;vf3; (4-component vector of float)
+0:958 Function Parameters:
+0:958 'matColor' (in 4-component vector of float)
+0:958 'matColor2' (in 4-component vector of float)
+0:958 'colorMixFactor' (in float)
+0:958 'eNormal' (in 3-component vector of float)
+0:958 'eyeVector' (in 3-component vector of float)
+0:960 Sequence
+0:960 Sequence
+0:960 move second child to first child (float)
+0:960 'cpdot' (float)
+0:960 max (float)
+0:960 Absolute value (float)
+0:960 dot-product (float)
+0:960 'eNormal' (in 3-component vector of float)
+0:960 'eyeVector' (in 3-component vector of float)
+0:960 0.010000
+0:961 move second child to first child (float)
+0:961 'cpdot' (float)
+0:961 clamp (float)
+0:961 subtract (float)
+0:961 component-wise multiply (float)
+0:961 1.200000
+0:961 pow (float)
+0:961 'cpdot' (float)
+0:961 'colorMixFactor' (in float)
+0:961 0.100000
+0:961 0.000000
+0:961 1.000000
+0:962 Branch: Return with expression
+0:962 mix (4-component vector of float)
+0:962 'matColor2' (in 4-component vector of float)
+0:962 'matColor' (in 4-component vector of float)
+0:962 'cpdot' (float)
+0:1002 Function Definition: main( (void)
+0:1002 Function Parameters:
+0:1005 Sequence
+0:1005 Sequence
+0:1005 move second child to first child (2-component vector of float)
+0:1005 'texCoords' (2-component vector of float)
+0:1005 0.000000
+0:1005 0.000000
+0:1012 Sequence
+0:1012 move second child to first child (3-component vector of float)
+0:1012 'tangent' (3-component vector of float)
+0:1012 normalize (3-component vector of float)
+0:1012 'v_Tangent' (smooth in 3-component vector of float)
+0:1016 Sequence
+0:1016 move second child to first child (3X3 matrix of float)
+0:1016 't2eMatrixTBN' (3X3 matrix of float)
+0:1016 Function Call: t2eGetMatrixTBN(mf33;vf3;vf3;b1; (3X3 matrix of float)
+0:1016 'gl_NormalMatrix' (uniform 3X3 matrix of float)
+0:1016 'v_Normal' (smooth in 3-component vector of float)
+0:1016 'tangent' (3-component vector of float)
+0:1016 Compare Not Equal (bool)
+0:1016 'doubleSided' (uniform float)
+0:1016 0.000000
+0:1113 Sequence
+0:1113 move second child to first child (2-component vector of float)
+0:1113 'newTexCoord' (2-component vector of float)
+0:1113 'texCoords' (2-component vector of float)
+0:1134 Sequence
+0:1134 move second child to first child (3-component vector of float)
+0:1134 'tBumpNormal' (3-component vector of float)
+0:1134 direct index (3-component vector of float)
+0:1134 't2eMatrixTBN' (3X3 matrix of float)
+0:1134 2 (const int)
+0:1145 Sequence
+0:1145 move second child to first child (4-component vector of float)
+0:1145 'mixColor' (4-component vector of float)
+0:1145 'matColor' (uniform 4-component vector of float)
+0:1148 Sequence
+0:1148 move second child to first child (float)
+0:1148 'fresnelColor' (float)
+0:1148 0.000000
+0:1158 Sequence
+0:1158 move second child to first child (3-component vector of float)
+0:1158 'lightNormal' (3-component vector of float)
+0:1158 'tBumpNormal' (3-component vector of float)
+0:? Sequence
+0:1202 move second child to first child (float)
+0:1202 'l_reflectModifier' (float)
+0:1202 'reflectModifier' (uniform float)
+0:1210 Sequence
+0:1210 move second child to first child (3-component vector of float)
+0:1210 'diffuseLight' (3-component vector of float)
+0:1210 0.000000
+0:1210 0.000000
+0:1210 0.000000
+0:1211 Sequence
+0:1211 move second child to first child (4-component vector of float)
+0:1211 'specularLight' (4-component vector of float)
+0:1211 0.000000
+0:1211 0.000000
+0:1211 0.000000
+0:1211 0.000000
+0:1212 Sequence
+0:1212 move second child to first child (4-component vector of float)
+0:1212 'microFlakeSpec' (4-component vector of float)
+0:1212 0.000000
+0:1212 0.000000
+0:1212 0.000000
+0:1212 0.000000
+0:1217 Sequence
+0:1217 move second child to first child (3-component vector of float)
+0:1217 'tLightDir' (3-component vector of float)
+0:1217 0.000000
+0:1217 0.000000
+0:1217 1.000000
+0:1218 Sequence
+0:1218 move second child to first child (3-component vector of float)
+0:1218 'tHalfVector' (3-component vector of float)
+0:1218 0.000000
+0:1218 0.000000
+0:1218 -1.000000
+0:1230 Sequence
+0:1230 Sequence
+0:1230 move second child to first child (3-component vector of float)
+0:1230 'tLightDir' (3-component vector of float)
+0:1230 Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)
+0:1230 Construct vec3 (3-component vector of float)
+0:1230 'lightDir0' (uniform 4-component vector of float)
+0:1230 'v_PositionEyeSpace' (smooth in 3-component vector of float)
+0:1230 direct index (float)
+0:1230 'lightType' (uniform 4-component vector of float)
+0:1230 0 (const int)
+0:1231 move second child to first child (3-component vector of float)
+0:1231 'tHalfVector' (3-component vector of float)
+0:1231 Function Call: eGetHalfVector(vf3;vf3; (3-component vector of float)
+0:1231 'tLightDir' (3-component vector of float)
+0:1231 'v_EyeDirection' (smooth in 3-component vector of float)
+0:1236 Function Call: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)
+0:1233 'lightNormal' (3-component vector of float)
+0:1234 'tLightDir' (3-component vector of float)
+0:1234 Construct vec3 (3-component vector of float)
+0:1234 'lightColor0' (uniform 4-component vector of float)
+0:1234 26 (const int)
+0:1235 'tHalfVector' (3-component vector of float)
+0:1235 Construct vec3 (3-component vector of float)
+0:1235 'lightSpec0' (uniform 4-component vector of float)
+0:1235 direct index (float)
+0:1235 'specularMaterial' (uniform 4-component vector of float)
+0:1235 3 (const int)
+0:1235 false (const bool)
+0:1235 false (const bool)
+0:1236 'diffuseLight' (3-component vector of float)
+0:1236 'specularLight' (4-component vector of float)
+0:1236 'transparency' (uniform float)
+0:1250 Sequence
+0:1250 Test condition and select (void)
+0:1250 Condition
+0:1250 Compare Greater Than (bool)
+0:1250 'isDynamicShadowVisible' (uniform float)
+0:1250 0.000000
+0:1250 true case
+0:1252 Sequence
+0:1252 Sequence
+0:1252 move second child to first child (float)
+0:1252 'shadowColor' (float)
+0:1252 Function Call: GetShadowColor(sS21;vf3;f1; (float)
+0:1252 'shadowMap2D' (uniform sampler2DShadow)
+0:1252 vector swizzle (3-component vector of float)
+0:1252 'v_projCoordSM' (smooth in 4-component vector of float)
+0:1252 Sequence
+0:1252 0 (const int)
+0:1252 1 (const int)
+0:1252 2 (const int)
+0:1252 'shadowMapScale' (uniform float)
+0:1258 vector scale second child into first child (3-component vector of float)
+0:1258 vector swizzle (3-component vector of float)
+0:1258 'diffuseLight' (3-component vector of float)
+0:1258 Sequence
+0:1258 0 (const int)
+0:1258 1 (const int)
+0:1258 2 (const int)
+0:1258 'shadowColor' (float)
+0:1259 vector scale second child into first child (3-component vector of float)
+0:1259 vector swizzle (3-component vector of float)
+0:1259 'specularLight' (4-component vector of float)
+0:1259 Sequence
+0:1259 0 (const int)
+0:1259 1 (const int)
+0:1259 2 (const int)
+0:1259 'shadowColor' (float)
+0:1299 Sequence
+0:1299 Sequence
+0:1299 move second child to first child (3-component vector of float)
+0:1299 'tLightDir' (3-component vector of float)
+0:1299 Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)
+0:1299 Construct vec3 (3-component vector of float)
+0:1299 'lightDir1' (uniform 4-component vector of float)
+0:1299 'v_PositionEyeSpace' (smooth in 3-component vector of float)
+0:1299 direct index (float)
+0:1299 'lightType' (uniform 4-component vector of float)
+0:1299 1 (const int)
+0:1300 move second child to first child (3-component vector of float)
+0:1300 'tHalfVector' (3-component vector of float)
+0:1300 Function Call: eGetHalfVector(vf3;vf3; (3-component vector of float)
+0:1300 'tLightDir' (3-component vector of float)
+0:1300 'v_EyeDirection' (smooth in 3-component vector of float)
+0:1305 Function Call: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)
+0:1302 'lightNormal' (3-component vector of float)
+0:1303 'tLightDir' (3-component vector of float)
+0:1303 Construct vec3 (3-component vector of float)
+0:1303 'lightColor1' (uniform 4-component vector of float)
+0:1303 26 (const int)
+0:1304 'tHalfVector' (3-component vector of float)
+0:1304 Construct vec3 (3-component vector of float)
+0:1304 'lightSpec1' (uniform 4-component vector of float)
+0:1304 direct index (float)
+0:1304 'specularMaterial' (uniform 4-component vector of float)
+0:1304 3 (const int)
+0:1304 false (const bool)
+0:1304 false (const bool)
+0:1305 'diffuseLight' (3-component vector of float)
+0:1305 'specularLight' (4-component vector of float)
+0:1305 'transparency' (uniform float)
+0:1323 Sequence
+0:1323 Sequence
+0:1323 move second child to first child (3-component vector of float)
+0:1323 'tLightDir' (3-component vector of float)
+0:1323 Function Call: eGetLightDir_DP(vf3;vf3;f1; (3-component vector of float)
+0:1323 Construct vec3 (3-component vector of float)
+0:1323 'lightDir2' (uniform 4-component vector of float)
+0:1323 'v_PositionEyeSpace' (smooth in 3-component vector of float)
+0:1323 direct index (float)
+0:1323 'lightType' (uniform 4-component vector of float)
+0:1323 2 (const int)
+0:1324 move second child to first child (3-component vector of float)
+0:1324 'tHalfVector' (3-component vector of float)
+0:1324 Function Call: eGetHalfVector(vf3;vf3; (3-component vector of float)
+0:1324 'tLightDir' (3-component vector of float)
+0:1324 'v_EyeDirection' (smooth in 3-component vector of float)
+0:1329 Function Call: AddSpecularAndDiffuse(vf3;vf3;vf3;i1;vf3;vf3;f1;b1;b1;vf3;vf4;f1; (void)
+0:1326 'lightNormal' (3-component vector of float)
+0:1327 'tLightDir' (3-component vector of float)
+0:1327 Construct vec3 (3-component vector of float)
+0:1327 'lightColor2' (uniform 4-component vector of float)
+0:1327 26 (const int)
+0:1328 'tHalfVector' (3-component vector of float)
+0:1328 Construct vec3 (3-component vector of float)
+0:1328 'lightSpec2' (uniform 4-component vector of float)
+0:1328 direct index (float)
+0:1328 'specularMaterial' (uniform 4-component vector of float)
+0:1328 3 (const int)
+0:1328 false (const bool)
+0:1328 false (const bool)
+0:1329 'diffuseLight' (3-component vector of float)
+0:1329 'specularLight' (4-component vector of float)
+0:1329 'transparency' (uniform float)
+0:1341 move second child to first child (3-component vector of float)
+0:1341 vector swizzle (3-component vector of float)
+0:1341 'specularTerm' (4-component vector of float)
+0:1341 Sequence
+0:1341 0 (const int)
+0:1341 1 (const int)
+0:1341 2 (const int)
+0:1341 Function Call: GetSpecularTerm(vf3;vf3; (3-component vector of float)
+0:1341 Construct vec3 (3-component vector of float)
+0:1341 'specularLight' (4-component vector of float)
+0:1341 vector-scale (3-component vector of float)
+0:1341 Construct vec3 (3-component vector of float)
+0:1341 'specularMaterial' (uniform 4-component vector of float)
+0:1341 'specularLightModifier' (uniform float)
+0:1369 Sequence
+0:1369 Sequence
+0:1369 move second child to first child (float)
+0:1369 'alpha' (float)
+0:1369 'transparency' (uniform float)
+0:1374 Sequence
+0:1374 move second child to first child (3-component vector of float)
+0:1374 'ambientAndDiffuseModifier' (3-component vector of float)
+0:1374 1.000000
+0:1374 1.000000
+0:1374 1.000000
+0:1377 Sequence
+0:1377 move second child to first child (3-component vector of float)
+0:1377 'ambientAndDiffuseModifier' (3-component vector of float)
+0:1377 0.000000
+0:1377 0.000000
+0:1377 0.000000
+0:1412 Sequence
+0:1412 add second child into first child (3-component vector of float)
+0:1412 'ambientAndDiffuseModifier' (3-component vector of float)
+0:1412 subtract (float)
+0:1412 1.000000
+0:1412 'l_reflectModifier' (float)
+0:1416 multiply second child into first child (3-component vector of float)
+0:1416 'ambientAndDiffuseModifier' (3-component vector of float)
+0:1416 vector swizzle (3-component vector of float)
+0:1416 'mixColor' (4-component vector of float)
+0:1416 Sequence
+0:1416 0 (const int)
+0:1416 1 (const int)
+0:1416 2 (const int)
+0:? Sequence
+0:1429 Sequence
+0:1429 move second child to first child (3-component vector of float)
+0:1429 'eReflection' (3-component vector of float)
+0:1429 Function Call: eGetReflection(vf3;vf3;vf3; (3-component vector of float)
+0:1429 direct index (3-component vector of float)
+0:1429 't2eMatrixTBN' (3X3 matrix of float)
+0:1429 2 (const int)
+0:1429 'envEyePosition' (uniform 3-component vector of float)
+0:1429 'v_PositionEyeSpace' (smooth in 3-component vector of float)
+0:1431 move second child to first child (3-component vector of float)
+0:1431 'eReflection' (3-component vector of float)
+0:1431 matrix-times-vector (3-component vector of float)
+0:1431 'e2lDirectionMat' (uniform 3X3 matrix of float)
+0:1431 'eReflection' (3-component vector of float)
+0:1434 Sequence
+0:1434 Sequence
+0:1434 move second child to first child (3-component vector of float)
+0:1434 'env' (3-component vector of float)
+0:1434 vector swizzle (3-component vector of float)
+0:1434 Function Call: GetEnv(vf3; (4-component vector of float)
+0:1434 'eReflection' (3-component vector of float)
+0:1434 Sequence
+0:1434 0 (const int)
+0:1434 1 (const int)
+0:1434 2 (const int)
+0:1435 Sequence
+0:1435 move second child to first child (float)
+0:1435 'envgs' (float)
+0:1435 add (float)
+0:1435 component-wise multiply (float)
+0:1435 direct index (float)
+0:1435 'env' (3-component vector of float)
+0:1435 0 (const int)
+0:1435 0.300000
+0:1435 component-wise multiply (float)
+0:1435 component-wise multiply (float)
+0:1435 component-wise multiply (float)
+0:1435 direct index (float)
+0:1435 'env' (3-component vector of float)
+0:1435 1 (const int)
+0:1435 0.590000
+0:1435 direct index (float)
+0:1435 'env' (3-component vector of float)
+0:1435 0 (const int)
+0:1435 0.110000
+0:1436 move second child to first child (float)
+0:1436 'l_reflectModifier' (float)
+0:1436 clamp (float)
+0:1436 component-wise multiply (float)
+0:1436 component-wise multiply (float)
+0:1436 'l_reflectModifier' (float)
+0:1436 'envgs' (float)
+0:1436 10.000000
+0:1436 'l_reflectModifier' (float)
+0:1436 1.000000
+0:1437 add second child into first child (3-component vector of float)
+0:1437 'ambientAndDiffuseModifier' (3-component vector of float)
+0:1437 vector-scale (3-component vector of float)
+0:1437 'l_reflectModifier' (float)
+0:1437 'env' (3-component vector of float)
+0:1454 move second child to first child (3-component vector of float)
+0:1454 'diffuseTerm' (3-component vector of float)
+0:1454 vector-scale (3-component vector of float)
+0:1454 'diffuseLight' (3-component vector of float)
+0:1454 'matDiffuse' (uniform float)
+0:1466 move second child to first child (3-component vector of float)
+0:1466 'ambientTerm' (3-component vector of float)
+0:1466 add (3-component vector of float)
+0:1466 vector-scale (3-component vector of float)
+0:1466 Construct vec3 (3-component vector of float)
+0:1466 'ambientLight' (uniform 4-component vector of float)
+0:1466 'matAmbient' (uniform float)
+0:1466 Construct vec3 (3-component vector of float)
+0:1466 'matEmissivity' (uniform float)
+0:1494 vector scale second child into first child (3-component vector of float)
+0:1494 'ambientTerm' (3-component vector of float)
+0:1494 1.000000
+0:1555 Sequence
+0:1555 move second child to first child (4-component vector of float)
+0:1555 'finalColor' (4-component vector of float)
+0:1559 Function Call: GetFinalColor(vf3;vf3;vf3;f1; (4-component vector of float)
+0:1556 component-wise multiply (3-component vector of float)
+0:1556 'ambientTerm' (3-component vector of float)
+0:1556 'ambientAndDiffuseModifier' (3-component vector of float)
+0:1557 component-wise multiply (3-component vector of float)
+0:1557 'diffuseTerm' (3-component vector of float)
+0:1557 'ambientAndDiffuseModifier' (3-component vector of float)
+0:1558 vector swizzle (3-component vector of float)
+0:1558 'specularTerm' (4-component vector of float)
+0:1558 Sequence
+0:1558 0 (const int)
+0:1558 1 (const int)
+0:1558 2 (const int)
+0:1559 'alpha' (float)
+0:1592 Sequence
+0:1592 Test condition and select (void)
+0:1592 Condition
+0:1592 Compare Equal (bool)
+0:1592 direct index (float)
+0:1592 'finalColor' (4-component vector of float)
+0:1592 3 (const int)
+0:1592 1.000000
+0:1592 true case
+0:1594 Sequence
+0:1594 move second child to first child (float)
+0:1594 direct index (float)
+0:1594 'finalColor' (4-component vector of float)
+0:1594 3 (const int)
+0:1594 clamp (float)
+0:1594 subtract (float)
+0:1594 1.000000
+0:1594 direct index (float)
+0:1594 'v_TexCoord' (smooth in 4-component vector of float)
+0:1594 3 (const int)
+0:1594 0.000000
+0:1594 1.000000
+0:1592 false case
+0:1598 Sequence
+0:1598 multiply second child into first child (float)
+0:1598 direct index (float)
+0:1598 'finalColor' (4-component vector of float)
+0:1598 3 (const int)
+0:1598 clamp (float)
+0:1598 subtract (float)
+0:1598 1.000000
+0:1598 component-wise multiply (float)
+0:1598 component-wise multiply (float)
+0:1598 direct index (float)
+0:1598 'v_TexCoord' (smooth in 4-component vector of float)
+0:1598 3 (const int)
+0:1598 direct index (float)
+0:1598 'v_TexCoord' (smooth in 4-component vector of float)
+0:1598 3 (const int)
+0:1598 direct index (float)
+0:1598 'v_TexCoord' (smooth in 4-component vector of float)
+0:1598 3 (const int)
+0:1598 0.000000
+0:1598 1.000000
+0:1611 move second child to first child (4-component vector of float)
+0:1611 'gl_FragColor' (fragColor 4-component vector of float)
+0:1611 'finalColor' (4-component vector of float)
+0:? Linker Objects
+0:? 'matColor' (uniform 4-component vector of float)
+0:? 'matColor2' (uniform 4-component vector of float)
+0:? 'colorMixFactor' (uniform float)
+0:? 'matDiffuse' (uniform float)
+0:? 'matEmissivity' (uniform float)
+0:? 'matAmbient' (uniform float)
+0:? 'specularMaterial' (uniform 4-component vector of float)
+0:? 'specularLightModifier' (uniform float)
+0:? 'ambientLight' (uniform 4-component vector of float)
+0:? 'lightDir0' (uniform 4-component vector of float)
+0:? 'lightColor0' (uniform 4-component vector of float)
+0:? 'lightSpec0' (uniform 4-component vector of float)
+0:? 'lightDir1' (uniform 4-component vector of float)
+0:? 'lightColor1' (uniform 4-component vector of float)
+0:? 'lightSpec1' (uniform 4-component vector of float)
+0:? 'lightDir2' (uniform 4-component vector of float)
+0:? 'lightColor2' (uniform 4-component vector of float)
+0:? 'lightSpec2' (uniform 4-component vector of float)
+0:? 'lightType' (uniform 4-component vector of float)
+0:? 'shadowMapScale' (uniform float)
+0:? 'isAOShadowVisible' (uniform float)
+0:? 'isDynamicShadowVisible' (uniform float)
+0:? 'floorPoint' (uniform 4-component vector of float)
+0:? 'floorNormal' (uniform 4-component vector of float)
+0:? 'center' (uniform 3-component vector of float)
+0:? 'faceWidth' (uniform float)
+0:? 'diffuseAverage' (uniform 3-component vector of float)
+0:? 'diffuseMapModifier' (uniform 3-component vector of float)
+0:? 'e2cCosmeticTextureTransform' (uniform 4X4 matrix of float)
+0:? 'envcolorAverage' (uniform 3-component vector of float)
+0:? 'envBrightness' (uniform float)
+0:? 'envColorWash' (uniform float)
+0:? 'envContrast' (uniform float)
+0:? 'envEyePosition' (uniform 3-component vector of float)
+0:? 'envColor' (uniform 3-component vector of float)
+0:? 'reflectModifier' (uniform float)
+0:? 'transparency' (uniform float)
+0:? 'doubleSided' (uniform float)
+0:? 'fresnelCoef1' (uniform float)
+0:? 'fresnelCoef2' (uniform float)
+0:? 'RimlightColor' (uniform 3-component vector of float)
+0:? 'specularColor' (uniform 4-component vector of float)
+0:? 'e2lDirectionMat' (uniform 3X3 matrix of float)
+0:? 'microFlakeShininess' (uniform float)
+0:? 'microFlakeCoef' (uniform float)
+0:? 'microFlakeColor' (uniform 4-component vector of float)
+0:? 'parallaxOffset' (uniform float)
+0:? 'parallaxPrecision' (uniform float)
+0:? 'shadowMap2D' (uniform sampler2DShadow)
+0:? 'AOTermMap2D' (uniform sampler2D)
+0:? 'reflectionMap2D' (uniform sampler2D)
+0:? 'envSphericalDiffuse' (uniform sampler2D)
+0:? 'envCubicDiffuse' (uniform samplerCube)
+0:? 'diffMap2D' (uniform sampler2D)
+0:? 'alphaMap' (uniform sampler2D)
+0:? 'envCubicSpecular' (uniform samplerCube)
+0:? 'envSphericalSpecular' (uniform sampler2D)
+0:? 'normalMap2D' (uniform sampler2D)
+0:? 'envSphericalBackground' (uniform sampler2D)
+0:? 'envCubicBackground' (uniform samplerCube)
+0:? 'v_TexCoord' (smooth in 4-component vector of float)
+0:? 'v_EyeDirection' (smooth in 3-component vector of float)
+0:? 'v_PositionEyeSpace' (smooth in 3-component vector of float)
+0:? 'v_Normal' (smooth in 3-component vector of float)
+0:? 'v_Tangent' (smooth in 3-component vector of float)
+0:? 'v_projCoordSM' (smooth in 4-component vector of float)
+0:? 'v_fragCoord' (smooth in 4-component vector of float)
+0:? 'v_projCoordRF' (smooth in 4-component vector of float)
+0:? 'v_FloorPoint' (smooth in 4-component vector of float)
+0:? 'v_patternCoord' (smooth in 2-component vector of float)
+
diff --git a/Test/baseResults/specExamples.frag.out b/Test/baseResults/specExamples.frag.out
new file mode 100644
index 0000000..6d49ed3
--- /dev/null
+++ b/Test/baseResults/specExamples.frag.out
@@ -0,0 +1,229 @@
+ERROR: 0:6: '=' : cannot convert from 'const uint' to 'int'
+ERROR: 0:20: '' : numeric literal too big
+ERROR: 0:21: '' : hexidecimal literal too big
+ERROR: 0:37: 'view' : redefinition
+ERROR: 0:68: 'lightPosition' : redefinition
+ERROR: 0:69: 'uniform' : cannot initialize this type of qualifier
+ERROR: 0:71: 'Material' : only uniform interface blocks are supported
+ERROR: 0:79: 'Light' : only uniform interface blocks are supported
+ERROR: 0:83: 'ColoredTexture' : only uniform interface blocks are supported
+ERROR: 0:87: 'Color' : redefinition
+ERROR: 0:89: 'gl_' : reserved built-in name
+ERROR: 0:92: 'origin_upper_left' : unrecognized layout identifier
+ERROR: 0:92: 'gl_' : reserved built-in name
+ERROR: 0:92: 'gl_FragCoord' : redefinition
+ERROR: 0:93: 'pixel_center_integer' : unrecognized layout identifier
+ERROR: 0:93: 'gl_' : reserved built-in name
+ERROR: 0:93: 'gl_FragCoord' : redefinition
+ERROR: 0:94: 'origin_upper_left' : unrecognized layout identifier
+ERROR: 0:94: 'pixel_center_integer' : unrecognized layout identifier
+ERROR: 0:94: 'gl_' : reserved built-in name
+ERROR: 0:94: 'gl_FragCoord' : redefinition
+ERROR: 0:96: 'early_fragment_tests' : unrecognized layout identifier
+ERROR: 0:99: 'local_size_x' : there is no such layout identifier taking an assigned value
+ERROR: 0:99: 'local_size_y' : there is no such layout identifier taking an assigned value
+ERROR: 0:100: 'local_size_x' : there is no such layout identifier taking an assigned value
+ERROR: 0:102: 'color' : redefinition
+ERROR: 0:103: 'index' : there is no such layout identifier taking an assigned value
+ERROR: 0:106: 'depth_greater' : unrecognized layout identifier
+ERROR: 0:106: 'gl_' : reserved built-in name
+ERROR: 0:109: 'gl_' : reserved built-in name
+ERROR: 0:109: 'gl_FragDepth' : redefinition
+ERROR: 0:112: 'depth_any' : unrecognized layout identifier
+ERROR: 0:112: 'gl_' : reserved built-in name
+ERROR: 0:112: 'gl_FragDepth' : redefinition
+ERROR: 0:115: 'depth_greater' : unrecognized layout identifier
+ERROR: 0:115: 'gl_' : reserved built-in name
+ERROR: 0:115: 'gl_FragDepth' : redefinition
+ERROR: 0:118: 'depth_less' : unrecognized layout identifier
+ERROR: 0:118: 'gl_' : reserved built-in name
+ERROR: 0:118: 'gl_FragDepth' : redefinition
+ERROR: 0:121: 'depth_unchanged' : unrecognized layout identifier
+ERROR: 0:121: 'gl_' : reserved built-in name
+ERROR: 0:121: 'gl_FragDepth' : redefinition
+ERROR: 0:123: 'gl_' : reserved built-in name
+ERROR: 0:124: 'gl_' : reserved built-in name
+ERROR: 0:124: 'gl_Color' : redefinition
+ERROR: 0:150: 'constructor' : constructing from a non-dereferenced array
+ERROR: 0:152: '=' : cannot convert from 'const 2-element array of 4-component vector of float' to '3-element array of 4-component vector of float'
+ERROR: 0:172: 'x' : undeclared identifier
+ERROR: 0:172: '[]' : scalar integer expression required
+ERROR: 0:172: 'length' : illegal vector field selection
+ERROR: 0:172: '' : function call, method, or subroutine call expected
+ERROR: 0:172: '' : no matching overloaded function found
+ERROR: 0:175: 'x' : undeclared identifier
+ERROR: 0:175: '[]' : scalar integer expression required
+ERROR: 0:175: 'b' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:175: 'a' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:175: 'length' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:175: '' : function call, method, or subroutine call expected
+ERROR: 0:175: '' : no matching overloaded function found
+ERROR: 0:178: '[]' : scalar integer expression required
+ERROR: 0:178: 's' : undeclared identifier
+ERROR: 0:178: 's' : left of '[' is not of type array, matrix, or vector
+ERROR: 0:178: 'a' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:178: 'length' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:178: '' : function call, method, or subroutine call expected
+ERROR: 0:178: '' : no matching overloaded function found
+ERROR: 0:193: '=' : cannot convert from 'const int' to 'structure'
+ERROR: 0:198: 'e' : redefinition
+ERROR: 0:217: '=' : cannot convert from 'const float' to 'unsized array of float'
+ERROR: 0:219: '=' : cannot convert from 'unsized array of float' to '5-element array of float'
+ERROR: 0:223: '=' : assigning non-constant to 'const float'
+ERROR: 0:226: 'in' : only allowed at global scope
+ERROR: 0:227: 'in' : only allowed at global scope
+ERROR: 0:228: 'in' : only allowed at global scope
+ERROR: 0:232: 'out' : only allowed at global scope
+ERROR: 76 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:5 Sequence
+0:5 move second child to first child (int)
+0:5 'a' (int)
+0:5 -1 (const int)
+0:7 Sequence
+0:7 move second child to first child (uint)
+0:7 'c' (uint)
+0:7 4294967295 (const uint)
+0:8 Sequence
+0:8 move second child to first child (uint)
+0:8 'd' (uint)
+0:8 4294967295 (const uint)
+0:9 Sequence
+0:9 move second child to first child (int)
+0:9 'e' (int)
+0:9 -1 (const int)
+0:13 Sequence
+0:13 move second child to first child (uint)
+0:13 'f' (uint)
+0:13 4294967295 (const uint)
+0:17 Sequence
+0:17 move second child to first child (int)
+0:17 'g' (int)
+0:17 -1294967296 (const int)
+0:19 Sequence
+0:19 move second child to first child (int)
+0:19 'h' (int)
+0:19 -1610612736 (const int)
+0:20 Sequence
+0:20 move second child to first child (int)
+0:20 'i' (int)
+0:20 -1 (const int)
+0:21 Sequence
+0:21 move second child to first child (int)
+0:21 'j' (int)
+0:21 -1 (const int)
+0:22 Sequence
+0:22 move second child to first child (int)
+0:22 'k' (int)
+0:22 -2147483648 (const int)
+0:23 Sequence
+0:23 move second child to first child (int)
+0:23 'l' (int)
+0:23 -2147483648 (const int)
+0:25 Sequence
+0:25 move second child to first child (float)
+0:25 'fb' (float)
+0:25 1.500000
+0:26 Sequence
+0:26 move second child to first child (double)
+0:26 'fd' (double)
+0:26 2.000000
+0:127 Function Definition: foo(f1[5]; (5-element array of float)
+0:127 Function Parameters:
+0:127 '' (in 5-element array of float)
+0:129 Sequence
+0:129 Branch: Return with expression
+0:129 3.400000
+0:129 4.200000
+0:129 5.000000
+0:129 5.200000
+0:129 1.100000
+0:137 Function Definition: main( (void)
+0:137 Function Parameters:
+0:140 Sequence
+0:140 Sequence
+0:140 Sequence
+0:140 move second child to first child (5-element array of float)
+0:140 'a' (5-element array of float)
+0:140 3.400000
+0:140 4.200000
+0:140 5.000000
+0:140 5.200000
+0:140 1.100000
+0:143 Sequence
+0:143 Sequence
+0:143 move second child to first child (5-element array of float)
+0:143 'a' (5-element array of float)
+0:143 3.400000
+0:143 4.200000
+0:143 5.000000
+0:143 5.200000
+0:143 1.100000
+0:? Sequence
+0:149 Sequence
+0:149 move second child to first child (2-element array of 4-component vector of float)
+0:149 'b' (2-element array of 4-component vector of float)
+0:149 0.000000
+0:149 0.000000
+0:149 0.000000
+0:149 0.000000
+0:149 0.100000
+0:149 0.100000
+0:149 0.100000
+0:149 0.100000
+0:150 Sequence
+0:150 move second child to first child (3-element array of 4-component vector of float)
+0:150 'a3' (3-element array of 4-component vector of float)
+0:150 Construct vec4 (3-element array of 4-component vector of float)
+0:? Sequence
+0:159 Sequence
+0:159 Sequence
+0:159 move second child to first child (5-element array of float)
+0:159 'b' (5-element array of float)
+0:159 'a' (5-element array of float)
+0:162 Sequence
+0:162 Sequence
+0:162 move second child to first child (5-element array of float)
+0:162 'b' (5-element array of float)
+0:162 'a' (5-element array of float)
+0:165 Sequence
+0:165 Sequence
+0:165 move second child to first child (5-element array of float)
+0:165 'b' (5-element array of float)
+0:165 1.000000
+0:165 2.000000
+0:165 3.000000
+0:165 4.000000
+0:165 5.000000
+0:167 5 (const int)
+0:? Sequence
+0:171 3 (const int)
+0:172 0.000000
+0:175 0.000000
+0:178 0.000000
+0:216 Sequence
+0:216 Sequence
+0:216 move second child to first child (5-element array of float)
+0:216 'a' (5-element array of float)
+0:216 3.400000
+0:216 4.200000
+0:216 5.000000
+0:216 5.200000
+0:216 1.100000
+0:218 Sequence
+0:218 move second child to first child (5-element array of float)
+0:218 'c' (5-element array of float)
+0:218 'a' (5-element array of float)
+0:? Linker Objects
+0:? 'normal' (smooth in 3-component vector of float)
+0:? 'TexCoord' (centroid smooth in 2-component vector of float)
+0:? 'Color' (invariant centroid smooth in 4-component vector of float)
+0:? 'temperature' (noperspective in float)
+0:? 'myColor' (flat in 3-component vector of float)
+0:? 'myTexCoord' (centroid noperspective in 2-component vector of float)
+0:? 'gl_FragCoord' (smooth in 4-component vector of float)
+0:? 'factor' (layout(location=3 ) out 4-component vector of float)
+0:? 'gl_FragDepth' (out float)
+0:? 'gl_Color' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/specExamples.vert.out b/Test/baseResults/specExamples.vert.out
new file mode 100644
index 0000000..7902a8c
--- /dev/null
+++ b/Test/baseResults/specExamples.vert.out
@@ -0,0 +1,253 @@
+ERROR: 0:5: 'Vertex' : only uniform interface blocks are supported
+ERROR: 0:10: 'Vertex2' : only uniform interface blocks are supported
+ERROR: 0:23: 'transforms' : redeclaration of array with size
+ERROR: 0:29: 's' : location qualifiers only appy to uniform, in, or out storage qualifiers
+ERROR: 0:31: 'triangles' : unrecognized layout identifier
+ERROR: 0:31: 'invocations' : there is no such layout identifier taking an assigned value
+ERROR: 0:33: 'lines' : unrecognized layout identifier
+ERROR: 0:35: 'triangle_strip' : unrecognized layout identifier
+ERROR: 0:35: 'max_vertices' : there is no such layout identifier taking an assigned value
+ERROR: 0:36: 'max_vertices' : there is no such layout identifier taking an assigned value
+ERROR: 0:37: 'triangle_strip' : unrecognized layout identifier
+ERROR: 0:41: 'stream' : there is no such layout identifier taking an assigned value
+ERROR: 0:43: 'stream' : there is no such layout identifier taking an assigned value
+ERROR: 0:45: 'stream' : there is no such layout identifier taking an assigned value
+ERROR: 0:46: 'stream' : there is no such layout identifier taking an assigned value
+ERROR: 0:47: 'stream' : there is no such layout identifier taking an assigned value
+ERROR: 0:45: 'Block1' : only uniform interface blocks are supported
+ERROR: 0:50: 'stream' : there is no such layout identifier taking an assigned value
+ERROR: 0:52: 'Block2' : only uniform interface blocks are supported
+ERROR: 0:55: 'stream' : there is no such layout identifier taking an assigned value
+ERROR: 0:77: 'binding' : not supported
+ERROR: 0:80: 's17' : redefinition
+ERROR: 0:85: 'binding' : not supported
+ERROR: 0:85: 'offset' : there is no such layout identifier taking an assigned value
+ERROR: 0:87: 'binding' : not supported
+ERROR: 0:89: 'binding' : not supported
+ERROR: 0:89: 'offset' : there is no such layout identifier taking an assigned value
+ERROR: 0:91: 'binding' : not supported
+ERROR: 0:91: 'bar' : redefinition
+ERROR: 0:92: 'offset' : there is no such layout identifier taking an assigned value
+ERROR: 0:92: 'bar' : redefinition
+ERROR: 0:94: 'binding' : not supported
+ERROR: 0:94: 'offset' : there is no such layout identifier taking an assigned value
+ERROR: 0:95: 'binding' : not supported
+ERROR: 0:96: 'binding' : not supported
+ERROR: 0:97: 'binding' : not supported
+ERROR: 0:106: '' : vertex input cannot be further qualified
+ERROR: 0:106: 'gl_' : reserved built-in name
+ERROR: 0:107: 'gl_' : reserved built-in name
+ERROR: 0:107: 'gl_FrontColor' : redefinition
+ERROR: 0:119: 'a' : redefinition
+ERROR: 0:127: 'Block2' : nameless block contains a member that already has a name at global scope
+ERROR: 0:132: 'shared' : not supported in this stage: vertex
+ERROR: 0:134: '' : function does not return a value: funcA
+ERROR: 0:136: '' : function does not return a value: funcB
+ERROR: 0:137: 'rgba32f' : unrecognized layout identifier
+ERROR: 0:138: 'rgba32f' : unrecognized layout identifier
+ERROR: 0:153: '' : function does not return a value: func3
+ERROR: 0:163: 'w' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:164: 'x' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:164: 'func' : no matching overloaded function found
+ERROR: 0:166: 'x' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:166: 'func2' : no matching overloaded function found
+ERROR: 0:167: 'x' : dot operator requires structure, array, vector, or matrix on left hand side
+ERROR: 0:191: '=' : cannot convert from 'const 4-component vector of float' to '2-element array of 4-component vector of float'
+ERROR: 0:192: 'constructor' : constructing from a non-dereferenced array
+ERROR: 0:193: 'constructor' : constructing from a non-dereferenced array
+ERROR: 0:194: 'constructor' : constructing from a non-dereferenced array
+ERROR: 58 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:134 Function Definition: funcA(I21; (4-component vector of float)
+0:134 Function Parameters:
+0:134 'a' (in image2D)
+0:136 Function Definition: funcB(I21; (4-component vector of float)
+0:136 Function Parameters:
+0:136 'a' (in image2D)
+0:140 Function Definition: func(f1;f1;f1;f1; (float)
+0:140 Function Parameters:
+0:140 'e' (in float)
+0:140 'f' (in float)
+0:140 'g' (in float)
+0:140 'h' (in float)
+0:142 Sequence
+0:142 Branch: Return with expression
+0:142 add (float)
+0:142 component-wise multiply (float)
+0:142 'e' (in float)
+0:142 'f' (in float)
+0:142 component-wise multiply (float)
+0:142 'g' (in float)
+0:142 'h' (in float)
+0:146 Function Definition: func2(f1;f1;f1;f1; (float)
+0:146 Function Parameters:
+0:146 'e' (in float)
+0:146 'f' (in float)
+0:146 'g' (in float)
+0:146 'h' (in float)
+0:148 Sequence
+0:148 Sequence
+0:148 move second child to first child (float)
+0:148 'result' (float)
+0:148 add (float)
+0:148 component-wise multiply (float)
+0:148 'e' (in float)
+0:148 'f' (in float)
+0:148 component-wise multiply (float)
+0:148 'g' (in float)
+0:148 'h' (in float)
+0:150 Branch: Return with expression
+0:150 'result' (float)
+0:153 Function Definition: func3(f1;f1;f1; (float)
+0:153 Function Parameters:
+0:153 'i' (in float)
+0:153 'j' (in float)
+0:153 'k' (out float)
+0:155 Sequence
+0:155 move second child to first child (float)
+0:155 'k' (out float)
+0:155 add (float)
+0:155 component-wise multiply (float)
+0:155 'i' (in float)
+0:155 'i' (in float)
+0:155 'j' (in float)
+0:158 Function Definition: main( (void)
+0:158 Function Parameters:
+0:160 Sequence
+0:160 Sequence
+0:160 move second child to first child (3-component vector of float)
+0:160 'r' (3-component vector of float)
+0:160 Construct vec3 (3-component vector of float)
+0:160 vector-scale (4-component vector of float)
+0:160 Convert int to float (float)
+0:160 'a' (uniform int)
+0:160 'b' (in 4-component vector of float)
+0:161 Sequence
+0:161 move second child to first child (3-component vector of float)
+0:161 's' (3-component vector of float)
+0:161 Construct vec3 (3-component vector of float)
+0:161 component-wise multiply (4-component vector of float)
+0:161 'c' (in 4-component vector of float)
+0:161 'd' (in 4-component vector of float)
+0:162 move second child to first child (3-component vector of float)
+0:162 vector swizzle (3-component vector of float)
+0:162 'v' (smooth out 4-component vector of float)
+0:162 Sequence
+0:162 0 (const int)
+0:162 1 (const int)
+0:162 2 (const int)
+0:162 add (3-component vector of float)
+0:162 'r' (3-component vector of float)
+0:162 's' (3-component vector of float)
+0:163 move second child to first child (float)
+0:163 direct index (float)
+0:163 'v' (smooth out 4-component vector of float)
+0:163 3 (const int)
+0:163 add (float)
+0:163 component-wise multiply (float)
+0:163 Convert int to float (float)
+0:163 'a' (uniform int)
+0:163 direct index (float)
+0:163 'b' (in 4-component vector of float)
+0:163 3 (const int)
+0:163 component-wise multiply (float)
+0:163 direct index (float)
+0:163 'c' (in 4-component vector of float)
+0:163 3 (const int)
+0:163 direct index (float)
+0:163 'd' (in 4-component vector of float)
+0:163 3 (const int)
+0:164 move second child to first child (float)
+0:164 direct index (float)
+0:164 'v' (smooth out 4-component vector of float)
+0:164 0 (const int)
+0:164 0.000000
+0:166 move second child to first child (float)
+0:166 direct index (float)
+0:166 'v' (smooth out 4-component vector of float)
+0:166 0 (const int)
+0:166 0.000000
+0:167 Function Call: func3(f1;f1;f1; (float)
+0:167 component-wise multiply (float)
+0:167 Convert int to float (float)
+0:167 'a' (uniform int)
+0:167 direct index (float)
+0:167 'b' (in 4-component vector of float)
+0:167 0 (const int)
+0:167 component-wise multiply (float)
+0:167 direct index (float)
+0:167 'c' (in 4-component vector of float)
+0:167 0 (const int)
+0:167 direct index (float)
+0:167 'd' (in 4-component vector of float)
+0:167 0 (const int)
+0:167 direct index (float)
+0:167 'v' (smooth out 4-component vector of float)
+0:167 0 (const int)
+0:169 Function Call: funcA(I21; (4-component vector of float)
+0:169 'img1' (uniform image2D)
+0:170 Function Call: funcB(I21; (4-component vector of float)
+0:170 'img2' (coherent uniform image2D)
+0:? Sequence
+0:178 Sequence
+0:178 move second child to first child (structure)
+0:178 'lightVar' (structure)
+0:178 3.000000
+0:178 1.000000
+0:178 2.000000
+0:178 3.000000
+0:? Sequence
+0:185 Sequence
+0:185 move second child to first child (5-element array of float)
+0:185 'a' (5-element array of float)
+0:185 Construct float (5-element array of float)
+0:185 'g' (float)
+0:185 1.000000
+0:185 'g' (float)
+0:185 2.300000
+0:185 'g' (float)
+0:188 move second child to first child (3-element array of float)
+0:188 'b' (3-element array of float)
+0:188 Construct float (3-element array of float)
+0:188 'g' (float)
+0:188 add (float)
+0:188 'g' (float)
+0:188 1.000000
+0:188 add (float)
+0:188 'g' (float)
+0:188 2.000000
+0:? Sequence
+0:192 Construct vec4 (3-element array of 4-component vector of float)
+0:193 Construct vec4 (3-element array of 4-component vector of float)
+0:194 Construct vec4 (3-element array of 4-component vector of float)
+0:? Linker Objects
+0:? 'transforms' (layout(shared ) uniform 4-element array of block)
+0:? 'normal' (layout(location=3 ) in 4-component vector of float)
+0:? 'var1' (smooth out 4-component vector of float)
+0:? 'var5' (smooth out 4-component vector of float)
+0:? 'var7' (smooth out 4-component vector of float)
+0:? '__anon__0' (layout(std140 ) uniform block)
+0:? '__anon__1' (layout(shared ) uniform block)
+0:? 's17' (uniform sampler2D)
+0:? 'a' (uniform int)
+0:? 'bar' (uniform int)
+0:? 'a2' (uniform int)
+0:? 'b2' (uniform int)
+0:? 'c2' (uniform int)
+0:? 'd2' (uniform int)
+0:? 'gl_FrontColor' (flat in 4-component vector of float)
+0:? 'Color' (smooth out 3-component vector of float)
+0:? 'Color4' (invariant centroid smooth out 3-component vector of float)
+0:? 'position' (smooth out 4-component vector of float)
+0:? 'Color5' (smooth out 3-component vector of float)
+0:? 'b' (in 4-component vector of float)
+0:? 'c' (in 4-component vector of float)
+0:? 'd' (in 4-component vector of float)
+0:? 'v' (smooth out 4-component vector of float)
+0:? '__anon__2' (layout(shared ) uniform block)
+0:? 'img1' (uniform image2D)
+0:? 'img2' (coherent uniform image2D)
+0:? 'gl_VertexID' (gl_VertexId int)
+0:? 'gl_InstanceID' (gl_InstanceId int)
+
diff --git a/Test/baseResults/structAssignment.frag.out b/Test/baseResults/structAssignment.frag.out
new file mode 100644
index 0000000..2eb679a
--- /dev/null
+++ b/Test/baseResults/structAssignment.frag.out
@@ -0,0 +1,42 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:29 Function Definition: main( (void)
+0:29 Function Parameters:
+0:? Sequence
+0:33 Test condition and select (void)
+0:33 Condition
+0:33 Compare Greater Than (bool)
+0:33 i: direct index for structure (int)
+0:33 s2_1: direct index for structure (structure)
+0:33 'foo3' (uniform structure)
+0:33 0 (const int)
+0:33 0 (const int)
+0:33 0 (const int)
+0:33 true case
+0:34 move second child to first child (structure)
+0:34 'locals2' (structure)
+0:34 s2_1: direct index for structure (structure)
+0:34 'foo3' (uniform structure)
+0:34 0 (const int)
+0:33 false case
+0:36 move second child to first child (structure)
+0:36 'locals2' (structure)
+0:36 'foo2' (uniform structure)
+0:38 move second child to first child (4-component vector of float)
+0:38 'gl_FragColor' (fragColor 4-component vector of float)
+0:38 vector-scale (4-component vector of float)
+0:38 f: direct index for structure (float)
+0:38 s1_1: direct index for structure (structure)
+0:38 'locals2' (structure)
+0:38 2 (const int)
+0:38 1 (const int)
+0:38 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:38 'sampler' (uniform sampler2D)
+0:38 'coord' (smooth in 2-component vector of float)
+0:? Linker Objects
+0:? 'sampler' (uniform sampler2D)
+0:? 'coord' (smooth in 2-component vector of float)
+0:? 'foo' (uniform structure)
+0:? 'foo2' (uniform structure)
+0:? 'foo3' (uniform structure)
+
diff --git a/Test/baseResults/structDeref.frag.out b/Test/baseResults/structDeref.frag.out
new file mode 100644
index 0000000..453ebcc
--- /dev/null
+++ b/Test/baseResults/structDeref.frag.out
@@ -0,0 +1,139 @@
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:41 Function Definition: main( (void)
+0:41 Function Parameters:
+0:? Sequence
+0:51 Test condition and select (void)
+0:51 Condition
+0:51 Compare Greater Than (bool)
+0:51 i: direct index for structure (int)
+0:51 direct index (structure)
+0:51 s2_1: direct index for structure (12-element array of structure)
+0:51 'foo3' (uniform structure)
+0:51 0 (const int)
+0:51 9 (const int)
+0:51 0 (const int)
+0:51 0 (const int)
+0:51 true case
+0:52 Sequence
+0:52 move second child to first child (float)
+0:52 f: direct index for structure (float)
+0:52 'locals2' (structure)
+0:52 1 (const int)
+0:52 1.000000
+0:53 move second child to first child (structure)
+0:53 s1_1: direct index for structure (structure)
+0:53 'locals2' (structure)
+0:53 2 (const int)
+0:53 0 (const int)
+0:53 1.000000
+0:53 0 (const int)
+0:54 move second child to first child (6-element array of float)
+0:54 'fArray' (6-element array of float)
+0:54 0.000000
+0:54 0.000000
+0:54 0.000000
+0:54 0.000000
+0:54 0.000000
+0:54 0.000000
+0:55 move second child to first child (structure)
+0:55 direct index (structure)
+0:55 'locals1Array' (10-element array of structure)
+0:55 6 (const int)
+0:55 'foo1' (uniform structure)
+0:56 move second child to first child (structure)
+0:56 'locals0' (structure)
+0:56 0 (const int)
+0:57 move second child to first child (structure)
+0:57 'locals00' (structure)
+0:57 0 (const int)
+0:51 false case
+0:59 Sequence
+0:59 move second child to first child (float)
+0:59 f: direct index for structure (float)
+0:59 'locals2' (structure)
+0:59 1 (const int)
+0:59 direct index (float)
+0:59 'coord' (smooth in 2-component vector of float)
+0:59 0 (const int)
+0:60 move second child to first child (structure)
+0:60 s1_1: direct index for structure (structure)
+0:60 'locals2' (structure)
+0:60 2 (const int)
+0:60 Construct structure (structure)
+0:60 1 (const int)
+0:60 direct index (float)
+0:60 'coord' (smooth in 2-component vector of float)
+0:60 1 (const int)
+0:60 'foo0' (uniform structure)
+0:61 move second child to first child (6-element array of float)
+0:61 'fArray' (6-element array of float)
+0:61 0.000000
+0:61 1.000000
+0:61 2.000000
+0:61 3.000000
+0:61 4.000000
+0:61 5.000000
+0:62 move second child to first child (structure)
+0:62 direct index (structure)
+0:62 'locals1Array' (10-element array of structure)
+0:62 6 (const int)
+0:62 s1_1: direct index for structure (structure)
+0:62 'locals2' (structure)
+0:62 2 (const int)
+0:63 move second child to first child (structure)
+0:63 'locals0' (structure)
+0:63 s0_1: direct index for structure (structure)
+0:63 'foo1' (uniform structure)
+0:63 2 (const int)
+0:64 move second child to first child (structure)
+0:64 'locals00' (structure)
+0:64 'foo00' (uniform structure)
+0:67 Test condition and select (void)
+0:67 Condition
+0:67 Compare Greater Than (bool)
+0:67 i: direct index for structure (int)
+0:67 'locals0' (structure)
+0:67 0 (const int)
+0:67 5 (const int)
+0:67 true case
+0:68 move second child to first child (structure)
+0:68 'locals0' (structure)
+0:68 s0_0: direct index for structure (structure)
+0:68 'locals00' (structure)
+0:68 0 (const int)
+0:70 move second child to first child (4-component vector of float)
+0:70 'gl_FragColor' (fragColor 4-component vector of float)
+0:70 vector-scale (4-component vector of float)
+0:70 add (float)
+0:70 add (float)
+0:70 add (float)
+0:70 Convert int to float (float)
+0:70 i: direct index for structure (int)
+0:70 'locals0' (structure)
+0:70 0 (const int)
+0:70 f: direct index for structure (float)
+0:70 direct index (structure)
+0:70 'locals1Array' (10-element array of structure)
+0:70 6 (const int)
+0:70 1 (const int)
+0:70 direct index (float)
+0:70 'fArray' (6-element array of float)
+0:70 3 (const int)
+0:70 f: direct index for structure (float)
+0:70 s1_1: direct index for structure (structure)
+0:70 'locals2' (structure)
+0:70 2 (const int)
+0:70 1 (const int)
+0:70 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:70 'sampler' (uniform sampler2D)
+0:70 'coord' (smooth in 2-component vector of float)
+0:? Linker Objects
+0:? 'sampler' (uniform sampler2D)
+0:? 'coord' (smooth in 2-component vector of float)
+0:? 'foo0' (uniform structure)
+0:? 'foo1' (uniform structure)
+0:? 'foo2' (uniform structure)
+0:? 'foo3' (uniform structure)
+0:? 'foo00' (uniform structure)
+
diff --git a/Test/baseResults/structure.frag.out b/Test/baseResults/structure.frag.out
new file mode 100644
index 0000000..a974662
--- /dev/null
+++ b/Test/baseResults/structure.frag.out
@@ -0,0 +1,62 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:20 Function Definition: main( (void)
+0:20 Function Parameters:
+0:22 Sequence
+0:22 Sequence
+0:22 move second child to first child (float)
+0:22 'scale' (float)
+0:22 0.000000
+0:24 Test condition and select (void)
+0:24 Condition
+0:24 Compare Greater Than (bool)
+0:24 direct index (int)
+0:24 i: direct index for structure (5-element array of int)
+0:24 direct index (uniform structure)
+0:24 'foo2' (uniform 5-element array of structure)
+0:24 3 (const int)
+0:24 0 (const int)
+0:24 4 (const int)
+0:24 0 (const int)
+0:24 true case
+0:25 move second child to first child (float)
+0:25 'scale' (float)
+0:25 direct index (float)
+0:25 direct index (4-component vector of float)
+0:25 color: direct index for structure (5-element array of 4-component vector of float)
+0:25 direct index (structure)
+0:25 s1_1: direct index for structure (7-element array of structure)
+0:25 direct index (uniform structure)
+0:25 'foo2' (uniform 5-element array of structure)
+0:25 3 (const int)
+0:25 2 (const int)
+0:25 2 (const int)
+0:25 2 (const int)
+0:25 3 (const int)
+0:25 0 (const int)
+0:24 false case
+0:27 move second child to first child (float)
+0:27 'scale' (float)
+0:27 direct index (float)
+0:27 f: direct index for structure (4-element array of float)
+0:27 direct index (structure)
+0:27 s1_1: direct index for structure (7-element array of structure)
+0:27 direct index (uniform structure)
+0:27 'foo2' (uniform 5-element array of structure)
+0:27 3 (const int)
+0:27 2 (const int)
+0:27 2 (const int)
+0:27 1 (const int)
+0:27 3 (const int)
+0:29 move second child to first child (4-component vector of float)
+0:29 'gl_FragColor' (fragColor 4-component vector of float)
+0:29 vector-scale (4-component vector of float)
+0:29 'scale' (float)
+0:29 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:29 'sampler' (uniform sampler2D)
+0:29 'coord' (smooth in 2-component vector of float)
+0:? Linker Objects
+0:? 'sampler' (uniform sampler2D)
+0:? 'coord' (smooth in 2-component vector of float)
+0:? 'foo' (uniform structure)
+
diff --git a/Test/baseResults/switch.frag.out b/Test/baseResults/switch.frag.out
new file mode 100644
index 0000000..01b2ce2
--- /dev/null
+++ b/Test/baseResults/switch.frag.out
@@ -0,0 +1,181 @@
+ERROR: 0:11: 'switch' : condition must be a scalar integer expression
+ERROR: 0:14: 'switch' : condition must be a scalar integer expression
+ERROR: 0:21: 'switch' : last case/default label must be followed by statements
+ERROR: 0:28: 'switch' : cannot have statements before first case/default label
+ERROR: 0:43: 'default' : duplicate label
+ERROR: 0:63: 'case' : duplicated value
+ERROR: 0:65: 'case' : scalar integer expression required
+ERROR: 0:67: 'case' : constant expression required
+ERROR: 0:89: '' : break statement only allowed in switch and loops
+ERROR: 9 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:6 Function Definition: main( (void)
+0:6 Function Parameters:
+0:? Sequence
+0:11 'f' (highp float)
+0:14 'a' (2-element array of mediump int)
+0:17 'c' (uniform mediump int)
+0:21 'c' (uniform mediump int)
+0:26 switch
+0:26 condition
+0:26 'c' (uniform mediump int)
+0:26 body
+0:26 Sequence
+0:28 Sequence
+0:28 move second child to first child (highp float)
+0:28 'f' (highp float)
+0:28 sine (highp float)
+0:28 'x' (smooth in highp float)
+0:29 case: with expression
+0:29 2 (const int)
+0:? Sequence
+0:30 move second child to first child (highp float)
+0:30 'f' (highp float)
+0:30 cosine (highp float)
+0:30 'x' (smooth in highp float)
+0:31 Branch: Break
+0:34 switch
+0:34 condition
+0:34 'c' (uniform mediump int)
+0:34 body
+0:34 Sequence
+0:35 default:
+0:? Sequence
+0:36 Branch: Break
+0:37 case: with expression
+0:37 1 (const int)
+0:? Sequence
+0:38 move second child to first child (highp float)
+0:38 'f' (highp float)
+0:38 sine (highp float)
+0:38 'x' (smooth in highp float)
+0:39 Branch: Break
+0:40 case: with expression
+0:40 2 (const int)
+0:? Sequence
+0:41 move second child to first child (highp float)
+0:41 'f' (highp float)
+0:41 cosine (highp float)
+0:41 'x' (smooth in highp float)
+0:42 Branch: Break
+0:43 default:
+0:? Sequence
+0:44 move second child to first child (highp float)
+0:44 'f' (highp float)
+0:44 tangent (highp float)
+0:44 'x' (smooth in highp float)
+0:47 switch
+0:47 condition
+0:47 'c' (uniform mediump int)
+0:47 body
+0:47 Sequence
+0:48 case: with expression
+0:48 1 (const int)
+0:? Sequence
+0:49 move second child to first child (highp float)
+0:49 'f' (highp float)
+0:49 sine (highp float)
+0:49 'x' (smooth in highp float)
+0:50 Branch: Break
+0:51 case: with expression
+0:51 2 (const int)
+0:? Sequence
+0:52 switch
+0:52 condition
+0:52 'd' (uniform mediump int)
+0:52 body
+0:52 Sequence
+0:53 case: with expression
+0:53 1 (const int)
+0:? Sequence
+0:54 move second child to first child (highp float)
+0:54 'f' (highp float)
+0:54 component-wise multiply (highp float)
+0:54 component-wise multiply (highp float)
+0:54 'x' (smooth in highp float)
+0:54 'x' (smooth in highp float)
+0:54 'x' (smooth in highp float)
+0:55 Branch: Break
+0:56 case: with expression
+0:56 2 (const int)
+0:? Sequence
+0:57 move second child to first child (highp float)
+0:57 'f' (highp float)
+0:57 component-wise multiply (highp float)
+0:57 'x' (smooth in highp float)
+0:57 'x' (smooth in highp float)
+0:58 Branch: Break
+0:60 Branch: Break
+0:61 default:
+0:? Sequence
+0:62 move second child to first child (highp float)
+0:62 'f' (highp float)
+0:62 tangent (highp float)
+0:62 'x' (smooth in highp float)
+0:63 case: with expression
+0:63 1 (const int)
+0:? Sequence
+0:64 Branch: Break
+0:65 case: with expression
+0:65 3.800000
+0:? Sequence
+0:66 Branch: Break
+0:67 case: with expression
+0:67 'c' (uniform mediump int)
+0:? Sequence
+0:68 Branch: Break
+0:71 switch
+0:71 condition
+0:71 'c' (uniform mediump int)
+0:71 body
+0:71 Sequence
+0:72 case: with expression
+0:72 1 (const int)
+0:? Sequence
+0:73 move second child to first child (highp float)
+0:73 'f' (highp float)
+0:73 sine (highp float)
+0:73 'x' (smooth in highp float)
+0:74 Branch: Break
+0:75 case: with expression
+0:75 2 (const int)
+0:? Sequence
+0:76 switch
+0:76 condition
+0:76 'd' (uniform mediump int)
+0:76 body
+0:76 Sequence
+0:77 case: with expression
+0:77 1 (const int)
+0:? Sequence
+0:78 move second child to first child (highp float)
+0:78 'f' (highp float)
+0:78 component-wise multiply (highp float)
+0:78 component-wise multiply (highp float)
+0:78 'x' (smooth in highp float)
+0:78 'x' (smooth in highp float)
+0:78 'x' (smooth in highp float)
+0:79 Branch: Break
+0:80 case: with expression
+0:80 2 (const int)
+0:? Sequence
+0:81 move second child to first child (highp float)
+0:81 'f' (highp float)
+0:81 component-wise multiply (highp float)
+0:81 'x' (smooth in highp float)
+0:81 'x' (smooth in highp float)
+0:82 Branch: Break
+0:84 Branch: Break
+0:85 default:
+0:? Sequence
+0:86 move second child to first child (highp float)
+0:86 'f' (highp float)
+0:86 tangent (highp float)
+0:86 'x' (smooth in highp float)
+0:89 Branch: Break
+0:? Linker Objects
+0:? 'c' (uniform mediump int)
+0:? 'd' (uniform mediump int)
+0:? 'x' (smooth in highp float)
+
diff --git a/Test/baseResults/swizzle.frag.out b/Test/baseResults/swizzle.frag.out
new file mode 100644
index 0000000..103c6b0
--- /dev/null
+++ b/Test/baseResults/swizzle.frag.out
@@ -0,0 +1,171 @@
+0:? Sequence
+0:9 Function Definition: main( (void)
+0:9 Function Parameters:
+0:11 Sequence
+0:11 Sequence
+0:11 move second child to first child (float)
+0:11 'blendscale' (float)
+0:11 1.789000
+0:13 Sequence
+0:13 move second child to first child (4-component vector of float)
+0:13 'w' (4-component vector of float)
+0:13 'u' (uniform 4-component vector of float)
+0:15 Sequence
+0:15 move second child to first child (4-component vector of float)
+0:15 'w_dep' (4-component vector of float)
+0:15 'u' (uniform 4-component vector of float)
+0:16 Sequence
+0:16 move second child to first child (4-component vector of float)
+0:16 'w_reorder' (4-component vector of float)
+0:16 'u' (uniform 4-component vector of float)
+0:17 Sequence
+0:17 move second child to first child (4-component vector of float)
+0:17 'w2' (4-component vector of float)
+0:17 'u' (uniform 4-component vector of float)
+0:18 Sequence
+0:18 move second child to first child (4-component vector of float)
+0:18 'w_flow' (4-component vector of float)
+0:18 'u' (uniform 4-component vector of float)
+0:20 move second child to first child (float)
+0:20 direct index (float)
+0:20 'w_reorder' (4-component vector of float)
+0:20 2 (const int)
+0:20 'blendscale' (float)
+0:22 move second child to first child (2-component vector of float)
+0:22 vector swizzle (2-component vector of float)
+0:22 'w' (4-component vector of float)
+0:22 Sequence
+0:22 3 (const int)
+0:22 1 (const int)
+0:22 't' (smooth in 2-component vector of float)
+0:24 move second child to first child (float)
+0:24 direct index (float)
+0:24 'w_reorder' (4-component vector of float)
+0:24 0 (const int)
+0:24 'blendscale' (float)
+0:26 move second child to first child (4-component vector of float)
+0:26 vector swizzle (4-component vector of float)
+0:26 'w2' (4-component vector of float)
+0:26 Sequence
+0:26 0 (const int)
+0:26 1 (const int)
+0:26 2 (const int)
+0:26 3 (const int)
+0:26 vector swizzle (4-component vector of float)
+0:26 'u' (uniform 4-component vector of float)
+0:26 Sequence
+0:26 2 (const int)
+0:26 3 (const int)
+0:26 0 (const int)
+0:26 1 (const int)
+0:28 move second child to first child (float)
+0:28 direct index (float)
+0:28 'w_reorder' (4-component vector of float)
+0:28 1 (const int)
+0:28 'blendscale' (float)
+0:30 move second child to first child (2-component vector of float)
+0:30 vector swizzle (2-component vector of float)
+0:30 'w_dep' (4-component vector of float)
+0:30 Sequence
+0:30 0 (const int)
+0:30 1 (const int)
+0:30 vector swizzle (2-component vector of float)
+0:30 'w2' (4-component vector of float)
+0:30 Sequence
+0:30 0 (const int)
+0:30 2 (const int)
+0:31 move second child to first child (2-component vector of float)
+0:31 vector swizzle (2-component vector of float)
+0:31 'w_dep' (4-component vector of float)
+0:31 Sequence
+0:31 2 (const int)
+0:31 3 (const int)
+0:31 't' (smooth in 2-component vector of float)
+0:33 move second child to first child (2-component vector of float)
+0:33 vector swizzle (2-component vector of float)
+0:33 'w_undef' (4-component vector of float)
+0:33 Sequence
+0:33 0 (const int)
+0:33 1 (const int)
+0:33 vector swizzle (2-component vector of float)
+0:33 'u' (uniform 4-component vector of float)
+0:33 Sequence
+0:33 2 (const int)
+0:33 3 (const int)
+0:35 Test condition and select (void)
+0:35 Condition
+0:35 'p' (uniform bool)
+0:35 true case
+0:36 move second child to first child (float)
+0:36 direct index (float)
+0:36 'w_flow' (4-component vector of float)
+0:36 0 (const int)
+0:36 direct index (float)
+0:36 't' (smooth in 2-component vector of float)
+0:36 0 (const int)
+0:35 false case
+0:38 move second child to first child (float)
+0:38 direct index (float)
+0:38 'w_flow' (4-component vector of float)
+0:38 0 (const int)
+0:38 direct index (float)
+0:38 't' (smooth in 2-component vector of float)
+0:38 1 (const int)
+0:40 move second child to first child (4-component vector of float)
+0:40 'gl_FragColor' (fragColor 4-component vector of float)
+0:40 mix (4-component vector of float)
+0:40 'w_reorder' (4-component vector of float)
+0:40 'w_undef' (4-component vector of float)
+0:40 component-wise multiply (4-component vector of float)
+0:40 component-wise multiply (4-component vector of float)
+0:40 component-wise multiply (4-component vector of float)
+0:40 'w' (4-component vector of float)
+0:40 'w2' (4-component vector of float)
+0:40 'w_dep' (4-component vector of float)
+0:40 'w_flow' (4-component vector of float)
+0:42 Sequence
+0:42 move second child to first child (2-component vector of float)
+0:42 'c' (2-component vector of float)
+0:42 't' (smooth in 2-component vector of float)
+0:43 Sequence
+0:43 move second child to first child (4-component vector of float)
+0:43 'rep' (4-component vector of float)
+0:43 0.000000
+0:43 0.000000
+0:43 0.000000
+0:43 1.000000
+0:45 Test condition and select (void)
+0:45 Condition
+0:45 Compare Less Than (bool)
+0:45 direct index (float)
+0:45 'c' (2-component vector of float)
+0:45 0 (const int)
+0:45 0.000000
+0:45 true case
+0:46 multiply second child into first child (float)
+0:46 direct index (float)
+0:46 'c' (2-component vector of float)
+0:46 0 (const int)
+0:46 -1.000000
+0:48 Test condition and select (void)
+0:48 Condition
+0:48 Compare Less Than or Equal (bool)
+0:48 direct index (float)
+0:48 'c' (2-component vector of float)
+0:48 0 (const int)
+0:48 1.000000
+0:48 true case
+0:49 move second child to first child (float)
+0:49 direct index (float)
+0:49 'rep' (4-component vector of float)
+0:49 0 (const int)
+0:49 3.400000
+0:51 add second child into first child (4-component vector of float)
+0:51 'gl_FragColor' (fragColor 4-component vector of float)
+0:51 'rep' (4-component vector of float)
+0:? Linker Objects
+0:? 'blend' (uniform float)
+0:? 'u' (uniform 4-component vector of float)
+0:? 'p' (uniform bool)
+0:? 't' (smooth in 2-component vector of float)
+
diff --git a/Test/baseResults/syntaxError.frag.out b/Test/baseResults/syntaxError.frag.out
new file mode 100644
index 0000000..44892c2
--- /dev/null
+++ b/Test/baseResults/syntaxError.frag.out
@@ -0,0 +1,5 @@
+ERROR: 0:9: 'vec5' : undeclared identifier
+ERROR: 0:9: '' : syntax error
+ERROR: 2 compilation errors. No code generated.
+
+
diff --git a/Test/baseResults/test.frag.out b/Test/baseResults/test.frag.out
new file mode 100644
index 0000000..582d2d3
--- /dev/null
+++ b/Test/baseResults/test.frag.out
@@ -0,0 +1,49 @@
+0:? Sequence
+0:13 Function Definition: main( (void)
+0:13 Function Parameters:
+0:15 Sequence
+0:15 Sequence
+0:15 move second child to first child (float)
+0:15 'blendscale' (float)
+0:15 1.789000
+0:17 Sequence
+0:17 move second child to first child (4-component vector of float)
+0:17 'v' (4-component vector of float)
+0:17 vector swizzle (4-component vector of float)
+0:17 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:17 'texSampler2D' (uniform sampler2D)
+0:17 divide (2-component vector of float)
+0:17 add (2-component vector of float)
+0:17 't' (smooth in 2-component vector of float)
+0:17 'scale' (uniform 2-component vector of float)
+0:17 'scale' (uniform 2-component vector of float)
+0:17 Sequence
+0:17 3 (const int)
+0:17 2 (const int)
+0:17 1 (const int)
+0:17 0 (const int)
+0:19 Sequence
+0:19 move second child to first child (4-component vector of float)
+0:19 'w' (4-component vector of float)
+0:19 add (4-component vector of float)
+0:19 Function Call: texture3D(s31;vf3; (4-component vector of float)
+0:19 'texSampler3D' (uniform sampler3D)
+0:19 'coords' (smooth in 3-component vector of float)
+0:19 'v' (4-component vector of float)
+0:21 move second child to first child (4-component vector of float)
+0:21 'gl_FragColor' (fragColor 4-component vector of float)
+0:21 mix (4-component vector of float)
+0:21 'w' (4-component vector of float)
+0:21 'u' (uniform 4-component vector of float)
+0:21 component-wise multiply (float)
+0:21 'blend' (uniform float)
+0:21 'blendscale' (float)
+0:? Linker Objects
+0:? 'texSampler2D' (uniform sampler2D)
+0:? 'texSampler3D' (uniform sampler3D)
+0:? 'blend' (uniform float)
+0:? 'scale' (uniform 2-component vector of float)
+0:? 'u' (uniform 4-component vector of float)
+0:? 't' (smooth in 2-component vector of float)
+0:? 'coords' (smooth in 3-component vector of float)
+
diff --git a/Test/baseResults/texture.frag.out b/Test/baseResults/texture.frag.out
new file mode 100644
index 0000000..806c38f
--- /dev/null
+++ b/Test/baseResults/texture.frag.out
@@ -0,0 +1,270 @@
+WARNING: 0:14: varying deprecated in version 130; may be removed in future release
+WARNING: 0:15: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:17 Function Definition: main( (void)
+0:17 Function Parameters:
+0:19 Sequence
+0:19 Sequence
+0:19 move second child to first child (float)
+0:19 'blendscale' (float)
+0:19 1.789000
+0:20 Sequence
+0:20 move second child to first child (float)
+0:20 'bias' (float)
+0:20 2.000000
+0:21 Sequence
+0:21 move second child to first child (float)
+0:21 'lod' (float)
+0:21 3.000000
+0:22 Sequence
+0:22 move second child to first child (float)
+0:22 'proj' (float)
+0:22 2.000000
+0:23 Sequence
+0:23 move second child to first child (float)
+0:23 'coords1D' (float)
+0:23 1.789000
+0:24 Sequence
+0:24 move second child to first child (3-component vector of float)
+0:24 'coords3D' (3-component vector of float)
+0:24 1.789000
+0:24 2.718000
+0:24 3.453000
+0:25 Sequence
+0:25 move second child to first child (4-component vector of float)
+0:25 'coords4D' (4-component vector of float)
+0:25 1.789000
+0:25 2.718000
+0:25 3.453000
+0:25 2.000000
+0:26 Sequence
+0:26 move second child to first child (4-component vector of float)
+0:26 'color' (4-component vector of float)
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:26 0.000000
+0:28 add second child into first child (4-component vector of float)
+0:28 'color' (4-component vector of float)
+0:28 Function Call: texture1D(s11;f1; (4-component vector of float)
+0:28 'texSampler1D' (uniform sampler1D)
+0:28 'coords1D' (float)
+0:29 add second child into first child (4-component vector of float)
+0:29 'color' (4-component vector of float)
+0:29 Function Call: texture1D(s11;f1;f1; (4-component vector of float)
+0:29 'texSampler1D' (uniform sampler1D)
+0:29 'coords1D' (float)
+0:29 'bias' (float)
+0:30 add second child into first child (4-component vector of float)
+0:30 'color' (4-component vector of float)
+0:30 Function Call: texture1DProj(s11;vf2; (4-component vector of float)
+0:30 'texSampler1D' (uniform sampler1D)
+0:30 'coords2D' (smooth in 2-component vector of float)
+0:31 add second child into first child (4-component vector of float)
+0:31 'color' (4-component vector of float)
+0:31 Function Call: texture1DProj(s11;vf4; (4-component vector of float)
+0:31 'texSampler1D' (uniform sampler1D)
+0:31 'coords4D' (4-component vector of float)
+0:32 add second child into first child (4-component vector of float)
+0:32 'color' (4-component vector of float)
+0:32 Function Call: texture1DProj(s11;vf2;f1; (4-component vector of float)
+0:32 'texSampler1D' (uniform sampler1D)
+0:32 'coords2D' (smooth in 2-component vector of float)
+0:32 'bias' (float)
+0:33 add second child into first child (4-component vector of float)
+0:33 'color' (4-component vector of float)
+0:33 Function Call: texture1DProj(s11;vf4;f1; (4-component vector of float)
+0:33 'texSampler1D' (uniform sampler1D)
+0:33 'coords4D' (4-component vector of float)
+0:33 'bias' (float)
+0:35 add second child into first child (4-component vector of float)
+0:35 'color' (4-component vector of float)
+0:35 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:35 'texSampler2D' (uniform sampler2D)
+0:35 'coords2D' (smooth in 2-component vector of float)
+0:36 add second child into first child (4-component vector of float)
+0:36 'color' (4-component vector of float)
+0:36 Function Call: texture2D(s21;vf2;f1; (4-component vector of float)
+0:36 'texSampler2D' (uniform sampler2D)
+0:36 'coords2D' (smooth in 2-component vector of float)
+0:36 'bias' (float)
+0:37 add second child into first child (4-component vector of float)
+0:37 'color' (4-component vector of float)
+0:37 Function Call: texture2DProj(s21;vf3; (4-component vector of float)
+0:37 'texSampler2D' (uniform sampler2D)
+0:37 'coords3D' (3-component vector of float)
+0:38 add second child into first child (4-component vector of float)
+0:38 'color' (4-component vector of float)
+0:38 Function Call: texture2DProj(s21;vf4;f1; (4-component vector of float)
+0:38 'texSampler2D' (uniform sampler2D)
+0:38 'coords4D' (4-component vector of float)
+0:38 'bias' (float)
+0:40 add second child into first child (4-component vector of float)
+0:40 'color' (4-component vector of float)
+0:40 Function Call: texture3D(s31;vf3; (4-component vector of float)
+0:40 'texSampler3D' (uniform sampler3D)
+0:40 'coords3D' (3-component vector of float)
+0:41 add second child into first child (4-component vector of float)
+0:41 'color' (4-component vector of float)
+0:41 Function Call: texture3D(s31;vf3;f1; (4-component vector of float)
+0:41 'texSampler3D' (uniform sampler3D)
+0:41 'coords3D' (3-component vector of float)
+0:41 'bias' (float)
+0:42 add second child into first child (4-component vector of float)
+0:42 'color' (4-component vector of float)
+0:42 Function Call: texture3DProj(s31;vf4; (4-component vector of float)
+0:42 'texSampler3D' (uniform sampler3D)
+0:42 'coords4D' (4-component vector of float)
+0:43 add second child into first child (4-component vector of float)
+0:43 'color' (4-component vector of float)
+0:43 Function Call: texture3DProj(s31;vf4;f1; (4-component vector of float)
+0:43 'texSampler3D' (uniform sampler3D)
+0:43 'coords4D' (4-component vector of float)
+0:43 'bias' (float)
+0:45 add second child into first child (4-component vector of float)
+0:45 'color' (4-component vector of float)
+0:45 Function Call: textureCube(sC1;vf3; (4-component vector of float)
+0:45 'texSamplerCube' (uniform samplerCube)
+0:45 'coords3D' (3-component vector of float)
+0:46 add second child into first child (4-component vector of float)
+0:46 'color' (4-component vector of float)
+0:46 Function Call: textureCube(sC1;vf3;f1; (4-component vector of float)
+0:46 'texSamplerCube' (uniform samplerCube)
+0:46 'coords3D' (3-component vector of float)
+0:46 'bias' (float)
+0:48 add second child into first child (4-component vector of float)
+0:48 'color' (4-component vector of float)
+0:48 Function Call: shadow1D(sS11;vf3; (4-component vector of float)
+0:48 'shadowSampler1D' (uniform sampler1DShadow)
+0:48 'coords3D' (3-component vector of float)
+0:49 add second child into first child (4-component vector of float)
+0:49 'color' (4-component vector of float)
+0:49 Function Call: shadow1D(sS11;vf3;f1; (4-component vector of float)
+0:49 'shadowSampler1D' (uniform sampler1DShadow)
+0:49 'coords3D' (3-component vector of float)
+0:49 'bias' (float)
+0:50 add second child into first child (4-component vector of float)
+0:50 'color' (4-component vector of float)
+0:50 Function Call: shadow2D(sS21;vf3; (4-component vector of float)
+0:50 'shadowSampler2D' (uniform sampler2DShadow)
+0:50 'coords3D' (3-component vector of float)
+0:51 add second child into first child (4-component vector of float)
+0:51 'color' (4-component vector of float)
+0:51 Function Call: shadow2D(sS21;vf3;f1; (4-component vector of float)
+0:51 'shadowSampler2D' (uniform sampler2DShadow)
+0:51 'coords3D' (3-component vector of float)
+0:51 'bias' (float)
+0:52 add second child into first child (4-component vector of float)
+0:52 'color' (4-component vector of float)
+0:52 Function Call: shadow1DProj(sS11;vf4; (4-component vector of float)
+0:52 'shadowSampler1D' (uniform sampler1DShadow)
+0:52 'coords4D' (4-component vector of float)
+0:53 add second child into first child (4-component vector of float)
+0:53 'color' (4-component vector of float)
+0:53 Function Call: shadow1DProj(sS11;vf4;f1; (4-component vector of float)
+0:53 'shadowSampler1D' (uniform sampler1DShadow)
+0:53 'coords4D' (4-component vector of float)
+0:53 'bias' (float)
+0:54 add second child into first child (4-component vector of float)
+0:54 'color' (4-component vector of float)
+0:54 Function Call: shadow2DProj(sS21;vf4; (4-component vector of float)
+0:54 'shadowSampler2D' (uniform sampler2DShadow)
+0:54 'coords4D' (4-component vector of float)
+0:55 add second child into first child (4-component vector of float)
+0:55 'color' (4-component vector of float)
+0:55 Function Call: shadow2DProj(sS21;vf4;f1; (4-component vector of float)
+0:55 'shadowSampler2D' (uniform sampler2DShadow)
+0:55 'coords4D' (4-component vector of float)
+0:55 'bias' (float)
+0:57 Sequence
+0:57 move second child to first child (2-component vector of int)
+0:57 'iCoords2D' (2-component vector of int)
+0:57 0 (const int)
+0:57 5 (const int)
+0:58 Sequence
+0:58 move second child to first child (int)
+0:58 'iLod' (int)
+0:58 1 (const int)
+0:60 add second child into first child (4-component vector of float)
+0:60 'color' (4-component vector of float)
+0:60 Function Call: texelFetch(s21;vi2;i1; (4-component vector of float)
+0:60 'texSampler2D' (uniform sampler2D)
+0:60 'iCoords2D' (2-component vector of int)
+0:60 'iLod' (int)
+0:62 Sequence
+0:62 move second child to first child (2-component vector of float)
+0:62 'gradX' (2-component vector of float)
+0:62 dPdx (2-component vector of float)
+0:62 'coords2D' (smooth in 2-component vector of float)
+0:63 Sequence
+0:63 move second child to first child (2-component vector of float)
+0:63 'gradY' (2-component vector of float)
+0:63 dPdy (2-component vector of float)
+0:63 'coords2D' (smooth in 2-component vector of float)
+0:64 Sequence
+0:64 move second child to first child (2-component vector of int)
+0:64 'offset' (2-component vector of int)
+0:64 3 (const int)
+0:64 -7 (const int)
+0:66 add second child into first child (4-component vector of float)
+0:66 'color' (4-component vector of float)
+0:66 Function Call: textureGrad(s21;vf2;vf2;vf2; (4-component vector of float)
+0:66 'texSampler2D' (uniform sampler2D)
+0:66 'coords2D' (smooth in 2-component vector of float)
+0:66 'gradX' (2-component vector of float)
+0:66 'gradY' (2-component vector of float)
+0:67 add second child into first child (4-component vector of float)
+0:67 'color' (4-component vector of float)
+0:67 Function Call: textureProjGrad(s21;vf3;vf2;vf2; (4-component vector of float)
+0:67 'texSampler2D' (uniform sampler2D)
+0:67 Construct vec3 (3-component vector of float)
+0:67 'coords2D' (smooth in 2-component vector of float)
+0:67 'proj' (float)
+0:67 'gradX' (2-component vector of float)
+0:67 'gradY' (2-component vector of float)
+0:68 add second child into first child (4-component vector of float)
+0:68 'color' (4-component vector of float)
+0:68 Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (4-component vector of float)
+0:68 'texSampler2D' (uniform sampler2D)
+0:68 'coords2D' (smooth in 2-component vector of float)
+0:68 'gradX' (2-component vector of float)
+0:68 'gradY' (2-component vector of float)
+0:68 'offset' (2-component vector of int)
+0:69 add second child into first child (4-component vector of float)
+0:69 'color' (4-component vector of float)
+0:69 Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (4-component vector of float)
+0:69 'texSampler2D' (uniform sampler2D)
+0:69 'coords3D' (3-component vector of float)
+0:69 'gradX' (2-component vector of float)
+0:69 'gradY' (2-component vector of float)
+0:69 'offset' (2-component vector of int)
+0:70 add second child into first child (4-component vector of float)
+0:70 'color' (4-component vector of float)
+0:70 Function Call: textureGrad(sS21;vf3;vf2;vf2; (float)
+0:70 'shadowSampler2D' (uniform sampler2DShadow)
+0:70 Construct vec3 (3-component vector of float)
+0:70 'coords2D' (smooth in 2-component vector of float)
+0:70 'lod' (float)
+0:70 'gradX' (2-component vector of float)
+0:70 'gradY' (2-component vector of float)
+0:72 move second child to first child (4-component vector of float)
+0:72 'gl_FragColor' (fragColor 4-component vector of float)
+0:72 mix (4-component vector of float)
+0:72 'color' (4-component vector of float)
+0:72 'u' (uniform 4-component vector of float)
+0:72 component-wise multiply (float)
+0:72 'blend' (uniform float)
+0:72 'blendscale' (float)
+0:? Linker Objects
+0:? 'texSampler1D' (uniform sampler1D)
+0:? 'texSampler2D' (uniform sampler2D)
+0:? 'texSampler3D' (uniform sampler3D)
+0:? 'texSamplerCube' (uniform samplerCube)
+0:? 'shadowSampler1D' (uniform sampler1DShadow)
+0:? 'shadowSampler2D' (uniform sampler2DShadow)
+0:? 'blend' (uniform float)
+0:? 'scale' (uniform 2-component vector of float)
+0:? 'u' (uniform 4-component vector of float)
+0:? 't' (smooth in 2-component vector of float)
+0:? 'coords2D' (smooth in 2-component vector of float)
+
diff --git a/Test/baseResults/tokenLength.vert.out b/Test/baseResults/tokenLength.vert.out
new file mode 100644
index 0000000..7c42c8f
--- /dev/null
+++ b/Test/baseResults/tokenLength.vert.out
@@ -0,0 +1,82 @@
+ERROR: 0:9: '' : numeric literal too big
+ERROR: 0:10: '' : numeric literal too big
+ERROR: 0:13: '' : octal literal too big
+ERROR: 0:14: '' : hexidecimal literal too big
+ERROR: 0:23: '' : float literal too long
+ERROR: 0:32: '' : name too long
+ERROR: 0:33: '' : hexidecimal literal too big
+ERROR: 0:34: '' : numeric literal too long
+ERROR: 0:34: '' : octal literal too big
+ERROR: 0:35: '' : numeric literal too long
+ERROR: 0:35: '' : numeric literal too big
+ERROR: 0:36: '' : float literal too long
+ERROR: 0:36: '' : float literal too long
+ERROR: 0:36: '' : float literal too long
+ERROR: 14 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:9 Sequence
+0:9 move second child to first child (highp int)
+0:9 'E1' (highp int)
+0:9 -1 (const int)
+0:10 Sequence
+0:10 move second child to first child (highp int)
+0:10 'E2' (highp int)
+0:10 -1 (const int)
+0:11 Sequence
+0:11 move second child to first child (highp int)
+0:11 'B' (highp int)
+0:11 -1 (const int)
+0:13 Sequence
+0:13 move second child to first child (highp int)
+0:13 'OE' (highp int)
+0:13 1073741823 (const int)
+0:14 Sequence
+0:14 move second child to first child (highp int)
+0:14 'HE' (highp int)
+0:14 -1 (const int)
+0:17 Sequence
+0:17 move second child to first child (highp float)
+0:17 'F' (highp float)
+0:17 1.012346
+0:20 Sequence
+0:20 move second child to first child (highp float)
+0:20 'G' (highp float)
+0:20 1.012346
+0:23 Sequence
+0:23 move second child to first child (highp float)
+0:23 'E3' (highp float)
+0:23 12.000000
+0:25 Function Definition: main( (void)
+0:25 Function Parameters:
+0:27 Sequence
+0:27 move second child to first child (highp 4-component vector of float)
+0:27 'gl_Position' (gl_Position highp 4-component vector of float)
+0:28 Construct vec4 (highp 4-component vector of float)
+0:27 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)
+0:28 Convert int to float (highp float)
+0:28 'B' (highp int)
+0:28 'F' (highp float)
+0:28 'G' (highp float)
+0:33 Sequence
+0:33 move second child to first child (highp int)
+0:33 'superH' (highp int)
+0:33 -1 (const int)
+0:34 Sequence
+0:34 move second child to first child (highp int)
+0:34 'superO' (highp int)
+0:34 1073741823 (const int)
+0:35 Sequence
+0:35 move second child to first child (highp int)
+0:35 'superI' (highp int)
+0:35 -1 (const int)
+0:36 Sequence
+0:36 move second child to first child (highp float)
+0:36 'superF' (highp float)
+0:36 1.#INF00
+0:? Linker Objects
+0:? 'BCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)
+0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789' (in highp float)
+0:? 'gl_VertexID' (gl_VertexId highp int)
+0:? 'gl_InstanceID' (gl_InstanceId highp int)
+
diff --git a/Test/baseResults/types.frag.out b/Test/baseResults/types.frag.out
new file mode 100644
index 0000000..af4db5b
--- /dev/null
+++ b/Test/baseResults/types.frag.out
@@ -0,0 +1,289 @@
+0:? Sequence
+0:33 Function Definition: main( (void)
+0:33 Function Parameters:
+0:35 Sequence
+0:35 Sequence
+0:35 move second child to first child (bool)
+0:35 'b' (bool)
+0:35 logical-and (bool)
+0:35 'u_b' (uniform bool)
+0:35 'i_b' (uniform bool)
+0:36 Sequence
+0:36 move second child to first child (2-component vector of bool)
+0:36 'b2' (2-component vector of bool)
+0:36 Construct bvec2 (2-component vector of bool)
+0:36 logical-and (bool)
+0:36 logical-and (bool)
+0:36 logical-and (bool)
+0:36 direct index (bool)
+0:36 'u_b2' (uniform 2-component vector of bool)
+0:36 0 (const int)
+0:36 direct index (bool)
+0:36 'i_b2' (uniform 2-component vector of bool)
+0:36 0 (const int)
+0:36 direct index (bool)
+0:36 'u_b2' (uniform 2-component vector of bool)
+0:36 1 (const int)
+0:36 direct index (bool)
+0:36 'i_b2' (uniform 2-component vector of bool)
+0:36 1 (const int)
+0:37 Sequence
+0:37 move second child to first child (3-component vector of bool)
+0:37 'b3' (3-component vector of bool)
+0:37 Construct bvec3 (3-component vector of bool)
+0:37 logical-and (bool)
+0:37 logical-and (bool)
+0:37 logical-and (bool)
+0:37 logical-and (bool)
+0:37 logical-and (bool)
+0:37 direct index (bool)
+0:37 'u_b3' (uniform 3-component vector of bool)
+0:37 0 (const int)
+0:37 direct index (bool)
+0:37 'i_b3' (uniform 3-component vector of bool)
+0:37 0 (const int)
+0:37 direct index (bool)
+0:37 'u_b3' (uniform 3-component vector of bool)
+0:37 1 (const int)
+0:37 direct index (bool)
+0:37 'i_b3' (uniform 3-component vector of bool)
+0:37 1 (const int)
+0:37 direct index (bool)
+0:37 'u_b3' (uniform 3-component vector of bool)
+0:37 2 (const int)
+0:37 direct index (bool)
+0:37 'i_b3' (uniform 3-component vector of bool)
+0:37 2 (const int)
+0:38 Sequence
+0:38 move second child to first child (4-component vector of bool)
+0:38 'b4' (4-component vector of bool)
+0:38 Construct bvec4 (4-component vector of bool)
+0:38 logical-and (bool)
+0:38 logical-and (bool)
+0:38 logical-and (bool)
+0:38 logical-and (bool)
+0:38 logical-and (bool)
+0:38 logical-and (bool)
+0:38 logical-and (bool)
+0:38 direct index (bool)
+0:38 'u_b4' (uniform 4-component vector of bool)
+0:38 0 (const int)
+0:38 direct index (bool)
+0:38 'i_b4' (uniform 4-component vector of bool)
+0:38 0 (const int)
+0:38 direct index (bool)
+0:38 'u_b4' (uniform 4-component vector of bool)
+0:38 1 (const int)
+0:38 direct index (bool)
+0:38 'i_b4' (uniform 4-component vector of bool)
+0:38 1 (const int)
+0:38 direct index (bool)
+0:38 'u_b4' (uniform 4-component vector of bool)
+0:38 2 (const int)
+0:38 direct index (bool)
+0:38 'i_b4' (uniform 4-component vector of bool)
+0:38 2 (const int)
+0:38 direct index (bool)
+0:38 'u_b4' (uniform 4-component vector of bool)
+0:38 3 (const int)
+0:38 direct index (bool)
+0:38 'i_b4' (uniform 4-component vector of bool)
+0:38 3 (const int)
+0:40 Sequence
+0:40 move second child to first child (int)
+0:40 'i' (int)
+0:40 add (int)
+0:40 'u_i' (uniform int)
+0:40 'i_i' (flat in int)
+0:41 Sequence
+0:41 move second child to first child (2-component vector of int)
+0:41 'i2' (2-component vector of int)
+0:41 add (2-component vector of int)
+0:41 'u_i2' (uniform 2-component vector of int)
+0:41 'i_i2' (flat in 2-component vector of int)
+0:42 Sequence
+0:42 move second child to first child (3-component vector of int)
+0:42 'i3' (3-component vector of int)
+0:42 add (3-component vector of int)
+0:42 'u_i3' (uniform 3-component vector of int)
+0:42 'i_i3' (flat in 3-component vector of int)
+0:43 Sequence
+0:43 move second child to first child (4-component vector of int)
+0:43 'i4' (4-component vector of int)
+0:43 add (4-component vector of int)
+0:43 'u_i4' (uniform 4-component vector of int)
+0:43 'i_i4' (flat in 4-component vector of int)
+0:45 Sequence
+0:45 move second child to first child (float)
+0:45 'f' (float)
+0:45 add (float)
+0:45 'u_f' (uniform float)
+0:45 'i_f' (smooth in float)
+0:46 Sequence
+0:46 move second child to first child (2-component vector of float)
+0:46 'f2' (2-component vector of float)
+0:46 add (2-component vector of float)
+0:46 'u_f2' (uniform 2-component vector of float)
+0:46 'i_f2' (smooth in 2-component vector of float)
+0:47 Sequence
+0:47 move second child to first child (3-component vector of float)
+0:47 'f3' (3-component vector of float)
+0:47 add (3-component vector of float)
+0:47 'u_f3' (uniform 3-component vector of float)
+0:47 'i_f3' (smooth in 3-component vector of float)
+0:48 Sequence
+0:48 move second child to first child (4-component vector of float)
+0:48 'f4' (4-component vector of float)
+0:48 add (4-component vector of float)
+0:48 'u_f4' (uniform 4-component vector of float)
+0:48 'i_f4' (smooth in 4-component vector of float)
+0:50 move second child to first child (4-component vector of float)
+0:50 'gl_FragColor' (fragColor 4-component vector of float)
+0:60 Test condition and select (4-component vector of float)
+0:60 Condition
+0:59 logical-or (bool)
+0:58 logical-or (bool)
+0:57 logical-or (bool)
+0:56 logical-or (bool)
+0:55 logical-or (bool)
+0:54 logical-or (bool)
+0:53 logical-or (bool)
+0:52 logical-or (bool)
+0:51 logical-or (bool)
+0:51 'b' (bool)
+0:52 direct index (bool)
+0:52 'b2' (2-component vector of bool)
+0:52 0 (const int)
+0:53 direct index (bool)
+0:53 'b2' (2-component vector of bool)
+0:53 1 (const int)
+0:54 direct index (bool)
+0:54 'b3' (3-component vector of bool)
+0:54 0 (const int)
+0:55 direct index (bool)
+0:55 'b3' (3-component vector of bool)
+0:55 1 (const int)
+0:56 direct index (bool)
+0:56 'b3' (3-component vector of bool)
+0:56 2 (const int)
+0:57 direct index (bool)
+0:57 'b4' (4-component vector of bool)
+0:57 0 (const int)
+0:58 direct index (bool)
+0:58 'b4' (4-component vector of bool)
+0:58 1 (const int)
+0:59 direct index (bool)
+0:59 'b4' (4-component vector of bool)
+0:59 2 (const int)
+0:60 direct index (bool)
+0:60 'b4' (4-component vector of bool)
+0:60 3 (const int)
+0:60 true case
+0:79 Construct vec4 (4-component vector of float)
+0:79 add (float)
+0:78 add (float)
+0:77 add (float)
+0:76 add (float)
+0:75 add (float)
+0:74 add (float)
+0:73 add (float)
+0:72 add (float)
+0:71 add (float)
+0:70 add (float)
+0:69 Convert int to float (float)
+0:69 add (int)
+0:68 add (int)
+0:67 add (int)
+0:66 add (int)
+0:65 add (int)
+0:64 add (int)
+0:63 add (int)
+0:62 add (int)
+0:61 add (int)
+0:61 'i' (int)
+0:62 direct index (int)
+0:62 'i2' (2-component vector of int)
+0:62 0 (const int)
+0:63 direct index (int)
+0:63 'i2' (2-component vector of int)
+0:63 1 (const int)
+0:64 direct index (int)
+0:64 'i3' (3-component vector of int)
+0:64 0 (const int)
+0:65 direct index (int)
+0:65 'i3' (3-component vector of int)
+0:65 1 (const int)
+0:66 direct index (int)
+0:66 'i3' (3-component vector of int)
+0:66 2 (const int)
+0:67 direct index (int)
+0:67 'i4' (4-component vector of int)
+0:67 0 (const int)
+0:68 direct index (int)
+0:68 'i4' (4-component vector of int)
+0:68 1 (const int)
+0:69 direct index (int)
+0:69 'i4' (4-component vector of int)
+0:69 2 (const int)
+0:70 direct index (int)
+0:70 'i4' (4-component vector of int)
+0:70 3 (const int)
+0:71 'f' (float)
+0:72 direct index (float)
+0:72 'f2' (2-component vector of float)
+0:72 0 (const int)
+0:73 direct index (float)
+0:73 'f2' (2-component vector of float)
+0:73 1 (const int)
+0:74 direct index (float)
+0:74 'f3' (3-component vector of float)
+0:74 0 (const int)
+0:75 direct index (float)
+0:75 'f3' (3-component vector of float)
+0:75 1 (const int)
+0:76 direct index (float)
+0:76 'f3' (3-component vector of float)
+0:76 2 (const int)
+0:77 direct index (float)
+0:77 'f4' (4-component vector of float)
+0:77 0 (const int)
+0:78 direct index (float)
+0:78 'f4' (4-component vector of float)
+0:78 1 (const int)
+0:79 direct index (float)
+0:79 'f4' (4-component vector of float)
+0:79 2 (const int)
+0:80 direct index (float)
+0:80 'f4' (4-component vector of float)
+0:80 3 (const int)
+0:60 false case
+0:80 1.000000
+0:80 1.000000
+0:80 1.000000
+0:80 1.000000
+0:? Linker Objects
+0:? 'u_b' (uniform bool)
+0:? 'u_b2' (uniform 2-component vector of bool)
+0:? 'u_b3' (uniform 3-component vector of bool)
+0:? 'u_b4' (uniform 4-component vector of bool)
+0:? 'u_i' (uniform int)
+0:? 'u_i2' (uniform 2-component vector of int)
+0:? 'u_i3' (uniform 3-component vector of int)
+0:? 'u_i4' (uniform 4-component vector of int)
+0:? 'u_f' (uniform float)
+0:? 'u_f2' (uniform 2-component vector of float)
+0:? 'u_f3' (uniform 3-component vector of float)
+0:? 'u_f4' (uniform 4-component vector of float)
+0:? 'i_b' (uniform bool)
+0:? 'i_b2' (uniform 2-component vector of bool)
+0:? 'i_b3' (uniform 3-component vector of bool)
+0:? 'i_b4' (uniform 4-component vector of bool)
+0:? 'i_i' (flat in int)
+0:? 'i_i2' (flat in 2-component vector of int)
+0:? 'i_i3' (flat in 3-component vector of int)
+0:? 'i_i4' (flat in 4-component vector of int)
+0:? 'i_f' (smooth in float)
+0:? 'i_f2' (smooth in 2-component vector of float)
+0:? 'i_f3' (smooth in 3-component vector of float)
+0:? 'i_f4' (smooth in 4-component vector of float)
+
diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out
new file mode 100644
index 0000000..2f04349
--- /dev/null
+++ b/Test/baseResults/uint.frag.out
@@ -0,0 +1,215 @@
+ERROR: 0:2: 'in' : must be qualified as 'flat' uint
+ERROR: 0:6: 'in' : cannot be bool
+ERROR: 0:20: 'const' : non-matching types for const initializer
+ERROR: 0:24: 'const' : non-matching types for const initializer
+ERROR: 0:34: 'const' : non-matching types for const initializer
+ERROR: 0:37: 'const' : non-matching types for const initializer
+ERROR: 0:48: '=' : cannot convert from 'const int' to 'mediump uint'
+ERROR: 0:51: '=' : cannot convert from 'const int' to 'mediump uint'
+ERROR: 0:63: 'float' : type requires declaration of default precision qualifier
+ERROR: 9 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:15 Function Definition: main( (void)
+0:15 Function Parameters:
+0:17 Sequence
+0:17 Sequence
+0:17 move second child to first child (mediump int)
+0:17 'count' (mediump int)
+0:17 1 (const int)
+0:19 Sequence
+0:19 move second child to first child (mediump uint)
+0:19 'u' (mediump uint)
+0:19 add (mediump uint)
+0:19 direct index (mediump uint)
+0:19 't' (flat in mediump 2-component vector of uint)
+0:19 1 (const int)
+0:19 3 (const uint)
+0:28 multiply second child into first child (mediump int)
+0:28 'count' (mediump int)
+0:28 2 (const int)
+0:30 multiply second child into first child (mediump int)
+0:30 'count' (mediump int)
+0:30 3 (const int)
+0:42 multiply second child into first child (mediump int)
+0:42 'count' (mediump int)
+0:42 7 (const int)
+0:44 multiply second child into first child (mediump int)
+0:44 'count' (mediump int)
+0:44 11 (const int)
+0:49 Sequence
+0:49 move second child to first child (mediump int)
+0:49 'shiftedii' (mediump int)
+0:49 -1 (const int)
+0:50 Sequence
+0:50 move second child to first child (mediump uint)
+0:50 'shiftedui' (mediump uint)
+0:50 4194303 (const uint)
+0:52 Sequence
+0:52 move second child to first child (mediump int)
+0:52 'shiftediu' (mediump int)
+0:52 -1 (const int)
+0:53 Sequence
+0:53 move second child to first child (mediump uint)
+0:53 'shifteduu' (mediump uint)
+0:53 4194303 (const uint)
+0:55 Test condition and select (void)
+0:55 Condition
+0:55 Compare Equal (bool)
+0:55 'shiftedii' (mediump int)
+0:55 'shiftediu' (mediump int)
+0:55 true case
+0:56 move second child to first child (mediump 4-component vector of uint)
+0:56 'c' (out mediump 4-component vector of uint)
+0:56 Function Call: texture(us21;vf2; (mediump 4-component vector of uint)
+0:56 'usampler' (uniform lowp usampler2D)
+0:56 'tc' (smooth in highp 2-component vector of float)
+0:57 Test condition and select (void)
+0:57 Condition
+0:57 Compare Equal (bool)
+0:57 'shiftedui' (mediump uint)
+0:57 'shifteduu' (mediump uint)
+0:57 true case
+0:58 move second child to first child (mediump 4-component vector of uint)
+0:58 'c' (out mediump 4-component vector of uint)
+0:58 Function Call: texture(us21;vf2; (mediump 4-component vector of uint)
+0:58 'usampler' (uniform lowp usampler2D)
+0:58 add (highp 2-component vector of float)
+0:58 'tc' (smooth in highp 2-component vector of float)
+0:58 1.000000
+0:59 Test condition and select (void)
+0:59 Condition
+0:59 Compare Equal (bool)
+0:59 'shiftedii' (mediump int)
+0:59 Convert uint to int (int)
+0:59 'shiftedui' (mediump uint)
+0:59 true case
+0:60 move second child to first child (mediump 4-component vector of uint)
+0:60 'c' (out mediump 4-component vector of uint)
+0:60 Function Call: texture(us21;vf2; (mediump 4-component vector of uint)
+0:60 'usampler' (uniform lowp usampler2D)
+0:60 subtract (highp 2-component vector of float)
+0:60 'tc' (smooth in highp 2-component vector of float)
+0:60 2.000000
+0:60 2.000000
+0:62 Test condition and select (void)
+0:62 Condition
+0:62 Compare Greater Than (bool)
+0:62 direct index (mediump uint)
+0:62 't' (flat in mediump 2-component vector of uint)
+0:62 0 (const int)
+0:62 4 (const uint)
+0:62 true case
+0:63 Sequence
+0:63 Sequence
+0:63 move second child to first child (mediump float)
+0:63 'af' (mediump float)
+0:63 Convert uint to float (mediump float)
+0:63 'u' (mediump uint)
+0:64 Sequence
+0:64 move second child to first child (bool)
+0:64 'ab' (bool)
+0:64 Convert uint to bool (bool)
+0:64 'u' (mediump uint)
+0:65 Sequence
+0:65 move second child to first child (mediump int)
+0:65 'ai' (mediump int)
+0:65 Convert uint to int (mediump int)
+0:65 'u' (mediump uint)
+0:67 add second child into first child (mediump 4-component vector of uint)
+0:67 'c' (out mediump 4-component vector of uint)
+0:67 Construct uvec4 (mediump 4-component vector of uint)
+0:67 Convert float to uint (mediump uint)
+0:67 'af' (mediump float)
+0:67 Convert bool to uint (mediump uint)
+0:67 'ab' (bool)
+0:67 Convert int to uint (mediump uint)
+0:67 'ai' (mediump int)
+0:67 Convert int to uint (mediump uint)
+0:67 'count' (mediump int)
+0:76 multiply second child into first child (mediump int)
+0:76 'count' (mediump int)
+0:76 17 (const int)
+0:82 multiply second child into first child (mediump int)
+0:82 'count' (mediump int)
+0:82 23 (const int)
+0:85 multiply second child into first child (mediump int)
+0:85 'count' (mediump int)
+0:85 27 (const int)
+0:87 Sequence
+0:87 move second child to first child (mediump uint)
+0:87 'mask1' (mediump uint)
+0:87 161 (const uint)
+0:88 Sequence
+0:88 move second child to first child (mediump uint)
+0:88 'mask2' (mediump uint)
+0:88 2576 (const uint)
+0:89 Sequence
+0:89 move second child to first child (mediump uint)
+0:89 'mask3' (mediump uint)
+0:89 left-shift (mediump uint)
+0:89 'mask1' (mediump uint)
+0:89 4 (const int)
+0:90 Sequence
+0:90 move second child to first child (mediump uint)
+0:90 'mask4' (mediump uint)
+0:90 2737 (const uint)
+0:92 Test condition and select (void)
+0:92 Condition
+0:92 Compare Equal (bool)
+0:92 'mask3' (mediump uint)
+0:92 'mask2' (mediump uint)
+0:92 true case
+0:93 multiply second child into first child (mediump int)
+0:93 'count' (mediump int)
+0:93 100 (const int)
+0:95 Test condition and select (void)
+0:95 Condition
+0:95 Compare Not Equal (bool)
+0:95 bitwise and (mediump uint)
+0:95 'mask3' (mediump uint)
+0:95 'mask1' (mediump uint)
+0:95 0 (const uint)
+0:95 true case
+0:96 multiply second child into first child (mediump int)
+0:96 'count' (mediump int)
+0:96 101 (const int)
+0:98 Test condition and select (void)
+0:98 Condition
+0:98 Compare Equal (bool)
+0:98 inclusive-or (mediump uint)
+0:98 'mask1' (mediump uint)
+0:98 'mask3' (mediump uint)
+0:98 'mask4' (mediump uint)
+0:98 true case
+0:99 multiply second child into first child (mediump int)
+0:99 'count' (mediump int)
+0:99 102 (const int)
+0:101 Test condition and select (void)
+0:101 Condition
+0:101 Compare Equal (bool)
+0:101 exclusive-or (mediump uint)
+0:101 'mask1' (mediump uint)
+0:101 'mask4' (mediump uint)
+0:101 2576 (const uint)
+0:101 true case
+0:102 multiply second child into first child (mediump int)
+0:102 'count' (mediump int)
+0:102 103 (const int)
+0:104 add second child into first child (mediump 4-component vector of uint)
+0:104 'c' (out mediump 4-component vector of uint)
+0:104 Construct uvec4 (mediump 4-component vector of uint)
+0:104 Convert int to uint (mediump uint)
+0:104 'count' (mediump int)
+0:? Linker Objects
+0:? 'badu' (smooth in mediump 2-component vector of uint)
+0:? 't' (flat in mediump 2-component vector of uint)
+0:? 'f' (smooth in highp float)
+0:? 'tc' (smooth in highp 2-component vector of float)
+0:? 'bad' (smooth in bool)
+0:? 'v' (uniform mediump 4-component vector of uint)
+0:? 'i' (uniform mediump int)
+0:? 'b' (uniform bool)
+0:? 'c' (out mediump 4-component vector of uint)
+0:? 'usampler' (uniform lowp usampler2D)
+
diff --git a/Test/baseResults/uniformArray.frag.out b/Test/baseResults/uniformArray.frag.out
new file mode 100644
index 0000000..f734c29
--- /dev/null
+++ b/Test/baseResults/uniformArray.frag.out
@@ -0,0 +1,36 @@
+0:? Sequence
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:9 Sequence
+0:9 Sequence
+0:9 move second child to first child (4-component vector of float)
+0:9 'texColor' (4-component vector of float)
+0:9 add (4-component vector of float)
+0:9 direct index (uniform 4-component vector of float)
+0:9 'color' (uniform 6-element array of 4-component vector of float)
+0:9 1 (const int)
+0:9 direct index (uniform 4-component vector of float)
+0:9 'color' (uniform 6-element array of 4-component vector of float)
+0:9 1 (const int)
+0:11 add second child into first child (3-component vector of float)
+0:11 vector swizzle (3-component vector of float)
+0:11 'texColor' (4-component vector of float)
+0:11 Sequence
+0:11 0 (const int)
+0:11 1 (const int)
+0:11 2 (const int)
+0:11 'inColor' (uniform 3-component vector of float)
+0:13 add second child into first child (float)
+0:13 direct index (float)
+0:13 'texColor' (4-component vector of float)
+0:13 3 (const int)
+0:13 direct index (uniform float)
+0:13 'alpha' (uniform 16-element array of float)
+0:13 12 (const int)
+0:15 move second child to first child (4-component vector of float)
+0:15 'gl_FragColor' (fragColor 4-component vector of float)
+0:15 'texColor' (4-component vector of float)
+0:? Linker Objects
+0:? 'texSampler2D' (uniform sampler2D)
+0:? 'inColor' (uniform 3-component vector of float)
+
diff --git a/Test/baseResults/variableArrayIndex.frag.out b/Test/baseResults/variableArrayIndex.frag.out
new file mode 100644
index 0000000..aa20e6a
--- /dev/null
+++ b/Test/baseResults/variableArrayIndex.frag.out
@@ -0,0 +1,91 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:29 Function Definition: main( (void)
+0:29 Function Parameters:
+0:? Sequence
+0:32 Sequence
+0:32 move second child to first child (int)
+0:32 'iLocal' (int)
+0:32 'Count' (uniform int)
+0:34 Test condition and select (void)
+0:34 Condition
+0:34 Compare Greater Than (bool)
+0:34 i: direct index for structure (int)
+0:34 direct index (structure)
+0:34 s2_1: direct index for structure (3-element array of structure)
+0:34 'foo3' (uniform structure)
+0:34 0 (const int)
+0:34 1 (const int)
+0:34 0 (const int)
+0:34 0 (const int)
+0:34 true case
+0:35 move second child to first child (float)
+0:35 'scale' (float)
+0:35 f: direct index for structure (float)
+0:35 s1_1: direct index for structure (structure)
+0:35 indirect index (uniform structure)
+0:35 'foo2' (uniform 5-element array of structure)
+0:35 add (int)
+0:35 add (int)
+0:35 i: direct index for structure (int)
+0:35 indirect index (structure)
+0:35 s2_1: direct index for structure (3-element array of structure)
+0:35 'foo3' (uniform structure)
+0:35 0 (const int)
+0:35 i: direct index for structure (int)
+0:35 'foo' (uniform structure)
+0:35 0 (const int)
+0:35 0 (const int)
+0:35 2 (const int)
+0:35 Pre-Increment (int)
+0:35 'iLocal' (int)
+0:35 2 (const int)
+0:35 1 (const int)
+0:34 false case
+0:37 move second child to first child (float)
+0:37 'scale' (float)
+0:37 f: direct index for structure (float)
+0:37 s1_1: direct index for structure (structure)
+0:37 direct index (structure)
+0:37 s2_1: direct index for structure (3-element array of structure)
+0:37 'foo3' (uniform structure)
+0:37 0 (const int)
+0:37 0 (const int)
+0:37 2 (const int)
+0:37 1 (const int)
+0:43 move second child to first child (4-component vector of float)
+0:43 'gl_FragColor' (fragColor 4-component vector of float)
+0:43 vector-scale (4-component vector of float)
+0:43 'scale' (float)
+0:43 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:43 'sampler' (uniform sampler2D)
+0:43 'coord' (smooth in 2-component vector of float)
+0:45 Sequence
+0:45 move second child to first child (3-element array of 2-component vector of float)
+0:45 'constructed' (3-element array of 2-component vector of float)
+0:45 Construct vec2 (3-element array of 2-component vector of float)
+0:45 'coord' (smooth in 2-component vector of float)
+0:45 Construct vec2 (2-component vector of float)
+0:45 'scale' (float)
+0:45 1.000000
+0:45 2.000000
+0:46 add second child into first child (4-component vector of float)
+0:46 'gl_FragColor' (fragColor 4-component vector of float)
+0:46 Construct vec4 (4-component vector of float)
+0:46 indirect index (2-component vector of float)
+0:46 'constructed' (3-element array of 2-component vector of float)
+0:46 i: direct index for structure (int)
+0:46 'foo' (uniform structure)
+0:46 0 (const int)
+0:46 indirect index (2-component vector of float)
+0:46 'constructed' (3-element array of 2-component vector of float)
+0:46 i: direct index for structure (int)
+0:46 'foo' (uniform structure)
+0:46 0 (const int)
+0:? Linker Objects
+0:? 'sampler' (uniform sampler2D)
+0:? 'coord' (smooth in 2-component vector of float)
+0:? 'foo' (uniform structure)
+0:? 'foo3' (uniform structure)
+0:? 'Count' (uniform int)
+
diff --git a/Test/baseResults/varyingArray.frag.out b/Test/baseResults/varyingArray.frag.out
new file mode 100644
index 0000000..2e0245b
--- /dev/null
+++ b/Test/baseResults/varyingArray.frag.out
@@ -0,0 +1,49 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+WARNING: 0:6: varying deprecated in version 130; may be removed in future release
+WARNING: 0:8: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:10 Function Definition: main( (void)
+0:10 Function Parameters:
+0:12 Sequence
+0:12 Sequence
+0:12 move second child to first child (4-component vector of float)
+0:12 'texColor' (4-component vector of float)
+0:12 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:12 'texSampler2D' (uniform sampler2D)
+0:12 Construct vec2 (2-component vector of float)
+0:12 add (4-component vector of float)
+0:12 direct index (smooth in 4-component vector of float)
+0:12 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:12 4 (const int)
+0:12 direct index (smooth in 4-component vector of float)
+0:12 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:12 5 (const int)
+0:14 add second child into first child (4-component vector of float)
+0:14 'texColor' (4-component vector of float)
+0:14 'color' (smooth in 4-component vector of float)
+0:16 move second child to first child (float)
+0:16 direct index (float)
+0:16 'texColor' (4-component vector of float)
+0:16 3 (const int)
+0:16 'alpha' (smooth in float)
+0:18 move second child to first child (4-component vector of float)
+0:18 'gl_FragColor' (fragColor 4-component vector of float)
+0:18 add (4-component vector of float)
+0:18 add (4-component vector of float)
+0:18 add (4-component vector of float)
+0:18 direct index (smooth in 4-component vector of float)
+0:18 'foo' (smooth in 3-element array of 4-component vector of float)
+0:18 1 (const int)
+0:18 direct index (smooth in 4-component vector of float)
+0:18 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:18 0 (const int)
+0:18 direct index (smooth in 4-component vector of float)
+0:18 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:18 4 (const int)
+0:18 'texColor' (4-component vector of float)
+0:? Linker Objects
+0:? 'texSampler2D' (uniform sampler2D)
+0:? 'color' (smooth in 4-component vector of float)
+0:? 'alpha' (smooth in float)
+
diff --git a/Test/baseResults/varyingArrayIndirect.frag.out b/Test/baseResults/varyingArrayIndirect.frag.out
new file mode 100644
index 0000000..5db8488
--- /dev/null
+++ b/Test/baseResults/varyingArrayIndirect.frag.out
@@ -0,0 +1,55 @@
+WARNING: 0:3: varying deprecated in version 130; may be removed in future release
+WARNING: 0:4: varying deprecated in version 130; may be removed in future release
+WARNING: 0:6: varying deprecated in version 130; may be removed in future release
+WARNING: 0:8: varying deprecated in version 130; may be removed in future release
+0:? Sequence
+0:12 Function Definition: main( (void)
+0:12 Function Parameters:
+0:14 Sequence
+0:14 Sequence
+0:14 move second child to first child (4-component vector of float)
+0:14 'texColor' (4-component vector of float)
+0:14 Function Call: texture2D(s21;vf2; (4-component vector of float)
+0:14 'texSampler2D' (uniform sampler2D)
+0:14 Construct vec2 (2-component vector of float)
+0:14 add (4-component vector of float)
+0:14 add (4-component vector of float)
+0:14 indirect index (smooth in 4-component vector of float)
+0:14 'userIn' (smooth in 2-element array of 4-component vector of float)
+0:14 'b' (uniform int)
+0:14 indirect index (smooth in 4-component vector of float)
+0:14 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:14 'a' (uniform int)
+0:14 direct index (smooth in 4-component vector of float)
+0:14 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:14 5 (const int)
+0:16 add second child into first child (4-component vector of float)
+0:16 'texColor' (4-component vector of float)
+0:16 'color' (smooth in 4-component vector of float)
+0:18 move second child to first child (float)
+0:18 direct index (float)
+0:18 'texColor' (4-component vector of float)
+0:18 3 (const int)
+0:18 'alpha' (smooth in float)
+0:20 move second child to first child (4-component vector of float)
+0:20 'gl_FragColor' (fragColor 4-component vector of float)
+0:20 add (4-component vector of float)
+0:20 add (4-component vector of float)
+0:20 add (4-component vector of float)
+0:20 direct index (smooth in 4-component vector of float)
+0:20 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:20 0 (const int)
+0:20 indirect index (smooth in 4-component vector of float)
+0:20 'gl_TexCoord' (smooth in 6-element array of 4-component vector of float)
+0:20 'b' (uniform int)
+0:20 'texColor' (4-component vector of float)
+0:20 indirect index (smooth in 4-component vector of float)
+0:20 'userIn' (smooth in 2-element array of 4-component vector of float)
+0:20 'a' (uniform int)
+0:? Linker Objects
+0:? 'texSampler2D' (uniform sampler2D)
+0:? 'color' (smooth in 4-component vector of float)
+0:? 'alpha' (smooth in float)
+0:? 'a' (uniform int)
+0:? 'b' (uniform int)
+
diff --git a/Test/baseResults/versionsClean.frag.out b/Test/baseResults/versionsClean.frag.out
new file mode 100644
index 0000000..821da67
--- /dev/null
+++ b/Test/baseResults/versionsClean.frag.out
@@ -0,0 +1,18 @@
+ERROR: 0:1: '#version' : statement must appear first in ESSL shader; before comments or newlines
+ERROR: 1 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:41 Function Definition: main( (void)
+0:41 Function Parameters:
+0:43 Sequence
+0:43 move second child to first child (highp 4-component vector of float)
+0:43 'foo' (out highp 4-component vector of float)
+0:43 Construct vec4 (highp 4-component vector of float)
+0:43 'color' (smooth in highp 3-component vector of float)
+0:43 142.000000
+0:44 Branch: Kill
+0:? Linker Objects
+0:? 'color' (smooth in highp 3-component vector of float)
+0:? 'foo' (out highp 4-component vector of float)
+0:? 'bar' (uniform highp sampler2DArrayShadow)
+
diff --git a/Test/baseResults/versionsClean.vert.out b/Test/baseResults/versionsClean.vert.out
new file mode 100644
index 0000000..807ee88
--- /dev/null
+++ b/Test/baseResults/versionsClean.vert.out
@@ -0,0 +1,15 @@
+0:? Sequence
+0:40 Function Definition: main( (void)
+0:40 Function Parameters:
+0:42 Sequence
+0:42 move second child to first child (4-component vector of float)
+0:42 'gl_Position' (gl_Position 4-component vector of float)
+0:42 Construct vec4 (4-component vector of float)
+0:42 'color' (in 3-component vector of float)
+0:42 142.000000
+0:? Linker Objects
+0:? 'color' (in 3-component vector of float)
+0:? 'foo' (uniform sampler2DRect)
+0:? 'gl_VertexID' (gl_VertexId int)
+0:? 'gl_InstanceID' (gl_InstanceId int)
+
diff --git a/Test/baseResults/versionsErrors.frag.out b/Test/baseResults/versionsErrors.frag.out
new file mode 100644
index 0000000..b13c08e
--- /dev/null
+++ b/Test/baseResults/versionsErrors.frag.out
@@ -0,0 +1,21 @@
+ERROR: #version: versions before 150 do not allow a profile token
+ERROR: 0:1: '#version' : incorrect
+ERROR: 0:38: 'attribute' : not supported in this stage: fragment
+ERROR: 0:40: 'sampler2DRect' : Reserved word.
+ERROR: 0:40: 'rectangle texture' : not supported for this version or the enabled extensions
+ERROR: 4 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:42 Function Definition: main( (void)
+0:42 Function Parameters:
+0:44 Sequence
+0:44 move second child to first child (4-component vector of float)
+0:44 'gl_FragColor' (fragColor 4-component vector of float)
+0:44 Construct vec4 (4-component vector of float)
+0:44 'color' (smooth in 3-component vector of float)
+0:44 142.000000
+0:45 Branch: Kill
+0:? Linker Objects
+0:? 'color' (smooth in 3-component vector of float)
+0:? 'foo' (uniform sampler2DRect)
+
diff --git a/Test/baseResults/versionsErrors.vert.out b/Test/baseResults/versionsErrors.vert.out
new file mode 100644
index 0000000..0622ec2
--- /dev/null
+++ b/Test/baseResults/versionsErrors.vert.out
@@ -0,0 +1,21 @@
+WARNING: 0:38: attribute deprecated in version 130; may be removed in future release
+ERROR: 0:38: 'attribute' : no longer supported in core profile; removed in version 420
+ERROR: 0:45: 'discard' : not supported in this stage: vertex
+ERROR: 2 compilation errors. No code generated.
+
+ERROR: node is still EOpNull!
+0:42 Function Definition: main( (void)
+0:42 Function Parameters:
+0:44 Sequence
+0:44 move second child to first child (4-component vector of float)
+0:44 'gl_Position' (gl_Position 4-component vector of float)
+0:44 Construct vec4 (4-component vector of float)
+0:44 'color' (in 3-component vector of float)
+0:44 142.000000
+0:45 Branch: Kill
+0:? Linker Objects
+0:? 'color' (in 3-component vector of float)
+0:? 'foo' (uniform sampler2DRect)
+0:? 'gl_VertexID' (gl_VertexId int)
+0:? 'gl_InstanceID' (gl_InstanceId int)
+
diff --git a/Test/baseResults/voidFunction.frag.out b/Test/baseResults/voidFunction.frag.out
new file mode 100644
index 0000000..4070c71
--- /dev/null
+++ b/Test/baseResults/voidFunction.frag.out
@@ -0,0 +1,39 @@
+0:? Sequence
+0:7 Sequence
+0:7 move second child to first child (float)
+0:7 'bar' (float)
+0:7 2.000000
+0:9 Function Definition: foo( (void)
+0:9 Function Parameters:
+0:11 Sequence
+0:11 Post-Increment (float)
+0:11 'bar' (float)
+0:13 Branch: Return
+0:16 Function Definition: foo2( (void)
+0:16 Function Parameters:
+0:18 Sequence
+0:18 Post-Increment (float)
+0:18 'bar' (float)
+0:21 Function Definition: main( (void)
+0:21 Function Parameters:
+0:23 Sequence
+0:23 Sequence
+0:23 move second child to first child (4-component vector of float)
+0:23 'outColor' (4-component vector of float)
+0:23 'bigColor' (uniform 4-component vector of float)
+0:25 Function Call: foo( (void)
+0:27 Function Call: foo2( (void)
+0:29 add second child into first child (float)
+0:29 direct index (float)
+0:29 'outColor' (4-component vector of float)
+0:29 0 (const int)
+0:29 'bar' (float)
+0:31 move second child to first child (4-component vector of float)
+0:31 'gl_FragColor' (fragColor 4-component vector of float)
+0:31 'outColor' (4-component vector of float)
+0:33 Branch: Return
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'd' (uniform float)
+
diff --git a/Test/baseResults/whileLoop.frag.out b/Test/baseResults/whileLoop.frag.out
new file mode 100644
index 0000000..b8575b3
--- /dev/null
+++ b/Test/baseResults/whileLoop.frag.out
@@ -0,0 +1,28 @@
+0:? Sequence
+0:7 Function Definition: main( (void)
+0:7 Function Parameters:
+0:9 Sequence
+0:9 Sequence
+0:9 move second child to first child (4-component vector of float)
+0:9 'color' (4-component vector of float)
+0:9 'BaseColor' (smooth in 4-component vector of float)
+0:11 Loop with condition tested first
+0:11 Loop Condition
+0:11 Compare Less Than (bool)
+0:11 direct index (float)
+0:11 'color' (4-component vector of float)
+0:11 0 (const int)
+0:11 'd' (uniform float)
+0:11 Loop Body
+0:12 Sequence
+0:12 add second child into first child (4-component vector of float)
+0:12 'color' (4-component vector of float)
+0:12 'bigColor' (uniform 4-component vector of float)
+0:15 move second child to first child (4-component vector of float)
+0:15 'gl_FragColor' (fragColor 4-component vector of float)
+0:15 'color' (4-component vector of float)
+0:? Linker Objects
+0:? 'bigColor' (uniform 4-component vector of float)
+0:? 'BaseColor' (smooth in 4-component vector of float)
+0:? 'd' (uniform float)
+
diff --git a/Test/runtests b/Test/runtests
index 02104db..7ec9885 100644
--- a/Test/runtests
+++ b/Test/runtests
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
-TARGETDIR=localout
-BASEDIR=localbase
+TARGETDIR=localResults
+BASEDIR=baseResults
while read t; do
echo Running $t...
diff --git a/Test/testlist b/Test/testlist
index 3dcc609..f3d2d4b 100644
--- a/Test/testlist
+++ b/Test/testlist
@@ -44,3 +44,44 @@
430scope.vert
lineContinuation.vert
numeral.frag
+../../LunarGLASS/test/aggOps.frag
+../../LunarGLASS/test/always-discard.frag
+../../LunarGLASS/test/always-discard2.frag
+../../LunarGLASS/test/conditionalDiscard.frag
+../../LunarGLASS/test/conversion.frag
+../../LunarGLASS/test/dataOut.frag
+../../LunarGLASS/test/dataOutIndirect.frag
+../../LunarGLASS/test/deepRvalue.frag
+../../LunarGLASS/test/depthOut.frag
+../../LunarGLASS/test/discard-dce.frag
+../../LunarGLASS/test/doWhileLoop.frag
+../../LunarGLASS/test/earlyReturnDiscard.frag
+../../LunarGLASS/test/flowControl.frag
+../../LunarGLASS/test/forLoop.frag
+../../LunarGLASS/test/functionCall.frag
+../../LunarGLASS/test/functionSemantics.frag
+../../LunarGLASS/test/length.frag
+../../LunarGLASS/test/localAggregates.frag
+../../LunarGLASS/test/loops.frag
+../../LunarGLASS/test/loopsArtificial.frag
+../../LunarGLASS/test/matrix.frag
+../../LunarGLASS/test/matrix2.frag
+../../LunarGLASS/test/newTexture.frag
+../../LunarGLASS/test/Operations.frag
+../../LunarGLASS/test/prepost.frag
+../../LunarGLASS/test/simpleFunctionCall.frag
+../../LunarGLASS/test/solidworks.frag
+../../LunarGLASS/test/structAssignment.frag
+../../LunarGLASS/test/structDeref.frag
+../../LunarGLASS/test/structure.frag
+../../LunarGLASS/test/swizzle.frag
+../../LunarGLASS/test/syntaxError.frag
+../../LunarGLASS/test/test.frag
+../../LunarGLASS/test/texture.frag
+../../LunarGLASS/test/types.frag
+../../LunarGLASS/test/uniformArray.frag
+../../LunarGLASS/test/variableArrayIndex.frag
+../../LunarGLASS/test/varyingArray.frag
+../../LunarGLASS/test/varyingArrayIndirect.frag
+../../LunarGLASS/test/voidFunction.frag
+../../LunarGLASS/test/whileLoop.frag