/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk
4.8.1 by galaxyAbstractor
Cleaned up shitty code
1
<!DOCTYPE html>
2
<html>
3
4
<head>
5
	<title>Shader Startup Benchmark</title>
6
	<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
7
11.2.6 by Erik Wikström
Added missing WebGL javascript files, moved bothe them and the existing ones to /js. Updated references
8
	<script type="text/javascript" src="../js/glMatrix-0.9.5.min.js"></script>
9
	<script type="text/javascript" src="../js/webgl-utils.js"></script>
10
	<script type="text/javascript" src="../js/webgl-helpers.js"></script>
11
	<script type="text/javascript" src="../js/httpAjax.js"></script>
4.8.1 by galaxyAbstractor
Cleaned up shitty code
12
13
	<script id="shader-fs" type="x-shader/x-fragment">
14
		precision mediump float;
15
16
		uniform vec2 iResolution;
17
		uniform float iGlobalTime;
18
19
		void main(void) {
20
			vec2 uv = gl_FragCoord.xy / iResolution.xy;
21
			gl_FragColor = vec4(uv, 0.5 + 0.5 * sin(iGlobalTime), 1.0);
22
		}
23
24
	</script>
25
26
	<script id="shader-vs" type="x-shader/x-vertex">
27
		attribute vec3 aVertexPosition;
28
29
		uniform mat4 uMVMatrix;
30
		uniform mat4 uPMatrix;
31
32
		varying vec4 vColor;
33
34
		void main(void) {
35
			gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
36
		}
37
	</script>
38
39
40
	<script type="text/javascript">
41
42
		function initShaders() {
43
			var fragmentShader = getShader(gl, "shader-fs");
44
			var vertexShader = getShader(gl, "shader-vs");
45
46
			shaderProgram = gl.createProgram();
47
			gl.attachShader(shaderProgram, vertexShader);
48
			gl.attachShader(shaderProgram, fragmentShader);
49
			gl.linkProgram(shaderProgram);
50
51
			if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
52
				alert("Could not initialise shaders");
53
			}
54
55
			gl.useProgram(shaderProgram);
56
57
			shaderProgram.vertexPositionAttribute = gl.getAttribLocation(shaderProgram, "aVertexPosition");
58
			gl.enableVertexAttribArray(shaderProgram.vertexPositionAttribute);
59
60
			shaderProgram.pMatrixUniform = gl.getUniformLocation(shaderProgram, "uPMatrix");
61
			shaderProgram.mvMatrixUniform = gl.getUniformLocation(shaderProgram, "uMVMatrix");
62
63
			shaderProgram.iResolutionUniform = gl.getUniformLocation(shaderProgram, "iResolution");
64
			shaderProgram.iGlobalTimeUniform = gl.getUniformLocation(shaderProgram, "iGlobalTime");
65
66
		}
67
68
		var squareVertexPositionBuffer;
69
70
		function initBuffers() {
71
			squareVertexPositionBuffer = gl.createBuffer();
72
			gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
73
			vertices = [
74
				1.0,  1.0,  0.0,
75
				-1.0,  1.0,  0.0,
76
				1.0, -1.0,  0.0,
77
				-1.0, -1.0,  0.0
78
			];
79
			gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
80
			squareVertexPositionBuffer.itemSize = 3;
81
			squareVertexPositionBuffer.numItems = 4;
82
		}
83
84
		function drawScene() {
85
			gl.uniform2f(shaderProgram.iResolutionUniform, gl.viewportWidth, gl.viewportHeight);
86
			gl.uniform1f(shaderProgram.iGlobalTimeUniform, timecount);
87
88
			gl.viewport(0, 0, gl.viewportWidth, gl.viewportHeight);
89
			gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
90
91
			mat4.ortho(-1, 1, -1, 1, -1, 1, pMatrix);
92
			mat4.identity(mvMatrix);
93
94
			gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexPositionBuffer);
95
			gl.vertexAttribPointer(shaderProgram.vertexPositionAttribute, squareVertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
96
97
			gl.uniformMatrix4fv(shaderProgram.pMatrixUniform, false, pMatrix);
98
			gl.uniformMatrix4fv(shaderProgram.mvMatrixUniform, false, mvMatrix);
99
100
			gl.drawArrays(gl.TRIANGLE_STRIP, 0, squareVertexPositionBuffer.numItems);
101
		}
102
103
104
		var lastTime = 0;
105
106
		function animate() {
107
			var timeNow = new Date().getTime();
108
			if (lastTime != 0) {
109
				var elapsed = timeNow - lastTime;
110
			}
111
			lastTime = timeNow;
112
113
			updatefps(elapsed, "fps");
114
			sendbenchmark(8.0, "Startup Screenaligned");
115
		}
116
117
		function tick() {
118
			requestAnimFrame(tick);
119
			drawScene();
120
			animate();
121
		}
122
123
		function webGLStart(canvas) {
124
			var canvas = document.getElementById(canvas);
125
			initGL(canvas);
126
			initShaders();
127
			initBuffers();
128
129
			gl.clearColor(0.0, 0.0, 0.0, 1.0);
130
			gl.enable(gl.DEPTH_TEST);
131
132
			tick();
133
		}    
134
135
	</script>
136
137
</head>
138
139
140
<body onload="genID('Startup Screenaligned'); webGLStart('canvas');">
141
8.2.1 by Daniel Johansson
Broken out inline CSS in WebGL
142
	<canvas id="canvas"></canvas>
4.8.1 by galaxyAbstractor
Cleaned up shitty code
143
	<div id="fps"></div>
144
145
</body>
146
147
</html>