<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <head> <!-- <meta http-equiv="refresh" content="7" >--> <title></title> <!--<script src="webgl-debug.js"></script>--> <script type="text/javascript">// <![CDATA[ var width = 1920; var height = 1080; var gl; var canvas; var buffer; var now = Date.now(); window.onload = init; function init() { var shaderScript; var shaderSource; var vertexShader; var fragmentShader; canvas = document.getElementById('glscreen'); //gl = WebGLDebugUtils.makeDebugContext(canvas.getContext('experimental-webgl')); gl = canvas.getContext('experimental-webgl'); canvas.width = width; canvas.height = height; gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.bufferData( gl.ARRAY_BUFFER, new Float32Array([ -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0]), gl.STATIC_DRAW ); shaderScript = document.getElementById("2d-vertex-shader"); shaderSource = shaderScript.text; vertexShader = gl.createShader(gl.VERTEX_SHADER); gl.shaderSource(vertexShader, shaderSource); gl.compileShader(vertexShader); shaderScript = document.getElementById("2d-fragment-shader"); shaderSource = shaderScript.text; fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); gl.shaderSource(fragmentShader, shaderSource); gl.compileShader(fragmentShader); program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); console.error(gl.getError()); gl.useProgram(program); render(); } function render() { window.requestAnimationFrame(render, canvas); var positionLocation = gl.getAttribLocation(program, "a_position"); gl.enableVertexAttribArray(positionLocation); gl.vertexAttribPointer(positionLocation, 2, gl.FLOAT, false, 0, 0); var timeLocation = gl.getUniformLocation(program, "time"); gl.uniform1f(timeLocation, (Date.now() - now) / 1000); var resolutionLocation = gl.getUniformLocation(program, "resolution"); gl.uniform2fv(resolutionLocation, [width, height]); gl.drawArrays(gl.TRIANGLES, 0, 6); } // ]]></script> <script id="2d-vertex-shader" type="x-shader/x-vertex">// <![CDATA[ attribute vec2 a_position; void main() { gl_Position = vec4(a_position, 0, 1); } // ]]></script> <script id="2d-fragment-shader" type="x-shader/x-fragment"> precision highp float ; uniform float time; uniform vec2 resolution; #define GENR 1717.17 float magic = 0.; void _17GenR_init(float x, float y) { magic = mod(GENR * fract(time) * (x + 1.) + y, GENR); } #define _17GenR (magic = sin(magic *= magic)) vec4 tv_test_pattern(float x, float y, float w, float h) { return vec4(x / w + _17GenR/2.+.5, 0., 0., 1.); } vec4 tv_static(float x, float y, float w, float h) { float color = _17GenR; return vec4(color, color, color, 1); } void main () { float x = gl_FragCoord.x; float y = gl_FragCoord.y; float w = resolution.x; float h = resolution.y; _17GenR_init(x, y); float modTime = mod(time, 8.); #define NEXT(time, code) else if(modTime < time) { gl_FragColor = code(x, y, w, h); } if(modTime < 1.7) { gl_FragColor = tv_static(x, y, w, h); } else if(modTime < 1.8) { gl_FragColor = tv_test_pattern(x, y, w, h); } else if(modTime < 1.9) { gl_FragColor = tv_static(x, y, w, h); } else if(modTime < 2.0) { gl_FragColor = tv_test_pattern(x, y, w, h); } else if(modTime < 2.1) { gl_FragColor = tv_static(x, y, w, h); } else if(modTime < 7.) { gl_FragColor = tv_test_pattern(x, y, w, h); } } </script> </head> <body> <canvas id="glscreen"></canvas> </body> </html>