| Index: third_party/webgl/sdk/tests/extra/out-of-bounds-uniform-array-access.html
|
| ===================================================================
|
| --- third_party/webgl/sdk/tests/extra/out-of-bounds-uniform-array-access.html (revision 0)
|
| +++ third_party/webgl/sdk/tests/extra/out-of-bounds-uniform-array-access.html (revision 0)
|
| @@ -0,0 +1,109 @@
|
| +<!--
|
| +Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +Use of this source code is governed by a BSD-style license that can be
|
| +found in the LICENSE file.
|
| + -->
|
| +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
| + "http://www.w3.org/TR/html4/loose.dtd">
|
| +<html>
|
| +<head>
|
| +<meta charset="utf-8">
|
| +<title>WebGL ouf of bounds uniform array access.</title>
|
| +<link rel="stylesheet" href="../resources/js-test-style.css"/>
|
| +<script src="../resources/js-test-pre.js"></script>
|
| +<script src="../conformance/resources/webgl-test-utils.js"> </script>
|
| +</head>
|
| +<body style="background: #666;">
|
| +<div id="description"></div>
|
| +<div id="console"></div>
|
| +<div>elem mult: <span id="elemMultDisplay"></span></div>
|
| +<input type="range" id="elemMult" value="4" min="0" max="2048" style="width: 100%;"/>
|
| +<div>line width: <span id="lineWidthDisplay"></span></div>
|
| +<input type="range" id="lineWidth" value="512" min="0" max="2540" style="width: 100%;"/>
|
| +<canvas id="example" width="256" height="256" style="background: black;">
|
| +</canvas>
|
| +<script id="vshader" type="x-shader/x-vertex">
|
| +attribute vec4 vPosition;
|
| +varying vec4 v_color;
|
| +uniform float lineWidth;
|
| +uniform int elemMult;
|
| +uniform vec4 someArray[2];
|
| +void main()
|
| +{
|
| + vec2 texcoord = vec2(vPosition.xy * 0.5 + vec2(0.5, 0.5));
|
| + int index = int(texcoord.x + texcoord.y * lineWidth) * elemMult;
|
| + v_color = someArray[index];
|
| + gl_Position = vPosition;
|
| +}
|
| +</script>
|
| +
|
| +<script id="fshader" type="x-shader/x-fragment">
|
| +precision mediump float;
|
| +varying vec4 v_color;
|
| +void main()
|
| +{
|
| + gl_FragColor = v_color * vec4(1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0) + vec4(0,0,0,0.5);
|
| +}
|
| +</script>
|
| +<script>
|
| +window.onload = main;
|
| +debug("Tests a WebGL program that accesses out of bounds uniform array elements");
|
| +
|
| +function main() {
|
| + var wtu = WebGLTestUtils;
|
| + var canvas = document.getElementById("example");
|
| +
|
| + var gl = wtu.create3DContext(canvas);
|
| + var program = wtu.setupProgram(
|
| + gl,
|
| + [wtu.loadShaderFromScript(gl, 'vshader', gl.VERTEX_SHADER),
|
| + wtu.loadShaderFromScript(gl, 'fshader', gl.FRAGMENT_SHADER)],
|
| + ['vPosition'], [0]);
|
| + var gridRes = 255;
|
| + wtu.setupQuad(gl, gridRes, 0);
|
| + var lineWidthLoc = gl.getUniformLocation(program, "lineWidth");
|
| + var elemMultLoc = gl.getUniformLocation(program, "elemMult");
|
| + assertMsg(gl.getError() == gl.NO_ERROR, "Should be no errors from setup.");
|
| +
|
| + var lineWidth = 512;
|
| + var lineWidthElem = document.getElementById("lineWidth");
|
| + var lineWidthDisplayElem = document.getElementById("lineWidthDisplay");
|
| +
|
| + lineWidthElem.value = lineWidth;
|
| +
|
| + lineWidthElem.addEventListener('change', function(event) {
|
| + //console.log(event.target.value);
|
| + lineWidth = event.target.value;
|
| + draw();
|
| + }, false);
|
| +
|
| + var elemMult = 4;
|
| + var elemMultElem = document.getElementById("elemMult");
|
| + var elemMultDisplayElem = document.getElementById("elemMultDisplay");
|
| +
|
| + elemMultElem.value = elemMult;
|
| +
|
| + elemMultElem.addEventListener('change', function(event) {
|
| + //console.log(event.target.value);
|
| + elemMult = event.target.value;
|
| + draw();
|
| + }, false);
|
| +
|
| + draw();
|
| +
|
| + function draw() {
|
| + lineWidthDisplayElem.innerText = lineWidth;
|
| + elemMultDisplayElem.innerText = elemMult;
|
| + gl.uniform1f(lineWidthLoc, lineWidth);
|
| + gl.uniform1i(elemMultLoc, elemMult);
|
| + gl.drawElements(gl.TRIANGLES, gridRes * gridRes * 6, gl.UNSIGNED_SHORT, 0);
|
| + }
|
| +
|
| + successfullyParsed = true;
|
| +}
|
| +
|
| +</script>
|
| +</body>
|
| +</html>
|
| +
|
| +
|
|
|
| Property changes on: third_party/webgl/sdk/tests/extra/out-of-bounds-uniform-array-access.html
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|