|
| 1 | +// stats.js r6 - http://github.com/mrdoob/stats.js |
| 2 | +var Stats = function () { |
| 3 | + function s(a, g, d) { |
| 4 | + var f, c, e; |
| 5 | + for (c = 0; c < 30; c++) |
| 6 | + for (f = 0; f < 73; f++) |
| 7 | + (e = (f + c * 74) * 4), |
| 8 | + (a[e] = a[e + 4]), |
| 9 | + (a[e + 1] = a[e + 5]), |
| 10 | + (a[e + 2] = a[e + 6]); |
| 11 | + for (c = 0; c < 30; c++) |
| 12 | + (e = (73 + c * 74) * 4), |
| 13 | + c < g |
| 14 | + ? ((a[e] = b[d].bg.r), (a[e + 1] = b[d].bg.g), (a[e + 2] = b[d].bg.b)) |
| 15 | + : ((a[e] = b[d].fg.r), |
| 16 | + (a[e + 1] = b[d].fg.g), |
| 17 | + (a[e + 2] = b[d].fg.b)); |
| 18 | + } |
| 19 | + var r = 0, |
| 20 | + t = 2, |
| 21 | + g, |
| 22 | + u = 0, |
| 23 | + j = new Date().getTime(), |
| 24 | + F = j, |
| 25 | + v = j, |
| 26 | + l = 0, |
| 27 | + w = 1e3, |
| 28 | + x = 0, |
| 29 | + k, |
| 30 | + d, |
| 31 | + a, |
| 32 | + m, |
| 33 | + y, |
| 34 | + n = 0, |
| 35 | + z = 1e3, |
| 36 | + A = 0, |
| 37 | + f, |
| 38 | + c, |
| 39 | + o, |
| 40 | + B, |
| 41 | + p = 0, |
| 42 | + C = 1e3, |
| 43 | + D = 0, |
| 44 | + h, |
| 45 | + i, |
| 46 | + q, |
| 47 | + E, |
| 48 | + b = { |
| 49 | + fps: { bg: { r: 16, g: 16, b: 48 }, fg: { r: 0, g: 255, b: 255 } }, |
| 50 | + ms: { bg: { r: 16, g: 48, b: 16 }, fg: { r: 0, g: 255, b: 0 } }, |
| 51 | + mb: { bg: { r: 48, g: 16, b: 26 }, fg: { r: 255, g: 0, b: 128 } }, |
| 52 | + }; |
| 53 | + g = document.createElement('div'); |
| 54 | + g.style.cursor = 'pointer'; |
| 55 | + g.style.width = '80px'; |
| 56 | + g.style.opacity = '0.9'; |
| 57 | + g.style.zIndex = '10001'; |
| 58 | + g.addEventListener( |
| 59 | + 'click', |
| 60 | + function () { |
| 61 | + r++; |
| 62 | + r == t && (r = 0); |
| 63 | + k.style.display = 'none'; |
| 64 | + f.style.display = 'none'; |
| 65 | + h.style.display = 'none'; |
| 66 | + switch (r) { |
| 67 | + case 0: |
| 68 | + k.style.display = 'block'; |
| 69 | + break; |
| 70 | + case 1: |
| 71 | + f.style.display = 'block'; |
| 72 | + break; |
| 73 | + case 2: |
| 74 | + h.style.display = 'block'; |
| 75 | + } |
| 76 | + }, |
| 77 | + !1 |
| 78 | + ); |
| 79 | + k = document.createElement('div'); |
| 80 | + k.style.backgroundColor = |
| 81 | + 'rgb(' + |
| 82 | + Math.floor(b.fps.bg.r / 2) + |
| 83 | + ',' + |
| 84 | + Math.floor(b.fps.bg.g / 2) + |
| 85 | + ',' + |
| 86 | + Math.floor(b.fps.bg.b / 2) + |
| 87 | + ')'; |
| 88 | + k.style.padding = '2px 0px 3px 0px'; |
| 89 | + g.appendChild(k); |
| 90 | + d = document.createElement('div'); |
| 91 | + d.style.fontFamily = 'Helvetica, Arial, sans-serif'; |
| 92 | + d.style.textAlign = 'left'; |
| 93 | + d.style.fontSize = '9px'; |
| 94 | + d.style.color = |
| 95 | + 'rgb(' + b.fps.fg.r + ',' + b.fps.fg.g + ',' + b.fps.fg.b + ')'; |
| 96 | + d.style.margin = '0px 0px 1px 3px'; |
| 97 | + d.innerHTML = '<span style="font-weight:bold">FPS</span>'; |
| 98 | + k.appendChild(d); |
| 99 | + a = document.createElement('canvas'); |
| 100 | + a.width = 74; |
| 101 | + a.height = 30; |
| 102 | + a.style.display = 'block'; |
| 103 | + a.style.marginLeft = '3px'; |
| 104 | + k.appendChild(a); |
| 105 | + m = a.getContext('2d'); |
| 106 | + m.fillStyle = 'rgb(' + b.fps.bg.r + ',' + b.fps.bg.g + ',' + b.fps.bg.b + ')'; |
| 107 | + m.fillRect(0, 0, a.width, a.height); |
| 108 | + y = m.getImageData(0, 0, a.width, a.height); |
| 109 | + f = document.createElement('div'); |
| 110 | + f.style.backgroundColor = |
| 111 | + 'rgb(' + |
| 112 | + Math.floor(b.ms.bg.r / 2) + |
| 113 | + ',' + |
| 114 | + Math.floor(b.ms.bg.g / 2) + |
| 115 | + ',' + |
| 116 | + Math.floor(b.ms.bg.b / 2) + |
| 117 | + ')'; |
| 118 | + f.style.padding = '2px 0px 3px 0px'; |
| 119 | + f.style.display = 'none'; |
| 120 | + g.appendChild(f); |
| 121 | + c = document.createElement('div'); |
| 122 | + c.style.fontFamily = 'Helvetica, Arial, sans-serif'; |
| 123 | + c.style.textAlign = 'left'; |
| 124 | + c.style.fontSize = '9px'; |
| 125 | + c.style.color = 'rgb(' + b.ms.fg.r + ',' + b.ms.fg.g + ',' + b.ms.fg.b + ')'; |
| 126 | + c.style.margin = '0px 0px 1px 3px'; |
| 127 | + c.innerHTML = '<span style="font-weight:bold">MS</span>'; |
| 128 | + f.appendChild(c); |
| 129 | + a = document.createElement('canvas'); |
| 130 | + a.width = 74; |
| 131 | + a.height = 30; |
| 132 | + a.style.display = 'block'; |
| 133 | + a.style.marginLeft = '3px'; |
| 134 | + f.appendChild(a); |
| 135 | + o = a.getContext('2d'); |
| 136 | + o.fillStyle = 'rgb(' + b.ms.bg.r + ',' + b.ms.bg.g + ',' + b.ms.bg.b + ')'; |
| 137 | + o.fillRect(0, 0, a.width, a.height); |
| 138 | + B = o.getImageData(0, 0, a.width, a.height); |
| 139 | + try { |
| 140 | + performance && |
| 141 | + performance.memory && |
| 142 | + performance.memory.totalJSHeapSize && |
| 143 | + (t = 3); |
| 144 | + } catch (G) {} |
| 145 | + h = document.createElement('div'); |
| 146 | + h.style.backgroundColor = |
| 147 | + 'rgb(' + |
| 148 | + Math.floor(b.mb.bg.r / 2) + |
| 149 | + ',' + |
| 150 | + Math.floor(b.mb.bg.g / 2) + |
| 151 | + ',' + |
| 152 | + Math.floor(b.mb.bg.b / 2) + |
| 153 | + ')'; |
| 154 | + h.style.padding = '2px 0px 3px 0px'; |
| 155 | + h.style.display = 'none'; |
| 156 | + g.appendChild(h); |
| 157 | + i = document.createElement('div'); |
| 158 | + i.style.fontFamily = 'Helvetica, Arial, sans-serif'; |
| 159 | + i.style.textAlign = 'left'; |
| 160 | + i.style.fontSize = '9px'; |
| 161 | + i.style.color = 'rgb(' + b.mb.fg.r + ',' + b.mb.fg.g + ',' + b.mb.fg.b + ')'; |
| 162 | + i.style.margin = '0px 0px 1px 3px'; |
| 163 | + i.innerHTML = '<span style="font-weight:bold">MB</span>'; |
| 164 | + h.appendChild(i); |
| 165 | + a = document.createElement('canvas'); |
| 166 | + a.width = 74; |
| 167 | + a.height = 30; |
| 168 | + a.style.display = 'block'; |
| 169 | + a.style.marginLeft = '3px'; |
| 170 | + h.appendChild(a); |
| 171 | + q = a.getContext('2d'); |
| 172 | + q.fillStyle = '#301010'; |
| 173 | + q.fillRect(0, 0, a.width, a.height); |
| 174 | + E = q.getImageData(0, 0, a.width, a.height); |
| 175 | + return { |
| 176 | + domElement: g, |
| 177 | + update: function () { |
| 178 | + u++; |
| 179 | + j = new Date().getTime(); |
| 180 | + n = j - F; |
| 181 | + z = Math.min(z, n); |
| 182 | + A = Math.max(A, n); |
| 183 | + s(B.data, Math.min(30, 30 - (n / 200) * 30), 'ms'); |
| 184 | + c.innerHTML = |
| 185 | + '<span style="font-weight:bold">' + |
| 186 | + n + |
| 187 | + ' MS</span> (' + |
| 188 | + z + |
| 189 | + '-' + |
| 190 | + A + |
| 191 | + ')'; |
| 192 | + o.putImageData(B, 0, 0); |
| 193 | + F = j; |
| 194 | + if (j > v + 1e3) { |
| 195 | + l = Math.round((u * 1e3) / (j - v)); |
| 196 | + w = Math.min(w, l); |
| 197 | + x = Math.max(x, l); |
| 198 | + s(y.data, Math.min(30, 30 - (l / 100) * 30), 'fps'); |
| 199 | + d.innerHTML = |
| 200 | + '<span style="font-weight:bold">' + |
| 201 | + l + |
| 202 | + ' FPS</span> (' + |
| 203 | + w + |
| 204 | + '-' + |
| 205 | + x + |
| 206 | + ')'; |
| 207 | + m.putImageData(y, 0, 0); |
| 208 | + if (t == 3) |
| 209 | + (p = performance.memory.usedJSHeapSize * 9.54e-7), |
| 210 | + (C = Math.min(C, p)), |
| 211 | + (D = Math.max(D, p)), |
| 212 | + s(E.data, Math.min(30, 30 - p / 2), 'mb'), |
| 213 | + (i.innerHTML = |
| 214 | + '<span style="font-weight:bold">' + |
| 215 | + Math.round(p) + |
| 216 | + ' MB</span> (' + |
| 217 | + Math.round(C) + |
| 218 | + '-' + |
| 219 | + Math.round(D) + |
| 220 | + ')'), |
| 221 | + q.putImageData(E, 0, 0); |
| 222 | + v = j; |
| 223 | + u = 0; |
| 224 | + } |
| 225 | + }, |
| 226 | + }; |
| 227 | +}; |
0 commit comments