| Index: conformance/glsl/misc/glsl-function-nodes.html
|
| ===================================================================
|
| --- conformance/glsl/misc/glsl-function-nodes.html (revision 0)
|
| +++ conformance/glsl/misc/glsl-function-nodes.html (revision 0)
|
| @@ -0,0 +1,135 @@
|
| +<!--
|
| +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>
|
| +<html>
|
| +<head>
|
| +<meta charset="utf-8">
|
| +<title>GLSL function nodes Test</title>
|
| +<link rel="stylesheet" href="../../../resources/js-test-style.css"/>
|
| +<script src="../../../resources/js-test-pre.js"></script>
|
| +<script src="../../resources/webgl-test.js"> </script>
|
| +<script src="../../resources/webgl-test-utils.js"> </script>
|
| +
|
| +<script id="vshaderFunction", type="x-shader/x-vertex">
|
| +attribute vec4 aPosition;
|
| +varying vec4 vColor;
|
| +
|
| +float sign_emu(float value) {
|
| + if (value == 0.0) return 0.0;
|
| + return value > 0.0 ? 1.0 : -1.0;
|
| +}
|
| +
|
| +void main()
|
| +{
|
| + gl_Position = aPosition;
|
| + vec2 texcoord = vec2(aPosition.xy * 0.5 + vec2(0.5, 0.5));
|
| + vec4 color = vec4(
|
| + texcoord,
|
| + texcoord.x * texcoord.y,
|
| + (1.0 - texcoord.x) * texcoord.y * 0.5 + 0.5);
|
| + vColor = vec4(
|
| + sign_emu(color.x * 2.0 - 1.0) * 0.5 + 0.5,
|
| + sign_emu(color.y * 2.0 - 1.0) * 0.5 + 0.5,
|
| + 0,
|
| + 1);
|
| +}
|
| +</script>
|
| +
|
| +<script id="vshaderMacro", type="x-shader/x-vertex">
|
| +attribute vec4 aPosition;
|
| +varying vec4 vColor;
|
| +
|
| +#define sign_emu(value) ((value) == 0.0 ? 0.0 : ((value) > 0.0 ? 1.0 : -1.0))
|
| +
|
| +void main()
|
| +{
|
| + gl_Position = aPosition;
|
| + vec2 texcoord = vec2(aPosition.xy * 0.5 + vec2(0.5, 0.5));
|
| + vec4 color = vec4(
|
| + texcoord,
|
| + texcoord.x * texcoord.y,
|
| + (1.0 - texcoord.x) * texcoord.y * 0.5 + 0.5);
|
| + vColor = vec4(
|
| + sign_emu(color.x * 2.0 - 1.0) * 0.5 + 0.5,
|
| + sign_emu(color.y * 2.0 - 1.0) * 0.5 + 0.5,
|
| + 0,
|
| + 1);
|
| +}
|
| +</script>
|
| +
|
| +<script id="fshader", type="x-shader/x-fragment">
|
| +#if defined(GL_ES)
|
| +precision mediump float;
|
| +#endif
|
| +varying vec4 vColor;
|
| +void main()
|
| +{
|
| + gl_FragColor = vColor;
|
| +}
|
| +</script>
|
| +</head>
|
| +<body>
|
| +<canvas id="canvasFunction" width="50" height="50"></canvas>
|
| +<canvas id="canvasMacro" width="50" height="50"></canvas>
|
| +<div id="description">This tests against a Mac driver bug related to function calls.</div>
|
| +<div id="console"></div>
|
| +<script>
|
| +var width = 50;
|
| +var height = 50;
|
| +
|
| +function drawAndRead(canvasID, vshaderID, buffer)
|
| +{
|
| + var gl = initWebGL(canvasID, vshaderID, "fshader", ["aPosition"], [0, 0, 0, 1], 1);
|
| + var vertexObject = gl.createBuffer();
|
| + gl.bindBuffer(gl.ARRAY_BUFFER, vertexObject);
|
| + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([ 0,0.5,0, -0.5,-0.5,0, 0.5,-0.5,0 ]), gl.STATIC_DRAW);
|
| + gl.enableVertexAttribArray(0);
|
| + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
|
| +
|
| + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
| + gl.drawArrays(gl.TRIANGLES, 0, 3);
|
| + gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buffer);
|
| + if (gl.getError() != gl.NO_ERROR)
|
| + return false;
|
| + return true;
|
| +}
|
| +
|
| +function compareRendering(buffer1, buffer2, tol)
|
| +{
|
| + for (var i = 0; i < width * height * 4; ++i) {
|
| + if (Math.abs(buffer1[i] - buffer2[i]) > tol)
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +function init()
|
| +{
|
| + if (window.initNonKhronosFramework) {
|
| + window.initNonKhronosFramework(false);
|
| + }
|
| +
|
| + var bufFunction = new Uint8Array(width * height * 4);
|
| + var bufMacro = new Uint8Array(width * height * 4);
|
| +
|
| + if (drawAndRead("canvasFunction", "vshaderFunction", bufFunction) == false ||
|
| + drawAndRead("canvasMacro", "vshaderMacro", bufMacro) == false) {
|
| + testFailed("Setup failed");
|
| + } else {
|
| + if (compareRendering(bufFunction, bufMacro, 4) == false)
|
| + testFailed("Rendering results are different");
|
| + else
|
| + testPassed("Rendering results are the same");
|
| + }
|
| +}
|
| +
|
| +init();
|
| +successfullyParsed = true;
|
| +</script>
|
| +<script src="../../../resources/js-test-post.js"></script>
|
| +</body>
|
| +</html>
|
| +
|
|
|
| Property changes on: conformance/glsl/misc/glsl-function-nodes.html
|
| ___________________________________________________________________
|
| Added: svn:executable
|
| + *
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|