tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ternary-operators-in-initializers.html (5614B)


      1 <!--
      2 Copyright (c) 2019 The Khronos Group Inc.
      3 Use of this source code is governed by an MIT-style license that can be
      4 found in the LICENSE.txt file.
      5 -->
      6 <!DOCTYPE html>
      7 <html>
      8 <head>
      9 <meta charset="utf-8">
     10 <link rel="stylesheet" href="../../../resources/js-test-style.css" />
     11 <link rel="stylesheet" href="../../../resources/glsl-feature-tests.css" />
     12 <script src="../../../js/js-test-pre.js"></script>
     13 <script src="../../../js/webgl-test-utils.js"></script>
     14 <script src="../../../js/glsl-conformance-test.js"></script>
     15 <title></title>
     16 </head>
     17 <body>
     18 <div id="description"></div>
     19 <div id="console"></div>
     20 <script id="intFragShader" type="text/something-not-javascript">
     21 void main() {
     22    int i = 2, j = (i > 1) ? 1 : 0;
     23    gl_FragColor = vec4(0.0, j, 0.0, 1.0);
     24 }
     25 </script>
     26 <script id="ivec2FragShader" type="text/something-not-javascript">
     27 void main() {
     28    ivec2 i = ivec2(2, 0), j = (i.x > 1) ? ivec2(0, 1) : ivec2(0, 0);
     29    gl_FragColor = vec4(j, 0.0, 1.0);
     30 }
     31 </script>
     32 <script id="ivec3FragShader" type="text/something-not-javascript">
     33 void main() {
     34    ivec3 i = ivec3(0, 2, 0), j = (i.y > 1) ? ivec3(0, 1, 0) : ivec3(0, 0, 0);
     35    gl_FragColor = vec4(j, 1.0);
     36 }
     37 </script>
     38 <script id="ivec4FragShader" type="text/something-not-javascript">
     39 void main() {
     40    ivec4 i = ivec4(0.0, 0.0, 2.0, 0.0), j = (i.z > 1) ? ivec4(0, 1, 0, 1) : ivec4(0, 0, 0, 1);
     41    gl_FragColor = vec4(j);
     42 }
     43 </script>
     44 <script id="floatFragShader" type="text/something-not-javascript">
     45 void main() {
     46    precision mediump float;
     47    float i = 2.0, j = (i > 1.0) ? 1.0 : 0.0;
     48    gl_FragColor = vec4(0.0, j, 0.0, 1.0);
     49 }
     50 </script>
     51 <script id="vec2FragShader" type="text/something-not-javascript">
     52 void main() {
     53    precision mediump float;
     54    vec2 i = vec2(2.0, 0.0), j = (i.x > 1.0) ? vec2(0.0, 1.0) : vec2(0.0, 0.0);
     55    gl_FragColor = vec4(j, 0.0, 1.0);
     56 }
     57 </script>
     58 <script id="vec3FragShader" type="text/something-not-javascript">
     59 void main() {
     60    precision mediump float;
     61    vec3 i = vec3(0.0, 2.0, 0.0), j = (i.y > 1.0) ? vec3(0.0, 1.0, 0.0) : vec3(0.0, 0.0, 0.0);
     62    gl_FragColor = vec4(j, 1.0);
     63 }
     64 </script>
     65 <script id="vec4FragShader" type="text/something-not-javascript">
     66 void main() {
     67    precision mediump float;
     68    vec4 i = vec4(0.0, 0.0, 2.0, 0.0), j = (i.z > 1.0) ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(0.0, 0.0, 0.0, 1.0);
     69    gl_FragColor = j;
     70 }
     71 </script>
     72 <script id="boolFragShader" type="text/something-not-javascript">
     73 void main() {
     74    bool i = true, j = i ? true : false;
     75    gl_FragColor = vec4(0.0, j, 0.0, 1.0);
     76 }
     77 </script>
     78 <script id="bvec2FragShader" type="text/something-not-javascript">
     79 void main() {
     80    bvec2 i = bvec2(true, false), j = i.x ? bvec2(false, true) : bvec2(false, false);
     81    gl_FragColor = vec4(j, 0.0, 1.0);
     82 }
     83 </script>
     84 <script id="bvec3FragShader" type="text/something-not-javascript">
     85 void main() {
     86    bvec3 i = bvec3(false, true, false), j = i.y ? bvec3(false, true, false) : bvec3(false, false, false);
     87    gl_FragColor = vec4(j, 1.0);
     88 }
     89 </script>
     90 <script id="bvec4FragShader" type="text/something-not-javascript">
     91 void main() {
     92    bvec4 i = bvec4(false, false, true, true), j = i.z ? bvec4(false, true, false, true) : bvec4(false, false, false, true);
     93    gl_FragColor = vec4(j);
     94 }
     95 </script>
     96 <script>
     97 "use strict";
     98 description("This test verifies initializers with ternary operators correctly initialize all variables.");
     99 // Test fragment shaders are of the form
    100 //     void main() {
    101 //         {type} i = {initializer}, j = {ternary test using i that succeeds} ? : {green} : {black};
    102 //         gl_FragColor = vec4(...); // Emit green so that test will pass
    103 //     }
    104 // The fragment shader must compile and link with the default vertex shader. J must be able to use the values of I as well as have its own
    105 // values properly initialized.
    106 var tests = [
    107    { fShaderId: 'intFragShader', passMsg: 'Ternary operator in integer initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    108    { fShaderId: 'ivec2FragShader', passMsg: 'Ternary operator in ivec2 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    109    { fShaderId: 'ivec3FragShader', passMsg: 'Ternary operator in ivec3 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    110    { fShaderId: 'ivec4FragShader', passMsg: 'Ternary operator in ivec4 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    111    { fShaderId: 'floatFragShader', passMsg: 'Ternary operator in float initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    112    { fShaderId: 'vec2FragShader', passMsg: 'Ternary operator in vec2 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    113    { fShaderId: 'vec3FragShader', passMsg: 'Ternary operator in vec3 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    114    { fShaderId: 'vec4FragShader', passMsg: 'Ternary operator in vec4 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    115    { fShaderId: 'boolFragShader', passMsg: 'Ternary operator in bool initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    116    { fShaderId: 'bvec2FragShader', passMsg: 'Ternary operator in bvec2 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    117    { fShaderId: 'bvec3FragShader', passMsg: 'Ternary operator in bvec3 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    118    { fShaderId: 'bvec4FragShader', passMsg: 'Ternary operator in bvec4 initalization', fShaderSuccess: true, linkSuccess: true, render: true },
    119 ];
    120 GLSLConformanceTester.runTests(tests);
    121 var successfullyParsed = true;
    122 </script>
    123 </body>
    124 </html>