bzr branch
http://gegoxaren.bato24.eu/bzr/lenasys/0.1
4.8.1
by galaxyAbstractor
Cleaned up shitty code |
1 |
//----------------------------------------------------------
|
2 |
// helper Globals
|
|
3 |
//----------------------------------------------------------
|
|
4 |
||
5 |
var shaderProgram; |
|
6 |
var gl; |
|
7 |
||
8 |
var fps = 0; |
|
9 |
var fpsmax = 0; |
|
10 |
var timecount = 0; |
|
11 |
var fpssum = 0; |
|
12 |
var fpscount = 1; |
|
13 |
var benchtime = 0; |
|
14 |
||
15 |
var username = ""; |
|
16 |
||
17 |
//----------------------------------------------------------
|
|
18 |
// getShader collects shader and compiles it. Errors are printed in alert
|
|
19 |
//----------------------------------------------------------
|
|
20 |
||
21 |
function getShader(gl, id) { |
|
22 |
var shaderScript = document.getElementById(id); |
|
23 |
if (!shaderScript) { |
|
24 |
return null; |
|
25 |
} |
|
26 |
||
27 |
var str = ""; |
|
28 |
var k = shaderScript.firstChild; |
|
29 |
while (k) { |
|
30 |
if (k.nodeType == 3) { |
|
31 |
str += k.textContent; |
|
32 |
} |
|
33 |
k = k.nextSibling; |
|
34 |
} |
|
35 |
||
36 |
var shader; |
|
37 |
if (shaderScript.type == "x-shader/x-fragment") { |
|
38 |
shader = gl.createShader(gl.FRAGMENT_SHADER); |
|
39 |
} else if (shaderScript.type == "x-shader/x-vertex") { |
|
40 |
shader = gl.createShader(gl.VERTEX_SHADER); |
|
41 |
} else { |
|
42 |
return null; |
|
43 |
} |
|
44 |
||
45 |
gl.shaderSource(shader, str); |
|
46 |
gl.compileShader(shader); |
|
47 |
||
48 |
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { |
|
49 |
alert(gl.getShaderInfoLog(shader)); |
|
50 |
return null; |
|
51 |
} |
|
52 |
||
53 |
return shader; |
|
54 |
}
|
|
55 |
||
56 |
//----------------------------------------------------------
|
|
57 |
// Matrix stack variables
|
|
58 |
//----------------------------------------------------------
|
|
59 |
||
60 |
var mvMatrix = mat4.create(); |
|
61 |
var mvMatrixStack = []; |
|
62 |
var pMatrix = mat4.create(); |
|
63 |
||
64 |
//----------------------------------------------------------
|
|
65 |
// Push Matrix
|
|
66 |
//----------------------------------------------------------
|
|
67 |
||
68 |
function mvPushMatrix() { |
|
69 |
var copy = mat4.create(); |
|
70 |
mat4.set(mvMatrix, copy); |
|
71 |
mvMatrixStack.push(copy); |
|
72 |
}
|
|
73 |
||
74 |
//----------------------------------------------------------
|
|
75 |
// Pop Matrix
|
|
76 |
//----------------------------------------------------------
|
|
77 |
||
78 |
function mvPopMatrix() { |
|
79 |
if (mvMatrixStack.length == 0) { |
|
80 |
throw "Invalid popMatrix!"; |
|
81 |
} |
|
82 |
mvMatrix = mvMatrixStack.pop(); |
|
83 |
}
|
|
84 |
||
85 |
//----------------------------------------------------------
|
|
86 |
// Startup webGL and alert if not available
|
|
87 |
//----------------------------------------------------------
|
|
88 |
||
89 |
function initGL(canvas) { |
|
90 |
try { |
|
91 |
gl = canvas.getContext("experimental-webgl"); |
|
92 |
gl.viewportWidth = canvas.width; |
|
93 |
gl.viewportHeight = canvas.height; |
|
94 |
} catch (e) { |
|
95 |
} |
|
96 |
||
97 |
if (!gl) { |
|
98 |
alert("Could not initialise WebGL, sorry :-("); |
|
99 |
} |
|
100 |
}
|
|
101 |
||
102 |
//----------------------------------------------------------
|
|
103 |
// Measure fps and update div if available
|
|
104 |
//----------------------------------------------------------
|
|
105 |
||
106 |
function updatefps(elapsed,fpsdiv) { |
|
107 |
if(!isNaN(elapsed)) { |
|
108 |
timecount += (elapsed / 1000.0); |
|
109 |
fpssum += (elapsed / 10.0); |
|
110 |
} |
|
111 |
if(elapsed < 1) { |
|
112 |
elapsed = 1; |
|
113 |
} |
|
114 |
||
115 |
fpscount++; |
|
116 |
fps = Math.round((100.0 / (fpssum / fpscount)) * 10.0) / 10.0; |
|
117 |
||
118 |
if(fps > fpsmax&&timecount > 5.0) { |
|
119 |
fpsmax = fps; |
|
120 |
} |
|
121 |
||
122 |
fpsd = document.getElementById(fpsdiv); |
|
123 |
if(fpsd != null) { |
|
124 |
fpsd.innerHTML = fps; |
|
125 |
} |
|
126 |
||
127 |
}
|
|
128 |
||
129 |
//----------------------------------------------------------
|
|
130 |
// Sends benchmark every X seconds
|
|
131 |
//----------------------------------------------------------
|
|
132 |
||
133 |
function sendbenchmark(delay,app) { |
|
134 |
// Every 8 seconds send benchmark data to server! |
|
135 |
if(Math.abs(timecount - benchtime) > delay) { |
|
136 |
benchtime = timecount; |
|
137 |
benchmark(username, app, fps, fpsmax, Math.round(timecount * 10.0) / 10.0); |
|
138 |
} |
|
139 |
}
|
|
140 |
||
141 |
//----------------------------------------------------------
|
|
142 |
// Generate benchmark userID
|
|
143 |
//----------------------------------------------------------
|
|
144 |
||
145 |
function genID(app) { |
|
146 |
username = localStorage.getItem("Benchuser"); //Try to fetch username data |
|
147 |
if (username == null || username == "") { |
|
148 |
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; |
|
149 |
text = ""; |
|
150 |
for(var i = 0; i < 16; i++) { |
|
151 |
text += possible.charAt(Math.floor(Math.random() * possible.length)); |
|
152 |
} |
|
153 |
username = text; |
|
154 |
localStorage.setItem("Benchuser", username); |
|
155 |
} |
|
156 |
||
157 |
benchmark(username, app, fps, fpsmax, Math.round(timecount * 10.0) / 10.0); |
|
158 |
} |
|
159 |
||
160 |
//----------------------------------------------------------
|
|
161 |
// Send benchmark using httpajax.js
|
|
162 |
//----------------------------------------------------------
|
|
163 |
||
164 |
function benchmark(username, app, fps, maxfps, runtime) { |
|
165 |
var paramstr = 'User=' + escape(username); |
|
166 |
paramstr += "&App=" + escape(app); |
|
167 |
paramstr += "&Fps=" + escape(fps); |
|
168 |
paramstr += "&MaxFps=" + escape(maxfps); |
|
169 |
paramstr += "&RunTime=" + escape(runtime); |
|
170 |
AjaxService("Benchy.php", paramstr); |
|
171 |
} |