1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/devtools/shadereditor/test/doc_shader-order.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,83 @@ 1.4 +<!-- Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ --> 1.6 +<!doctype html> 1.7 + 1.8 +<html> 1.9 + <head> 1.10 + <meta charset="utf-8"/> 1.11 + <title>WebGL editor test page</title> 1.12 + 1.13 + <script id="shader-vs" type="x-shader/x-vertex"> 1.14 + precision lowp float; 1.15 + 1.16 + void main(void) { 1.17 + gl_Position = vec4(0, 0, 0, 1); // I'm a vertex shader! 1.18 + } 1.19 + </script> 1.20 + 1.21 + <script id="shader-fs" type="x-shader/x-fragment"> 1.22 + precision lowp float; 1.23 + varying vec3 vFragmentColor; 1.24 + 1.25 + void main(void) { 1.26 + gl_FragColor = vec4(1, 0, 0, 1); // I'm a fragment shader! 1.27 + } 1.28 + </script> 1.29 + </head> 1.30 + 1.31 + <body> 1.32 + <canvas width="512" height="512"></canvas> 1.33 + 1.34 + <script type="text/javascript;version=1.8"> 1.35 + "use strict"; 1.36 + 1.37 + let canvas, gl; 1.38 + 1.39 + window.onload = function() { 1.40 + canvas = document.querySelector("canvas"); 1.41 + gl = canvas.getContext("webgl", { preserveDrawingBuffer: true }); 1.42 + 1.43 + let shaderProgram = gl.createProgram(); 1.44 + let vertexShader, fragmentShader; 1.45 + 1.46 + // Compile and attach the shaders in a random order. The test will 1.47 + // ensure that the correct vertex and fragment source is retrieved 1.48 + // regardless of this crazyness. 1.49 + if (Math.random() > 0.5) { 1.50 + vertexShader = getShader(gl, "shader-vs"); 1.51 + fragmentShader = getShader(gl, "shader-fs"); 1.52 + } else { 1.53 + fragmentShader = getShader(gl, "shader-fs"); 1.54 + vertexShader = getShader(gl, "shader-vs"); 1.55 + } 1.56 + if (Math.random() > 0.5) { 1.57 + gl.attachShader(shaderProgram, vertexShader); 1.58 + gl.attachShader(shaderProgram, fragmentShader); 1.59 + } else { 1.60 + gl.attachShader(shaderProgram, fragmentShader); 1.61 + gl.attachShader(shaderProgram, vertexShader); 1.62 + } 1.63 + 1.64 + gl.linkProgram(shaderProgram); 1.65 + } 1.66 + 1.67 + function getShader(gl, id) { 1.68 + let script = document.getElementById(id); 1.69 + let source = script.textContent; 1.70 + let shader; 1.71 + 1.72 + if (script.type == "x-shader/x-fragment") { 1.73 + shader = gl.createShader(gl.FRAGMENT_SHADER); 1.74 + } else if (script.type == "x-shader/x-vertex") { 1.75 + shader = gl.createShader(gl.VERTEX_SHADER); 1.76 + } 1.77 + 1.78 + gl.shaderSource(shader, source); 1.79 + gl.compileShader(shader); 1.80 + 1.81 + return shader; 1.82 + } 1.83 + </script> 1.84 + </body> 1.85 + 1.86 +</html>