diff options
Diffstat (limited to 'progs/slang/cltest.txt')
-rw-r--r-- | progs/slang/cltest.txt | 1615 |
1 files changed, 0 insertions, 1615 deletions
diff --git a/progs/slang/cltest.txt b/progs/slang/cltest.txt deleted file mode 100644 index 97cc177c9f3..00000000000 --- a/progs/slang/cltest.txt +++ /dev/null @@ -1,1615 +0,0 @@ -$ /* -$ Shader test script. -$ -$ Author: Michal Krol -$ -$ Comment line starts with dollar sign and white space. -$ -$ $program <name> starts a new test program section called <name>. Contains all other sections. -$ -$ $attrib <name> starts vertex data input section for attrib called <name>. Each line consists of -$ four values that form single vertex attrib. -$ -$ $vertex starts vertex shader section. Contains $code and &output sections. -$ -$ $code starts source code section. All text in this section gets compiled into appropriate -$ shader object. -$ -$ $output starts shader execution results section. These are compared, value-by-value, -$ with results of executing printMESA() functions within a shader. -$ */ - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test printMESA() function. -$ */ - -$program PRINT TEST - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (11.1); - printMESA (111); - printMESA (true); - - printMESA (vec2 (22.1, 22.2)); - printMESA (vec3 (33.1, 33.2, 33.3)); - printMESA (vec4 (44.1, 44.2, 44.3, 44.4)); - - printMESA (ivec2 (221, 222)); - printMESA (ivec3 (331, 332, 333)); - printMESA (ivec4 (441, 442, 443, 444)); - - printMESA (bvec2 (false, true)); - printMESA (bvec3 (true, true, false)); - printMESA (bvec4 (true, false, true, false)); - - printMESA (mat2 (55.11, 55.12, 55.21, 55.22)); - printMESA (mat3 (66.11, 66.12, 66.13, - 66.21, 66.22, 66.23, - 66.31, 66.32, 66.33)); - printMESA (mat4 (77.11, 77.12, 77.13, 77.14, - 77.21, 77.22, 77.23, 77.24, - 77.31, 77.32, 77.33, 77.34, - 77.41, 77.42, 77.43, 77.44)); -} - -$output - -11.1 -111 -true - -22.1 -22.2 -33.1 -33.2 -33.3 -44.1 -44.2 -44.3 -44.4 - -221 -222 -331 -332 -333 -441 -442 -443 -444 - -false -true -true -true -false -true -false -true -false - -55.11 -55.12 -55.21 -55.22 - -66.11 -66.12 -66.13 -66.21 -66.22 -66.23 -66.31 -66.32 -66.33 - -77.11 -77.12 -77.13 -77.14 -77.21 -77.22 -77.23 -77.24 -77.31 -77.32 -77.33 -77.34 -77.41 -77.42 -77.43 -77.44 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test type casting. -$ */ - -$program TYPE CAST TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two -2.2 0.0 0.0 0.0 - -$attrib _MinusThree --3.3 0.0 0.0 0.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute float _Two; -attribute float _MinusThree; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two); - printMESA (_MinusThree); - - printMESA (float (_Zero)); - printMESA (float (_One)); - printMESA (float (_Two)); - printMESA (float (_MinusThree)); - printMESA (float (45.99)); - printMESA (float (-6.17)); - - printMESA (bool (_Zero)); - printMESA (bool (_One)); - printMESA (bool (_Two)); - printMESA (bool (_MinusThree)); - printMESA (bool (45.99)); - printMESA (bool (-6.17)); - printMESA (bool (0.0001)); - printMESA (bool (0.0)); - - printMESA (int (_Zero)); - printMESA (int (_One)); - printMESA (int (_Two)); - printMESA (int (_MinusThree)); - printMESA (int (45.99)); - printMESA (int (45.22)); - printMESA (int (-6.17)); - printMESA (int (-6.87)); -} - -$output - -0.0 -1.1 -2.2 --3.3 - -0.0 -1.1 -2.2 --3.3 -45.99 --6.17 - -false -true -true -true -true -true -true -false - -0 -1 -2 --3 -45 -45 --6 --6 - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test vector swizzles. -$ */ - -$program SWIZZLE TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _One -1.1 1.2 1.3 1.4 - -$attrib _Two -2.1 2.2 2.3 2.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute vec4 _One; -attribute vec4 _Two; - -void assign5678 (out vec4 v) -{ - v.x = 5.5; - v.y = 6.6; - v.z = 7.7; - v.w = 8.8; -} - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_One); - printMESA (_Two); - - printMESA (_One.x); - printMESA (_One.y); - printMESA (_One.z); - printMESA (_One.w); - - printMESA (_Two.xy); - printMESA (_Two.yx); - printMESA (_Two.xw); - printMESA (_Two.wx); - printMESA (_Two.yz); - printMESA (_Two.zy); - printMESA (_Two.xz); - printMESA (_Two.zx); - printMESA (_Two.zw); - printMESA (_Two.wz); - - printMESA (_One.xyz); - printMESA (_One.yzx); - printMESA (_One.zxy); - printMESA (_One.xzy); - printMESA (_One.yzw); - printMESA (_One.zwx); - - printMESA (_Two.xyzw); - printMESA (_Two.yzwx); - printMESA (_Two.wzyx); - printMESA (_Two.zwyx); - - printMESA (_One.xx); - printMESA (_One.zz); - printMESA (_One.ww); - - printMESA (_Two.xxx); - printMESA (_Two.yyy); - printMESA (_Two.www); - - printMESA (_One.xxxx); - printMESA (_One.zzzz); - - printMESA (_Two.xxyy); - printMESA (_Two.wwxx); - printMESA (_Two.zxxw); - - vec4 v; - - v.zxwy = vec4 (5.5, 6.6, 7.7, 8.8); - printMESA (v); - - assign5678 (v.ywxz); - printMESA (v); -} - -$output - -1.1 -1.2 -1.3 -1.4 -2.1 -2.2 -2.3 -2.4 - -1.1 -1.2 -1.3 -1.4 - -2.1 -2.2 -2.2 -2.1 -2.1 -2.4 -2.4 -2.1 -2.2 -2.3 -2.3 -2.2 -2.1 -2.3 -2.3 -2.1 -2.3 -2.4 -2.4 -2.3 - -1.1 -1.2 -1.3 -1.2 -1.3 -1.1 -1.3 -1.1 -1.2 -1.1 -1.3 -1.2 -1.2 -1.3 -1.4 -1.3 -1.4 -1.1 - -2.1 -2.2 -2.3 -2.4 -2.2 -2.3 -2.4 -2.1 -2.4 -2.3 -2.2 -2.1 -2.3 -2.4 -2.2 -2.1 - -1.1 -1.1 -1.3 -1.3 -1.4 -1.4 - -2.1 -2.1 -2.1 -2.2 -2.2 -2.2 -2.4 -2.4 -2.4 - -1.1 -1.1 -1.1 -1.1 -1.3 -1.3 -1.3 -1.3 - -2.1 -2.1 -2.2 -2.2 -2.4 -2.4 -2.1 -2.1 -2.3 -2.1 -2.1 -2.4 - -6.6 -8.8 -5.5 -7.7 - -7.7 -5.5 -8.8 -6.6 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test relational operators. -$ */ - -$program RELATIONAL OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Two -2.0 0.0 0.0 0.0 - -$attrib _Two2 -2.0 0.0 0.0 0.0 - -$attrib _MinusThree --3.0 0.0 0.0 0.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Two; -attribute float _Two2; -attribute float _MinusThree; - -struct foo -{ - float f; - vec4 v4; - vec3 v3; - mat4 m4; - int i; - bool b; -}; - -void printMESA (const in foo bar) -{ - printMESA (bar.f); - printMESA (bar.v4); - printMESA (bar.v3); - printMESA (bar.m4); - printMESA (bar.i); - printMESA (bar.b); -} - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - int iTwo = int (_Two); - int iTwo2 = int (_Two2); - int iMinusThree = int (_MinusThree); - - printMESA (_Two <= _Two); - printMESA (_Two <= _Two2); - printMESA (_Two <= _MinusThree); - printMESA (_MinusThree <= _Two); - printMESA (iTwo <= iTwo); - printMESA (iTwo <= iTwo2); - printMESA (iTwo <= iMinusThree); - printMESA (iMinusThree <= iTwo); - - printMESA (_Two >= _Two); - printMESA (_Two >= _Two2); - printMESA (_Two >= _MinusThree); - printMESA (_MinusThree >= _Two); - printMESA (iTwo >= iTwo); - printMESA (iTwo >= iTwo2); - printMESA (iTwo >= iMinusThree); - printMESA (iMinusThree >= iTwo); - - printMESA (_Two < _Two); - printMESA (_Two < _Two2); - printMESA (_Two < _MinusThree); - printMESA (_MinusThree < _Two); - printMESA (iTwo < iTwo); - printMESA (iTwo < iTwo2); - printMESA (iTwo < iMinusThree); - printMESA (iMinusThree < iTwo); - - printMESA (_Two > _Two); - printMESA (_Two > _Two2); - printMESA (_Two > _MinusThree); - printMESA (_MinusThree > _Two); - printMESA (iTwo > iTwo); - printMESA (iTwo > iTwo2); - printMESA (iTwo > iMinusThree); - printMESA (iMinusThree > iTwo); - - printMESA (_Two == _Two); - printMESA (_Two == _Two2); - printMESA (_Two == _MinusThree); - printMESA (_MinusThree == _MinusThree); - printMESA (iTwo == iTwo); - printMESA (iTwo == iTwo2); - printMESA (iTwo == iMinusThree); - printMESA (iMinusThree == iMinusThree); - - printMESA (_Two != _Two); - printMESA (_Two != _Two2); - printMESA (_Two != _MinusThree); - printMESA (_MinusThree != _MinusThree); - printMESA (iTwo != iTwo); - printMESA (iTwo != iTwo2); - printMESA (iTwo != iMinusThree); - printMESA (iMinusThree != iMinusThree); - - foo foo1; - foo1.f = 13.31; - foo1.v4 = vec4 (44.11, 44.22, 44.33, 44.44); - foo1.v3 = vec3 (33.11, 33.22, 33.33); - foo1.m4 = mat4 (17.88); - foo1.i = 666; - foo1.b = true; - printMESA (foo1); - - // make foo2 the same as foo1 - foo foo2; - foo2.f = 13.31; - foo2.v4 = vec4 (44.11, 44.22, 44.33, 44.44); - foo2.v3 = vec3 (33.11, 33.22, 33.33); - foo2.m4 = mat4 (17.88); - foo2.i = 666; - foo2.b = true; - - printMESA (foo1 == foo2); - printMESA (foo1 != foo2); - - // make them a little bit different - foo2.m4[2].y = 333.333; - printMESA (foo2); - - printMESA (foo1 == foo2); - printMESA (foo1 != foo2); -} - -$output - -true -true -false -true -true -true -false -true - -true -true -true -false -true -true -true -false - -false -false -false -true -false -false -false -true - -false -false -true -false -false -false -true -false - -true -true -false -true -true -true -false -true - -false -false -true -false -false -false -true -false - -13.31 -44.11 -44.22 -44.33 -44.44 -33.11 -33.22 -33.33 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -666 -true - -true -false - -13.31 -44.11 -44.22 -44.33 -44.44 -33.11 -33.22 -33.33 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -0.0 -0.0 -0.0 -333.333 -17.88 -0.0 -0.0 -0.0 -0.0 -17.88 -666 -true - -false -true - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test logical operators. -$ */ - -$program LOGICAL OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _False -0.0 0.0 0.0 0.0 - -$attrib _True -1.0 0.0 0.0 0.0 - -$attrib _False2 -0.0 0.0 0.0 0.0 - -$attrib _True2 -1.0 0.0 0.0 0.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _False; -attribute float _True; -attribute float _False2; -attribute float _True2; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_False); - printMESA (_True); - printMESA (_False2); - printMESA (_True2); - - bool False = bool (_False); - bool True = bool (_True); - bool False2 = bool (_False2); - bool True2 = bool (_True2); - - // - // It is important to test each operator with the following argument types: - // * Both arguments are different variables, even if they have the same values. - // False and False2 are distinct attributes, but are the same in value. - // * Both arguments may be the same variables. This case tests possible - // optimizations, e.g. X && X --> X. - // * Both arguments are constant. This tests constant folding. - // - - printMESA (!False); - printMESA (!True); - printMESA (!false); - printMESA (!true); - - printMESA (False ^^ False2); - printMESA (False ^^ True2); - printMESA (True ^^ False2); - printMESA (True ^^ True2); - printMESA (False ^^ False); - printMESA (False ^^ True); - printMESA (True ^^ False); - printMESA (True ^^ True); - printMESA (false ^^ false); - printMESA (false ^^ true); - printMESA (true ^^ false); - printMESA (true ^^ true); - - printMESA (False && False2); - printMESA (False && True2); - printMESA (True && False2); - printMESA (True && True2); - printMESA (False && False); - printMESA (False && True); - printMESA (True && False); - printMESA (True && True); - printMESA (false && false); - printMESA (false && true); - printMESA (true && false); - printMESA (true && true); - - printMESA (False || False2); - printMESA (False || True2); - printMESA (True || False2); - printMESA (True || True2); - printMESA (False || False); - printMESA (False || True); - printMESA (True || False); - printMESA (True || True); - printMESA (false || false); - printMESA (false || true); - printMESA (true || false); - printMESA (true || true); - - // - // Test short-circuit evaluation of && and ||. The right expression evaluation depends - // on the value of the left expression. If the right expression has side effects, we - // can easily test if it happened. - // - - bool x; - - x = false; - printMESA (x); - printMESA (False && (x = true)); - printMESA (x); - - x = false; - printMESA (x); - printMESA (false && (x = true)); - printMESA (x); - - x = true; - printMESA (x); - printMESA (True || (x = false)); - printMESA (x); - - x = true; - printMESA (x); - printMESA (true || (x = false)); - printMESA (x); -} - -$output - -0.0 -1.0 -0.0 -1.0 - -true -false -true -false - -false -true -true -false -false -true -true -false -false -true -true -false - -false -false -false -true -false -false -false -true -false -false -false -true - -false -true -true -true -false -true -true -true -false -true -true -true - -false -false -false - -false -false -false - -true -true -true - -true -true -true - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test subscript operator/array access. -$ */ - -$program ARRAY ACCESS TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two -2.9 0.0 0.0 0.0 - -$attrib _Vec -11.11 22.22 33.33 44.44 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute float _Two; -attribute vec4 _Vec; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two); - printMESA (_Vec); - - printMESA (_Vec[0]); - printMESA (_Vec[1]); - printMESA (_Vec[2]); - printMESA (_Vec[3]); - - printMESA (_Vec[int (_Zero)]); - printMESA (_Vec[int (_One)]); - printMESA (_Vec[int (_Two)]); -} - -$output - -0.0 -1.1 -2.9 -11.11 -22.22 -33.33 -44.44 - -11.11 -22.22 -33.33 -44.44 - -11.11 -22.22 -33.33 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test pre/post-increment/decrement operators. -$ Note: assumes relational operators being correct. -$ */ - -$program PRE/POST-INC/DEC OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two4 -2.1 2.2 2.3 2.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute vec4 _Two4; - -float fZero, fOne; -vec4 fTwo4; -int iZero, iOne; -ivec4 iTwo4; - -void reset () { - fZero = _Zero; - fOne = _One; - fTwo4 = _Two4; - iZero = int (_Zero); - iOne = int (_One); - iTwo4 = ivec4 (_Two4); -} - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two4); - - // pre-increment - reset (); - printMESA (++fZero); - printMESA (++fOne); - printMESA (++iZero); - printMESA (++iOne); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (++fTwo4 == _Two4 + 1.0); - printMESA (++iTwo4 == ivec4 (_Two4) + 1); - - // pre-decrement - reset (); - printMESA (--fZero); - printMESA (--fOne); - printMESA (--iZero); - printMESA (--iOne); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (--fTwo4 == _Two4 - 1.0); - printMESA (--iTwo4 == ivec4 (_Two4) - 1); - - // post-increment - reset (); - printMESA (fZero++); - printMESA (fOne++); - printMESA (iZero++); - printMESA (iOne++); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (fTwo4++ == _Two4); - printMESA (iTwo4++ == ivec4 (_Two4)); - - // post-decrement - reset (); - printMESA (fZero--); - printMESA (fOne--); - printMESA (iZero--); - printMESA (iOne--); - printMESA (fZero); - printMESA (fOne); - printMESA (iZero); - printMESA (iOne); - printMESA (fTwo4-- == _Two4); - printMESA (iTwo4-- == ivec4 (_Two4)); -} - -$output - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 - -1.0 -2.1 -1 -2 -1.0 -2.1 -1 -2 -true -true - --1.0 -0.1 --1 -0 --1.0 -0.1 --1 -0 -true -true - -0.0 -1.1 -0 -1 -1.0 -2.1 -1 -2 -true -true - -0.0 -1.1 -0 -1 --1.0 -0.1 --1 -0 -true -true - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test arithmetical operators. -$ */ - -$program ARITHMETICAL OPERATOR TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two4 -2.1 2.2 2.3 2.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _Zero; -attribute float _One; -attribute vec4 _Two4; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two4); - - int iZero = int (_Zero); - int iOne = int (_One); - ivec4 iTwo4 = ivec4 (_Two4); - - printMESA (-_Zero); - printMESA (-_One); - printMESA (-_Two4); - printMESA (-_Two4.z); - - printMESA (_Zero + 0.0); - printMESA (_One + 0.0); - printMESA (_Two4 + 0.0); - printMESA (_Two4.y + 0.0); - - printMESA (_Zero + _Zero); - printMESA (_Zero + _One); - printMESA (_Zero + _Two4); - printMESA (_One + _Zero); - printMESA (_One + _Two4); - printMESA (_Two4 + _Two4); - - printMESA (_Zero - 0.0); - printMESA (_One - 0.0); - printMESA (_Two4 - 0.0); - printMESA (_Two4.y - 0.0); - - printMESA (_Zero - _Zero); - printMESA (_Zero - _One); - printMESA (_Zero - _Two4); - printMESA (_One - _Zero); - printMESA (_One - _Two4); - printMESA (_Two4 - _Two4); - - printMESA (_Zero * 1.0); - printMESA (_One * 1.0); - printMESA (_Two4 * 1.0); - printMESA (_Two4.x * 1.0); - - printMESA (_Zero * _Zero); - printMESA (_Zero * _One); - printMESA (_Zero * _Two4); - printMESA (_One * _Zero); - printMESA (_One * _One); - printMESA (_One * _Two4); - printMESA (_Two4 * _Two4); - - printMESA (_Zero / 1.0); - printMESA (_One / 1.0); - printMESA (_Two4 / 1.0); - printMESA (_Two4.x / 1.0); - - printMESA (_Zero / _One); - printMESA (_Zero / _Two4); - printMESA (_One / _One); - printMESA (_One / _Two4); - printMESA (_Two4 / _Two4); -} - -$output - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 - -0.0 --1.1 --2.1 --2.2 --2.3 --2.4 --2.3 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.2 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -1.1 -3.2 -3.3 -3.4 -3.5 -4.2 -4.4 -4.6 -4.8 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.2 - -0.0 --1.1 --2.1 --2.2 --2.3 --2.4 -1.1 --1.0 --1.1 --1.2 --1.3 -0.0 -0.0 -0.0 -0.0 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.1 - -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -0.0 -1.21 -2.31 -2.42 -2.53 -2.64 -4.41 -4.84 -5.29 -5.76 - -0.0 -1.1 -2.1 -2.2 -2.3 -2.4 -2.1 - -0.0 -0.0 -0.0 -0.0 -0.0 -1.0 -0.52381 -0.5 -0.47826 -0.45833 -1.0 -1.0 -1.0 -1.0 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test matrix operations. -$ Note: assumes relational operators being correct. -$ */ - -$program MATRIX TEST - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _Zero -0.0 0.0 0.0 0.0 - -$attrib _One -1.0 1.0 1.0 1.0 - -$attrib _Two -2.0 2.0 2.0 2.0 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute vec4 _Zero; -attribute vec4 _One; -attribute vec4 _Two; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_Zero); - printMESA (_One); - printMESA (_Two); - - mat4 Identity = mat4 (_One.x); - - printMESA (Identity == mat4 (1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0)); - printMESA (Identity * _Two == _Two); - - mat4 Matrix = mat4 (1.1, 1.2, 1.3, 1.4, - 2.1, 2.2, 2.3, 2.4, - 3.1, 3.2, 3.3, 3.4, - 4.1, 4.2, 4.3, 4.4); - - printMESA (Matrix[2].y); - printMESA (Matrix[1]); -} - -$output - -0.0 -0.0 -0.0 -0.0 -1.0 -1.0 -1.0 -1.0 -2.0 -2.0 -2.0 -2.0 -true -true -3.2 -2.1 -2.2 -2.3 -2.4 - - -$ /* -$ -------------------------------------------------------------------------------------------------- -$ Test vec4 extension operations. -$ */ - -$program VEC4 EXTENSION OPERATIONS - -$attrib gl_Vertex -0.0 0.0 0.0 1.0 - -$attrib _One -1.1 0.0 0.0 0.0 - -$attrib _Two4 -2.1 2.2 2.3 2.4 - -$attrib _Three4 -3.1 3.2 3.3 3.4 - -$vertex - -$code - -#version 110 - -#extension MESA_shader_debug: require - -attribute float _One; -attribute vec4 _Two4; -attribute vec4 _Three4; - -void main () { - gl_Position = gl_ModelViewMatrix * gl_Vertex; - gl_FrontColor = vec4 (1.0); - - printMESA (_One); - printMESA (_Two4); - printMESA (_Three4); - - printMESA (vec4 (_One)); - - printMESA (_Two4 + _Three4); - printMESA (_Two4 - _Three4); - printMESA (_Two4 * _Three4); - printMESA (_Two4 / _Three4); - - printMESA (_Two4 + _One); - printMESA (_Two4 - _One); - printMESA (_Two4 * _One); - printMESA (_Two4 / _One); - - printMESA (_One + _Two4); - printMESA (_One - _Two4); - printMESA (_One * _Two4); - printMESA (_One / _Two4); - - printMESA (-_Three4); - - printMESA (dot (_Two4.xyz, _Three4.xyz)); - printMESA (dot (_Two4, _Three4)); - - printMESA (length (_Two4.xyz)); - printMESA (length (_Three4)); - - printMESA (normalize (_Two4.xyz)); - printMESA (normalize (_Three4)); - - vec4 tmp = _Two4; - printMESA (tmp); - - printMESA (_Two4 == _Three4); - printMESA (_Two4 != _Three4); - printMESA (_Two4 == _Two4); - printMESA (_Three4 != _Three4); - printMESA (_Two4 != vec4 (_Two4.xyz, 999.0)); - printMESA (_Two4 != vec4 (999.0, _Two4.yzw)); -} - -$output - -1.1 -2.1 -2.2 -2.3 -2.4 -3.1 -3.2 -3.3 -3.4 - -1.1 -1.1 -1.1 -1.1 - -5.2 -5.4 -5.6 -5.8 --1.0 --1.0 --1.0 --1.0 -6.51 -7.04 -7.59 -8.16 -0.677419 -0.6875 -0.69697 -0.705882 - -3.2 -3.3 -3.4 -3.5 -1.0 -1.1 -1.2 -1.3 -2.31 -2.42 -2.53 -2.64 -1.909091 -2.0 -2.090909 -2.181818 - -3.2 -3.3 -3.4 -3.5 --1.0 --1.1 --1.2 --1.3 -2.31 -2.42 -2.53 -2.64 -0.52381 -0.5 -0.478261 -0.458333 - --3.1 --3.2 --3.3 --3.4 - -21.14 -29.3 - -3.813135 -6.503845 - -0.550728 -0.576953 -0.603178 -0.476641 -0.492017 -0.507392 -0.522768 - -2.1 -2.2 -2.3 -2.4 - -false -true -true -false -true -true |