tor-browser

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

uniforms-should-not-lose-values.html (2197B)


      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 
      7 <!DOCTYPE html>
      8 <html>
      9 <head>
     10 <meta charset="utf-8">
     11 <title>Driver Bug - Uniforms should no lose values</title>
     12 <link rel="stylesheet" href="../../../resources/js-test-style.css"/>
     13 <script src="../../../js/js-test-pre.js"></script>
     14 <script src="../../../js/webgl-test-utils.js"></script>
     15 </head>
     16 <body>
     17 <canvas id="canvas" width="512" height="256"> </canvas>
     18 <div id="description"></div>
     19 <div id="console"></div>
     20 <script id="vshader" type="x-shader/x-vertex">
     21 uniform float k,u;
     22 uniform mat4 l;
     23 attribute vec3 a;
     24 void main(){
     25  gl_Position=l*vec4(a,1.+u+k);
     26 }
     27 </script>
     28 <script id="fshader" type="x-shader/x-fragment">
     29 precision mediump float;
     30 uniform float w,x,y,z;
     31 void main() {
     32 gl_FragColor=vec4(1.-y,y,w+x+z,1);
     33 }
     34 </script>
     35 <script>
     36 "use strict";
     37 // Certain drivers fail this test. Specifically Mac NVidia GT 330 on OSX 10.8.2
     38 description();
     39 debug("");
     40 var wtu = WebGLTestUtils;
     41 function test() {
     42  var gl = wtu.create3DContext("canvas");
     43  if (!gl) {
     44    testFailed("context does not exist");
     45    return;
     46  }
     47 
     48  wtu.setupUnitQuad(gl);
     49  var program = wtu.setupProgram(gl, ["vshader", "fshader"], ["a"], undefined, true);
     50 
     51  var setUniformf = function(name, val) {
     52    var loc = gl.getUniformLocation(program, name);
     53    var func = 'uniform' + val.length + 'fv';
     54    gl[func](loc, val);
     55  };
     56 
     57  var setUniformMat = function(name, val) {
     58    var loc = gl.getUniformLocation(program, name);
     59    var func = 'uniformMatrix' + Math.sqrt(val.length) + 'fv';
     60    gl[func](loc, false, val);
     61  };
     62 
     63  setUniformMat('l', [1, 0 ,0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);
     64  gl.viewport(0, 0, 256, 256);
     65  setUniformf('y', [0]);
     66  wtu.drawUnitQuad(gl);
     67  gl.viewport(256, 0, 256, 256);
     68  setUniformf('y', [1]);
     69  wtu.drawUnitQuad(gl);
     70  wtu.checkCanvasRect(gl, 0, 0, 256, 256, [255, 0, 0, 255]);
     71  wtu.checkCanvasRect(gl, 256, 0, 256, 256, [0, 255, 0, 255]);
     72 
     73  wtu.glErrorShouldBe(gl, gl.NO_ERROR, "there should be no errors");
     74 }
     75 test();
     76 var successfullyParsed = true;
     77 </script>
     78 <script src="../../../js/js-test-post.js"></script>
     79 </body>
     80 </html>