content/canvas/test/webgl-conformance/conformance/limits/gl-min-uniforms.html

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

michael@0 1 <!--
michael@0 2 Copyright (c) 2011 The Chromium Authors. All rights reserved.
michael@0 3 Use of this source code is governed by a BSD-style license that can be
michael@0 4 found in the LICENSE file.
michael@0 5 -->
michael@0 6 <!DOCTYPE html>
michael@0 7 <html>
michael@0 8 <head>
michael@0 9 <meta charset="utf-8">
michael@0 10 <title>WebGL the minimum number of uniforms are supported.</title>
michael@0 11 <link rel="stylesheet" href="../../resources/js-test-style.css"/>
michael@0 12 <script src="../../resources/js-test-pre.js"></script>
michael@0 13 <script src="../resources/webgl-test.js"> </script>
michael@0 14 <script src="../resources/webgl-test-utils.js"> </script>
michael@0 15 </head>
michael@0 16 <body>
michael@0 17 <canvas id="example" width="4" height="4" style="width: 40px; height: 30px;"></canvas>
michael@0 18 <div id="description"></div>
michael@0 19 <div id="console"></div>
michael@0 20 <script id="vshader" type="x-shader/x-vertex">
michael@0 21 #define NUM_UNIFORMS 128 // See spec
michael@0 22 attribute vec4 vPosition;
michael@0 23 uniform vec4 uni[NUM_UNIFORMS];
michael@0 24 varying vec4 color;
michael@0 25 void main()
michael@0 26 {
michael@0 27 gl_Position = vPosition;
michael@0 28 vec4 c = vec4(0,0,0,0);
michael@0 29 for (int ii = 0; ii < NUM_UNIFORMS; ++ii) {
michael@0 30 c += uni[ii];
michael@0 31 }
michael@0 32 color = c;
michael@0 33 }
michael@0 34 </script>
michael@0 35
michael@0 36 <script id="fshader" type="x-shader/x-fragment">
michael@0 37 precision mediump float;
michael@0 38 varying vec4 color;
michael@0 39 void main()
michael@0 40 {
michael@0 41 gl_FragColor = color;
michael@0 42 }
michael@0 43 </script>
michael@0 44 <script id="vshader2" type="x-shader/x-vertex">
michael@0 45 attribute vec4 vPosition;
michael@0 46 void main()
michael@0 47 {
michael@0 48 gl_Position = vPosition;
michael@0 49 }
michael@0 50 </script>
michael@0 51
michael@0 52 <script id="fshader2" type="x-shader/x-fragment">
michael@0 53 precision mediump float;
michael@0 54 #define NUM_UNIFORMS 16 // See spec
michael@0 55 uniform vec4 uni[NUM_UNIFORMS];
michael@0 56 void main()
michael@0 57 {
michael@0 58 vec4 c = vec4(0,0,0,0);
michael@0 59 for (int ii = 0; ii < NUM_UNIFORMS; ++ii) {
michael@0 60 c += uni[ii];
michael@0 61 }
michael@0 62 gl_FragColor = vec4(c.r, c.g, c.b, c.a / 120.0);
michael@0 63 }
michael@0 64 </script>
michael@0 65 <script>
michael@0 66 description(document.title);
michael@0 67 var wtu = WebGLTestUtils;
michael@0 68 var gl = wtu.create3DContext("example");
michael@0 69 var program = wtu.setupTexturedQuad(gl);
michael@0 70
michael@0 71 //------------------------------------------------------------------------------
michael@0 72 var program = wtu.setupProgram(gl, ['vshader', 'fshader'], ['vPosition'], [0]);
michael@0 73
michael@0 74 for (var ii = 0; ii < 128; ++ii) {
michael@0 75 var loc = gl.getUniformLocation(program, "uni[" + ii + "]");
michael@0 76 gl.uniform4f(loc, 2/256, 2/512, 2/1024, ii/8128);
michael@0 77 }
michael@0 78
michael@0 79 wtu.drawQuad(gl);
michael@0 80 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
michael@0 81 wtu.checkCanvasRect(gl, 0, 0, gl.canvas.width, gl.canvas.height, [255, 127, 64, 255], "Should render 255,127,64,32 (+/-1)", 1);
michael@0 82
michael@0 83 //------------------------------------------------------------------------------
michael@0 84 var program = wtu.setupProgram(gl, ['vshader2', 'fshader2'], ['vPosition'], [0]);
michael@0 85
michael@0 86 for (var ii = 0; ii < 16; ++ii) {
michael@0 87 var loc = gl.getUniformLocation(program, "uni[" + ii + "]");
michael@0 88 gl.uniform4f(loc, 16/2048, 16/1024, 16/512, ii);
michael@0 89 }
michael@0 90
michael@0 91 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
michael@0 92 wtu.drawQuad(gl);
michael@0 93 glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup.");
michael@0 94 wtu.checkCanvasRect(gl, 0, 0, gl.canvas.width, gl.canvas.height, [32, 64, 127, 255], "Should render 32,64,127,255 (+/-1)", 1);
michael@0 95
michael@0 96 successfullyParsed = true;
michael@0 97
michael@0 98 </script>
michael@0 99 <script>finishTest();</script>
michael@0 100
michael@0 101 </body>
michael@0 102 </html>
michael@0 103
michael@0 104

mercurial