stats-gl 3.1.2 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/main.cjs +73 -1
- package/dist/main.cjs.map +1 -1
- package/dist/main.js +73 -1
- package/dist/main.js.map +1 -1
- package/dist/panel.cjs.map +1 -1
- package/dist/panel.js.map +1 -1
- package/dist/panelVsync.cjs +55 -0
- package/dist/panelVsync.cjs.map +1 -0
- package/dist/panelVsync.js +55 -0
- package/dist/panelVsync.js.map +1 -0
- package/dist/stats-gl.d.ts +12 -2
- package/lib/main.ts +107 -3
- package/lib/panel.ts +3 -3
- package/lib/panelVsync.ts +74 -0
- package/package.json +9 -8
package/README.md
CHANGED
|
@@ -35,8 +35,10 @@ import Stats from "stats-gl";
|
|
|
35
35
|
// create a new Stats object
|
|
36
36
|
const stats = new Stats({
|
|
37
37
|
trackGPU: false,
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
trackHz: false,
|
|
39
|
+
logsPerSecond: 4,
|
|
40
|
+
graphsPerSecond: 30,
|
|
41
|
+
samplesLog: 40,
|
|
40
42
|
samplesGraph: 10,
|
|
41
43
|
precision: 2,
|
|
42
44
|
horizontal: true,
|
|
@@ -120,6 +122,9 @@ import { StatsGl } from '@tresjs/cientos'
|
|
|
120
122
|
The constructor for the Stats class accepts an options object with the following properties:
|
|
121
123
|
|
|
122
124
|
- `logsPerSecond`: How often to log performance data, in logs per second.
|
|
125
|
+
- `graphsPerSecond`: How often to update the graph, in graphs per second.
|
|
126
|
+
- `trackGPU`: A boolean value to enable or disable GPU tracking.
|
|
127
|
+
- `trackHz`: A boolean value to enable or disable Hz tracking.
|
|
123
128
|
- `samplesLog`: Number of recent log samples to keep for computing averages.
|
|
124
129
|
- `samplesGraph`: Number of recent graph samples to keep for computing averages.
|
|
125
130
|
- `precision`: Precision of the data, in number of decimal places (only affects CPU and GPU).
|
package/dist/main.cjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const panel = require("./panel.cjs");
|
|
3
|
+
const panelVsync = require("./panelVsync.cjs");
|
|
3
4
|
const _Stats = class _Stats2 {
|
|
4
5
|
constructor({
|
|
5
6
|
trackGPU = false,
|
|
7
|
+
trackHz = false,
|
|
6
8
|
logsPerSecond = 4,
|
|
7
9
|
graphsPerSecond = 30,
|
|
8
10
|
samplesLog = 40,
|
|
@@ -25,6 +27,7 @@ const _Stats = class _Stats2 {
|
|
|
25
27
|
this.totalGpuDurationCompute = 0;
|
|
26
28
|
this.gpuPanel = null;
|
|
27
29
|
this.gpuPanelCompute = null;
|
|
30
|
+
this.vsyncPanel = null;
|
|
28
31
|
this.averageFps = { logs: [], graph: [] };
|
|
29
32
|
this.averageCpu = { logs: [], graph: [] };
|
|
30
33
|
this.averageGpu = { logs: [], graph: [] };
|
|
@@ -33,6 +36,20 @@ const _Stats = class _Stats2 {
|
|
|
33
36
|
this.lastMin = {};
|
|
34
37
|
this.lastMax = {};
|
|
35
38
|
this.lastValue = {};
|
|
39
|
+
this.VSYNC_RATES = [
|
|
40
|
+
{ refreshRate: 60, frameTime: 16.67 },
|
|
41
|
+
{ refreshRate: 75, frameTime: 13.33 },
|
|
42
|
+
{ refreshRate: 90, frameTime: 11.11 },
|
|
43
|
+
{ refreshRate: 120, frameTime: 8.33 },
|
|
44
|
+
{ refreshRate: 144, frameTime: 6.94 },
|
|
45
|
+
{ refreshRate: 165, frameTime: 6.06 },
|
|
46
|
+
{ refreshRate: 240, frameTime: 4.17 }
|
|
47
|
+
];
|
|
48
|
+
this.detectedVSync = null;
|
|
49
|
+
this.frameTimeHistory = [];
|
|
50
|
+
this.HISTORY_SIZE = 120;
|
|
51
|
+
this.VSYNC_THRESHOLD = 0.05;
|
|
52
|
+
this.lastFrameTime = 0;
|
|
36
53
|
this.handleClick = (event) => {
|
|
37
54
|
event.preventDefault();
|
|
38
55
|
this.showPanel(++this.mode % this.dom.children.length);
|
|
@@ -49,6 +66,7 @@ const _Stats = class _Stats2 {
|
|
|
49
66
|
this.horizontal = horizontal;
|
|
50
67
|
this.minimal = minimal;
|
|
51
68
|
this.trackGPU = trackGPU;
|
|
69
|
+
this.trackHz = trackHz;
|
|
52
70
|
this.samplesLog = samplesLog;
|
|
53
71
|
this.samplesGraph = samplesGraph;
|
|
54
72
|
this.precision = precision;
|
|
@@ -63,6 +81,11 @@ const _Stats = class _Stats2 {
|
|
|
63
81
|
this.prevCpuTime = this.beginTime;
|
|
64
82
|
this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
|
|
65
83
|
this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
|
|
84
|
+
if (this.trackHz === true) {
|
|
85
|
+
this.vsyncPanel = new panelVsync.PanelVSync("", "#f0f", "#202");
|
|
86
|
+
this.dom.appendChild(this.vsyncPanel.canvas);
|
|
87
|
+
this.vsyncPanel.setOffset(56, 35);
|
|
88
|
+
}
|
|
66
89
|
this.setupEventListeners();
|
|
67
90
|
}
|
|
68
91
|
initializeDOM() {
|
|
@@ -92,8 +115,14 @@ const _Stats = class _Stats2 {
|
|
|
92
115
|
return;
|
|
93
116
|
if (await this.handleWebGPURenderer(canvasOrGL))
|
|
94
117
|
return;
|
|
95
|
-
if (
|
|
118
|
+
if (this.initializeWebGL(canvasOrGL)) {
|
|
119
|
+
if (this.trackGPU) {
|
|
120
|
+
this.initializeGPUTracking();
|
|
121
|
+
}
|
|
96
122
|
return;
|
|
123
|
+
} else {
|
|
124
|
+
console.error("Stats-gl: Failed to initialize WebGL context");
|
|
125
|
+
}
|
|
97
126
|
}
|
|
98
127
|
handleThreeRenderer(renderer) {
|
|
99
128
|
if (renderer.isWebGLRenderer && !this.threeRendererPatched) {
|
|
@@ -242,7 +271,43 @@ const _Stats = class _Stats2 {
|
|
|
242
271
|
}
|
|
243
272
|
});
|
|
244
273
|
}
|
|
274
|
+
detectVSync(currentTime) {
|
|
275
|
+
if (this.lastFrameTime === 0) {
|
|
276
|
+
this.lastFrameTime = currentTime;
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
const frameTime = currentTime - this.lastFrameTime;
|
|
280
|
+
this.lastFrameTime = currentTime;
|
|
281
|
+
this.frameTimeHistory.push(frameTime);
|
|
282
|
+
if (this.frameTimeHistory.length > this.HISTORY_SIZE) {
|
|
283
|
+
this.frameTimeHistory.shift();
|
|
284
|
+
}
|
|
285
|
+
if (this.frameTimeHistory.length < 60)
|
|
286
|
+
return;
|
|
287
|
+
const avgFrameTime = this.frameTimeHistory.reduce((a, b) => a + b) / this.frameTimeHistory.length;
|
|
288
|
+
const variance = this.frameTimeHistory.reduce((acc, time) => acc + Math.pow(time - avgFrameTime, 2), 0) / this.frameTimeHistory.length;
|
|
289
|
+
const stability = Math.sqrt(variance);
|
|
290
|
+
if (stability > 2) {
|
|
291
|
+
this.detectedVSync = null;
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
let closestMatch = null;
|
|
295
|
+
let smallestDiff = Infinity;
|
|
296
|
+
for (const rate of this.VSYNC_RATES) {
|
|
297
|
+
const diff = Math.abs(avgFrameTime - rate.frameTime);
|
|
298
|
+
if (diff < smallestDiff) {
|
|
299
|
+
smallestDiff = diff;
|
|
300
|
+
closestMatch = rate;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (closestMatch && smallestDiff / closestMatch.frameTime <= this.VSYNC_THRESHOLD) {
|
|
304
|
+
this.detectedVSync = closestMatch;
|
|
305
|
+
} else {
|
|
306
|
+
this.detectedVSync = null;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
245
309
|
endInternal() {
|
|
310
|
+
var _a;
|
|
246
311
|
const currentTime = performance.now();
|
|
247
312
|
this.frameTimes.push(currentTime);
|
|
248
313
|
while (this.frameTimes.length > 0 && this.frameTimes[0] <= currentTime - 1e3) {
|
|
@@ -266,6 +331,13 @@ const _Stats = class _Stats2 {
|
|
|
266
331
|
if (shouldUpdateGraph) {
|
|
267
332
|
this.prevGraphTime = currentTime;
|
|
268
333
|
}
|
|
334
|
+
if (this.vsyncPanel !== null) {
|
|
335
|
+
this.detectVSync(currentTime);
|
|
336
|
+
const vsyncValue = ((_a = this.detectedVSync) == null ? void 0 : _a.refreshRate) || 0;
|
|
337
|
+
if (shouldUpdateText && vsyncValue > 0) {
|
|
338
|
+
this.vsyncPanel.update(vsyncValue, vsyncValue);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
269
341
|
return currentTime;
|
|
270
342
|
}
|
|
271
343
|
updatePanelComponents(panel2, averageArray, precision, shouldUpdateText, shouldUpdateGraph) {
|
package/dist/main.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.cjs","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats","panel","Panel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.cjs","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats","PanelVSync","panel","Panel"],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Panel } from "./panel.js";
|
|
2
|
+
import { PanelVSync } from "./panelVsync.js";
|
|
2
3
|
const _Stats = class _Stats2 {
|
|
3
4
|
constructor({
|
|
4
5
|
trackGPU = false,
|
|
6
|
+
trackHz = false,
|
|
5
7
|
logsPerSecond = 4,
|
|
6
8
|
graphsPerSecond = 30,
|
|
7
9
|
samplesLog = 40,
|
|
@@ -24,6 +26,7 @@ const _Stats = class _Stats2 {
|
|
|
24
26
|
this.totalGpuDurationCompute = 0;
|
|
25
27
|
this.gpuPanel = null;
|
|
26
28
|
this.gpuPanelCompute = null;
|
|
29
|
+
this.vsyncPanel = null;
|
|
27
30
|
this.averageFps = { logs: [], graph: [] };
|
|
28
31
|
this.averageCpu = { logs: [], graph: [] };
|
|
29
32
|
this.averageGpu = { logs: [], graph: [] };
|
|
@@ -32,6 +35,20 @@ const _Stats = class _Stats2 {
|
|
|
32
35
|
this.lastMin = {};
|
|
33
36
|
this.lastMax = {};
|
|
34
37
|
this.lastValue = {};
|
|
38
|
+
this.VSYNC_RATES = [
|
|
39
|
+
{ refreshRate: 60, frameTime: 16.67 },
|
|
40
|
+
{ refreshRate: 75, frameTime: 13.33 },
|
|
41
|
+
{ refreshRate: 90, frameTime: 11.11 },
|
|
42
|
+
{ refreshRate: 120, frameTime: 8.33 },
|
|
43
|
+
{ refreshRate: 144, frameTime: 6.94 },
|
|
44
|
+
{ refreshRate: 165, frameTime: 6.06 },
|
|
45
|
+
{ refreshRate: 240, frameTime: 4.17 }
|
|
46
|
+
];
|
|
47
|
+
this.detectedVSync = null;
|
|
48
|
+
this.frameTimeHistory = [];
|
|
49
|
+
this.HISTORY_SIZE = 120;
|
|
50
|
+
this.VSYNC_THRESHOLD = 0.05;
|
|
51
|
+
this.lastFrameTime = 0;
|
|
35
52
|
this.handleClick = (event) => {
|
|
36
53
|
event.preventDefault();
|
|
37
54
|
this.showPanel(++this.mode % this.dom.children.length);
|
|
@@ -48,6 +65,7 @@ const _Stats = class _Stats2 {
|
|
|
48
65
|
this.horizontal = horizontal;
|
|
49
66
|
this.minimal = minimal;
|
|
50
67
|
this.trackGPU = trackGPU;
|
|
68
|
+
this.trackHz = trackHz;
|
|
51
69
|
this.samplesLog = samplesLog;
|
|
52
70
|
this.samplesGraph = samplesGraph;
|
|
53
71
|
this.precision = precision;
|
|
@@ -62,6 +80,11 @@ const _Stats = class _Stats2 {
|
|
|
62
80
|
this.prevCpuTime = this.beginTime;
|
|
63
81
|
this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
|
|
64
82
|
this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
|
|
83
|
+
if (this.trackHz === true) {
|
|
84
|
+
this.vsyncPanel = new PanelVSync("", "#f0f", "#202");
|
|
85
|
+
this.dom.appendChild(this.vsyncPanel.canvas);
|
|
86
|
+
this.vsyncPanel.setOffset(56, 35);
|
|
87
|
+
}
|
|
65
88
|
this.setupEventListeners();
|
|
66
89
|
}
|
|
67
90
|
initializeDOM() {
|
|
@@ -91,8 +114,14 @@ const _Stats = class _Stats2 {
|
|
|
91
114
|
return;
|
|
92
115
|
if (await this.handleWebGPURenderer(canvasOrGL))
|
|
93
116
|
return;
|
|
94
|
-
if (
|
|
117
|
+
if (this.initializeWebGL(canvasOrGL)) {
|
|
118
|
+
if (this.trackGPU) {
|
|
119
|
+
this.initializeGPUTracking();
|
|
120
|
+
}
|
|
95
121
|
return;
|
|
122
|
+
} else {
|
|
123
|
+
console.error("Stats-gl: Failed to initialize WebGL context");
|
|
124
|
+
}
|
|
96
125
|
}
|
|
97
126
|
handleThreeRenderer(renderer) {
|
|
98
127
|
if (renderer.isWebGLRenderer && !this.threeRendererPatched) {
|
|
@@ -241,7 +270,43 @@ const _Stats = class _Stats2 {
|
|
|
241
270
|
}
|
|
242
271
|
});
|
|
243
272
|
}
|
|
273
|
+
detectVSync(currentTime) {
|
|
274
|
+
if (this.lastFrameTime === 0) {
|
|
275
|
+
this.lastFrameTime = currentTime;
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
const frameTime = currentTime - this.lastFrameTime;
|
|
279
|
+
this.lastFrameTime = currentTime;
|
|
280
|
+
this.frameTimeHistory.push(frameTime);
|
|
281
|
+
if (this.frameTimeHistory.length > this.HISTORY_SIZE) {
|
|
282
|
+
this.frameTimeHistory.shift();
|
|
283
|
+
}
|
|
284
|
+
if (this.frameTimeHistory.length < 60)
|
|
285
|
+
return;
|
|
286
|
+
const avgFrameTime = this.frameTimeHistory.reduce((a, b) => a + b) / this.frameTimeHistory.length;
|
|
287
|
+
const variance = this.frameTimeHistory.reduce((acc, time) => acc + Math.pow(time - avgFrameTime, 2), 0) / this.frameTimeHistory.length;
|
|
288
|
+
const stability = Math.sqrt(variance);
|
|
289
|
+
if (stability > 2) {
|
|
290
|
+
this.detectedVSync = null;
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
let closestMatch = null;
|
|
294
|
+
let smallestDiff = Infinity;
|
|
295
|
+
for (const rate of this.VSYNC_RATES) {
|
|
296
|
+
const diff = Math.abs(avgFrameTime - rate.frameTime);
|
|
297
|
+
if (diff < smallestDiff) {
|
|
298
|
+
smallestDiff = diff;
|
|
299
|
+
closestMatch = rate;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
if (closestMatch && smallestDiff / closestMatch.frameTime <= this.VSYNC_THRESHOLD) {
|
|
303
|
+
this.detectedVSync = closestMatch;
|
|
304
|
+
} else {
|
|
305
|
+
this.detectedVSync = null;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
244
308
|
endInternal() {
|
|
309
|
+
var _a;
|
|
245
310
|
const currentTime = performance.now();
|
|
246
311
|
this.frameTimes.push(currentTime);
|
|
247
312
|
while (this.frameTimes.length > 0 && this.frameTimes[0] <= currentTime - 1e3) {
|
|
@@ -265,6 +330,13 @@ const _Stats = class _Stats2 {
|
|
|
265
330
|
if (shouldUpdateGraph) {
|
|
266
331
|
this.prevGraphTime = currentTime;
|
|
267
332
|
}
|
|
333
|
+
if (this.vsyncPanel !== null) {
|
|
334
|
+
this.detectVSync(currentTime);
|
|
335
|
+
const vsyncValue = ((_a = this.detectedVSync) == null ? void 0 : _a.refreshRate) || 0;
|
|
336
|
+
if (shouldUpdateText && vsyncValue > 0) {
|
|
337
|
+
this.vsyncPanel.update(vsyncValue, vsyncValue);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
268
340
|
return currentTime;
|
|
269
341
|
}
|
|
270
342
|
updatePanelComponents(panel, averageArray, precision, shouldUpdateText, shouldUpdateGraph) {
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats"],"mappings":"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"}
|
package/dist/panel.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.cjs","sources":["../lib/panel.ts"],"sourcesContent":null,"names":[],"mappings":";;AAAA,MAAM,MAAM;AAAA,EAiBR,YAAY,MAAc,IAAY,IAAY;AAC9C,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,WAAW;AAChB,SAAK,KAAK,KAAK,MAAM,OAAO,oBAAoB,CAAC;AAE5C,SAAA,QAAQ,KAAK,KAAK;AAClB,SAAA,SAAS,KAAK,KAAK;AACnB,SAAA,SAAS,IAAI,KAAK;AAClB,SAAA,SAAS,IAAI,KAAK;AAClB,SAAA,UAAU,IAAI,KAAK;AACnB,SAAA,UAAU,KAAK,KAAK;AACpB,SAAA,cAAc,KAAK,KAAK;AACxB,SAAA,eAAe,KAAK,KAAK;AAEzB,SAAA,SAAS,SAAS,cAAc,QAAQ;AACxC,SAAA,OAAO,QAAQ,KAAK;AACpB,SAAA,OAAO,SAAS,KAAK;AACrB,SAAA,OAAO,MAAM,QAAQ;AACrB,SAAA,OAAO,MAAM,SAAS;AACtB,SAAA,OAAO,MAAM,WAAW;AACxB,SAAA,OAAO,MAAM,UAAU;AAE5B,SAAK,UAAU,KAAK,OAAO,WAAW,IAAI;AAE1C,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEQ,iBAAiC;AACrC,QAAI,CAAC,KAAK;AAAe,YAAA,IAAI,MAAM,YAAY;AAEzC,UAAA,WAAW,KAAK,QAAQ;AAAA,MAC1B;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA,KAAK,UAAU,KAAK;AAAA,IAAA;AAGpB,QAAA;AACJ,UAAM,WAAmB,KAAK;AAEtB,YAAA,KAAK,GAAG,YAAe,GAAA;AAAA,MAC3B,KAAK;AACY,qBAAA;AACb;AAAA,MACJ,KAAK;AACY,qBAAA;AACb;AAAA,MACJ,KAAK;AACY,qBAAA;AACb;AAAA,MACJ,KAAK;AACY,qBAAA;AACb;AAAA,MACJ;AACI,qBAAa,KAAK;AAClB;AAAA,IACR;AAES,aAAA,aAAa,GAAG,UAAU;AAC1B,aAAA,aAAa,GAAG,QAAQ;AAE1B,WAAA;AAAA,EACX;AAAA,
|
|
1
|
+
{"version":3,"file":"panel.cjs","sources":["../lib/panel.ts"],"sourcesContent":null,"names":[],"mappings":"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"}
|
package/dist/panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel.js","sources":["../lib/panel.ts"],"sourcesContent":null,"names":[],"mappings":"AAAA,MAAM,MAAM;AAAA,EAiBR,YAAY,MAAc,IAAY,IAAY;AAC9C,SAAK,OAAO;AACZ,SAAK,KAAK;AACV,SAAK,KAAK;AACV,SAAK,WAAW;AAChB,SAAK,KAAK,KAAK,MAAM,OAAO,oBAAoB,CAAC;AAE5C,SAAA,QAAQ,KAAK,KAAK;AAClB,SAAA,SAAS,KAAK,KAAK;AACnB,SAAA,SAAS,IAAI,KAAK;AAClB,SAAA,SAAS,IAAI,KAAK;AAClB,SAAA,UAAU,IAAI,KAAK;AACnB,SAAA,UAAU,KAAK,KAAK;AACpB,SAAA,cAAc,KAAK,KAAK;AACxB,SAAA,eAAe,KAAK,KAAK;AAEzB,SAAA,SAAS,SAAS,cAAc,QAAQ;AACxC,SAAA,OAAO,QAAQ,KAAK;AACpB,SAAA,OAAO,SAAS,KAAK;AACrB,SAAA,OAAO,MAAM,QAAQ;AACrB,SAAA,OAAO,MAAM,SAAS;AACtB,SAAA,OAAO,MAAM,WAAW;AACxB,SAAA,OAAO,MAAM,UAAU;AAE5B,SAAK,UAAU,KAAK,OAAO,WAAW,IAAI;AAE1C,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEQ,iBAAiC;AACrC,QAAI,CAAC,KAAK;AAAe,YAAA,IAAI,MAAM,YAAY;AAEzC,UAAA,WAAW,KAAK,QAAQ;AAAA,MAC1B;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA,KAAK,UAAU,KAAK;AAAA,IAAA;AAGpB,QAAA;AACJ,UAAM,WAAmB,KAAK;AAEtB,YAAA,KAAK,GAAG,YAAe,GAAA;AAAA,MAC3B,KAAK;AACY,qBAAA;AACb;AAAA,MACJ,KAAK;AACY,qBAAA;AACb;AAAA,MACJ,KAAK;AACY,qBAAA;AACb;AAAA,MACJ,KAAK;AACY,qBAAA;AACb;AAAA,MACJ;AACI,qBAAa,KAAK;AAClB;AAAA,IACR;AAES,aAAA,aAAa,GAAG,UAAU;AAC1B,aAAA,aAAa,GAAG,QAAQ;AAE1B,WAAA;AAAA,EACX;AAAA,
|
|
1
|
+
{"version":3,"file":"panel.js","sources":["../lib/panel.ts"],"sourcesContent":null,"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const panel = require("./panel.cjs");
|
|
4
|
+
class PanelVSync extends panel.Panel {
|
|
5
|
+
constructor(name, fg, bg) {
|
|
6
|
+
super(name, fg, bg);
|
|
7
|
+
this.vsyncValue = 0;
|
|
8
|
+
this.SMALL_HEIGHT = 9 * this.PR;
|
|
9
|
+
this.HEIGHT = this.SMALL_HEIGHT;
|
|
10
|
+
this.TEXT_Y = 0 * this.PR;
|
|
11
|
+
this.canvas.height = this.HEIGHT;
|
|
12
|
+
this.canvas.style.height = "9px";
|
|
13
|
+
this.canvas.style.cssText = `
|
|
14
|
+
width: 90px;
|
|
15
|
+
height: 9px;
|
|
16
|
+
position: absolute;
|
|
17
|
+
top: 0;
|
|
18
|
+
left: 0;
|
|
19
|
+
pointer-events: none; // Allow clicks to pass through
|
|
20
|
+
`;
|
|
21
|
+
this.initializeCanvas();
|
|
22
|
+
}
|
|
23
|
+
initializeCanvas() {
|
|
24
|
+
if (!this.context)
|
|
25
|
+
return;
|
|
26
|
+
this.context.imageSmoothingEnabled = false;
|
|
27
|
+
this.context.font = "bold " + 9 * this.PR + "px Helvetica,Arial,sans-serif";
|
|
28
|
+
this.context.textBaseline = "top";
|
|
29
|
+
this.context.globalAlpha = 1;
|
|
30
|
+
}
|
|
31
|
+
// Override update for VSync-specific display
|
|
32
|
+
update(value, _maxValue, _decimals = 0) {
|
|
33
|
+
if (!this.context)
|
|
34
|
+
return;
|
|
35
|
+
this.vsyncValue = value;
|
|
36
|
+
this.context.clearRect(0, 0, this.WIDTH, this.HEIGHT);
|
|
37
|
+
this.context.globalAlpha = 1;
|
|
38
|
+
this.context.fillStyle = this.bg;
|
|
39
|
+
this.context.fillText(
|
|
40
|
+
`${value.toFixed(0)}Hz`,
|
|
41
|
+
this.TEXT_X,
|
|
42
|
+
this.TEXT_Y
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
// Override updateGraph to do nothing (we don't need a graph for VSync)
|
|
46
|
+
updateGraph(_valueGraph, _maxGraph) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Method to set the offset position relative to parent panel
|
|
50
|
+
setOffset(x, y) {
|
|
51
|
+
this.canvas.style.transform = `translate(${x}px, ${y}px)`;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.PanelVSync = PanelVSync;
|
|
55
|
+
//# sourceMappingURL=panelVsync.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panelVsync.cjs","sources":["../lib/panelVsync.ts"],"sourcesContent":null,"names":["Panel"],"mappings":";;;AAEA,MAAM,mBAAmBA,MAAAA,MAAM;AAAA,EAI3B,YAAY,MAAc,IAAY,IAAY;AACxC,UAAA,MAAM,IAAI,EAAE;AAHtB,SAAQ,aAAqB;AAMpB,SAAA,eAAe,IAAI,KAAK;AAC7B,SAAK,SAAS,KAAK;AACd,SAAA,SAAS,IAAI,KAAK;AAGlB,SAAA,OAAO,SAAS,KAAK;AACrB,SAAA,OAAO,MAAM,SAAS;AAGtB,SAAA,OAAO,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU5B,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEO,mBAAmB;AACtB,QAAI,CAAC,KAAK;AAAS;AAEnB,SAAK,QAAQ,wBAAwB;AAGrC,SAAK,QAAQ,OAAO,UAAW,IAAI,KAAK,KAAM;AAC9C,SAAK,QAAQ,eAAe;AAE5B,SAAK,QAAQ,cAAc;AAAA,EAC/B;AAAA;AAAA,EAGO,OAAO,OAAe,WAAmB,YAAoB,GAAG;AACnE,QAAI,CAAC,KAAK;AAAS;AAEnB,SAAK,aAAa;AAElB,SAAK,QAAQ,UAAU,GAAG,GAAG,KAAK,OAAO,KAAK,MAAM;AAEpD,SAAK,QAAQ,cAAc;AACtB,SAAA,QAAQ,YAAY,KAAK;AAC9B,SAAK,QAAQ;AAAA,MACT,GAAG,MAAM,QAAQ,CAAC,CAAC;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA,EAGO,YAAY,aAAqB,WAAmB;AAEvD;AAAA,EACJ;AAAA;AAAA,EAGO,UAAU,GAAW,GAAW;AACnC,SAAK,OAAO,MAAM,YAAY,aAAa,CAAC,OAAO,CAAC;AAAA,EACxD;AACJ;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Panel } from "./panel.js";
|
|
2
|
+
class PanelVSync extends Panel {
|
|
3
|
+
constructor(name, fg, bg) {
|
|
4
|
+
super(name, fg, bg);
|
|
5
|
+
this.vsyncValue = 0;
|
|
6
|
+
this.SMALL_HEIGHT = 9 * this.PR;
|
|
7
|
+
this.HEIGHT = this.SMALL_HEIGHT;
|
|
8
|
+
this.TEXT_Y = 0 * this.PR;
|
|
9
|
+
this.canvas.height = this.HEIGHT;
|
|
10
|
+
this.canvas.style.height = "9px";
|
|
11
|
+
this.canvas.style.cssText = `
|
|
12
|
+
width: 90px;
|
|
13
|
+
height: 9px;
|
|
14
|
+
position: absolute;
|
|
15
|
+
top: 0;
|
|
16
|
+
left: 0;
|
|
17
|
+
pointer-events: none; // Allow clicks to pass through
|
|
18
|
+
`;
|
|
19
|
+
this.initializeCanvas();
|
|
20
|
+
}
|
|
21
|
+
initializeCanvas() {
|
|
22
|
+
if (!this.context)
|
|
23
|
+
return;
|
|
24
|
+
this.context.imageSmoothingEnabled = false;
|
|
25
|
+
this.context.font = "bold " + 9 * this.PR + "px Helvetica,Arial,sans-serif";
|
|
26
|
+
this.context.textBaseline = "top";
|
|
27
|
+
this.context.globalAlpha = 1;
|
|
28
|
+
}
|
|
29
|
+
// Override update for VSync-specific display
|
|
30
|
+
update(value, _maxValue, _decimals = 0) {
|
|
31
|
+
if (!this.context)
|
|
32
|
+
return;
|
|
33
|
+
this.vsyncValue = value;
|
|
34
|
+
this.context.clearRect(0, 0, this.WIDTH, this.HEIGHT);
|
|
35
|
+
this.context.globalAlpha = 1;
|
|
36
|
+
this.context.fillStyle = this.bg;
|
|
37
|
+
this.context.fillText(
|
|
38
|
+
`${value.toFixed(0)}Hz`,
|
|
39
|
+
this.TEXT_X,
|
|
40
|
+
this.TEXT_Y
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
// Override updateGraph to do nothing (we don't need a graph for VSync)
|
|
44
|
+
updateGraph(_valueGraph, _maxGraph) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Method to set the offset position relative to parent panel
|
|
48
|
+
setOffset(x, y) {
|
|
49
|
+
this.canvas.style.transform = `translate(${x}px, ${y}px)`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export {
|
|
53
|
+
PanelVSync
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=panelVsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panelVsync.js","sources":["../lib/panelVsync.ts"],"sourcesContent":null,"names":[],"mappings":";AAEA,MAAM,mBAAmB,MAAM;AAAA,EAI3B,YAAY,MAAc,IAAY,IAAY;AACxC,UAAA,MAAM,IAAI,EAAE;AAHtB,SAAQ,aAAqB;AAMpB,SAAA,eAAe,IAAI,KAAK;AAC7B,SAAK,SAAS,KAAK;AACd,SAAA,SAAS,IAAI,KAAK;AAGlB,SAAA,OAAO,SAAS,KAAK;AACrB,SAAA,OAAO,MAAM,SAAS;AAGtB,SAAA,OAAO,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU5B,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEO,mBAAmB;AACtB,QAAI,CAAC,KAAK;AAAS;AAEnB,SAAK,QAAQ,wBAAwB;AAGrC,SAAK,QAAQ,OAAO,UAAW,IAAI,KAAK,KAAM;AAC9C,SAAK,QAAQ,eAAe;AAE5B,SAAK,QAAQ,cAAc;AAAA,EAC/B;AAAA;AAAA,EAGO,OAAO,OAAe,WAAmB,YAAoB,GAAG;AACnE,QAAI,CAAC,KAAK;AAAS;AAEnB,SAAK,aAAa;AAElB,SAAK,QAAQ,UAAU,GAAG,GAAG,KAAK,OAAO,KAAK,MAAM;AAEpD,SAAK,QAAQ,cAAc;AACtB,SAAA,QAAQ,YAAY,KAAK;AAC9B,SAAK,QAAQ;AAAA,MACT,GAAG,MAAM,QAAQ,CAAC,CAAC;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,EAEb;AAAA;AAAA,EAGO,YAAY,aAAqB,WAAmB;AAEvD;AAAA,EACJ;AAAA;AAAA,EAGO,UAAU,GAAW,GAAW;AACnC,SAAK,OAAO,MAAM,YAAY,aAAa,CAAC,OAAO,CAAC;AAAA,EACxD;AACJ;"}
|
package/dist/stats-gl.d.ts
CHANGED
|
@@ -16,13 +16,14 @@ declare class Panel {
|
|
|
16
16
|
GRAPH_HEIGHT: number;
|
|
17
17
|
constructor(name: string, fg: string, bg: string);
|
|
18
18
|
private createGradient;
|
|
19
|
-
|
|
19
|
+
initializeCanvas(): void;
|
|
20
20
|
update(value: number, maxValue: number, decimals?: number): void;
|
|
21
21
|
updateGraph(valueGraph: number, maxGraph: number): void;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
interface StatsOptions {
|
|
25
25
|
trackGPU?: boolean;
|
|
26
|
+
trackHz?: boolean;
|
|
26
27
|
logsPerSecond?: number;
|
|
27
28
|
graphsPerSecond?: number;
|
|
28
29
|
samplesLog?: number;
|
|
@@ -50,6 +51,7 @@ declare class Stats {
|
|
|
50
51
|
horizontal: boolean;
|
|
51
52
|
minimal: boolean;
|
|
52
53
|
trackGPU: boolean;
|
|
54
|
+
trackHz: boolean;
|
|
53
55
|
samplesLog: number;
|
|
54
56
|
samplesGraph: number;
|
|
55
57
|
precision: number;
|
|
@@ -73,6 +75,7 @@ declare class Stats {
|
|
|
73
75
|
private msPanel;
|
|
74
76
|
private gpuPanel;
|
|
75
77
|
private gpuPanelCompute;
|
|
78
|
+
private vsyncPanel;
|
|
76
79
|
averageFps: AverageData;
|
|
77
80
|
averageCpu: AverageData;
|
|
78
81
|
averageGpu: AverageData;
|
|
@@ -83,8 +86,14 @@ declare class Stats {
|
|
|
83
86
|
private lastMax;
|
|
84
87
|
private lastValue;
|
|
85
88
|
private prevTextTime;
|
|
89
|
+
private readonly VSYNC_RATES;
|
|
90
|
+
private detectedVSync;
|
|
91
|
+
private frameTimeHistory;
|
|
92
|
+
private readonly HISTORY_SIZE;
|
|
93
|
+
private readonly VSYNC_THRESHOLD;
|
|
94
|
+
private lastFrameTime;
|
|
86
95
|
static Panel: typeof Panel;
|
|
87
|
-
constructor({ trackGPU, logsPerSecond, graphsPerSecond, samplesLog, samplesGraph, precision, minimal, horizontal, mode }?: StatsOptions);
|
|
96
|
+
constructor({ trackGPU, trackHz, logsPerSecond, graphsPerSecond, samplesLog, samplesGraph, precision, minimal, horizontal, mode }?: StatsOptions);
|
|
88
97
|
private initializeDOM;
|
|
89
98
|
private setupEventListeners;
|
|
90
99
|
private handleClick;
|
|
@@ -104,6 +113,7 @@ declare class Stats {
|
|
|
104
113
|
addPanel(panel: Panel, offset: number): Panel;
|
|
105
114
|
showPanel(id: number): void;
|
|
106
115
|
processGpuQueries(): void;
|
|
116
|
+
private detectVSync;
|
|
107
117
|
endInternal(): number;
|
|
108
118
|
private updatePanelComponents;
|
|
109
119
|
beginProfiling(marker: string): void;
|
package/lib/main.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import * as THREE from 'three';
|
|
1
|
+
import type * as THREE from 'three';
|
|
2
2
|
import { Panel } from './panel';
|
|
3
|
+
import { PanelVSync } from './panelVsync';
|
|
3
4
|
|
|
4
5
|
interface StatsOptions {
|
|
5
6
|
trackGPU?: boolean;
|
|
7
|
+
trackHz?: boolean;
|
|
6
8
|
logsPerSecond?: number;
|
|
7
9
|
graphsPerSecond?: number;
|
|
8
10
|
samplesLog?: number;
|
|
@@ -22,6 +24,13 @@ interface AverageData {
|
|
|
22
24
|
graph: number[];
|
|
23
25
|
}
|
|
24
26
|
|
|
27
|
+
|
|
28
|
+
interface VSyncInfo {
|
|
29
|
+
refreshRate: number;
|
|
30
|
+
frameTime: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
25
34
|
interface InfoData {
|
|
26
35
|
render: {
|
|
27
36
|
timestamp: number;
|
|
@@ -37,6 +46,7 @@ class Stats {
|
|
|
37
46
|
public horizontal: boolean;
|
|
38
47
|
public minimal: boolean;
|
|
39
48
|
public trackGPU: boolean;
|
|
49
|
+
public trackHz: boolean;
|
|
40
50
|
public samplesLog: number;
|
|
41
51
|
public samplesGraph: number;
|
|
42
52
|
public precision: number;
|
|
@@ -65,6 +75,7 @@ class Stats {
|
|
|
65
75
|
private msPanel: Panel;
|
|
66
76
|
private gpuPanel: Panel | null = null;
|
|
67
77
|
private gpuPanelCompute: Panel | null = null;
|
|
78
|
+
private vsyncPanel: PanelVSync | null = null;
|
|
68
79
|
|
|
69
80
|
public averageFps: AverageData = { logs: [], graph: [] };
|
|
70
81
|
public averageCpu: AverageData = { logs: [], graph: [] };
|
|
@@ -78,11 +89,28 @@ class Stats {
|
|
|
78
89
|
private lastValue: { [key: string]: number } = {};
|
|
79
90
|
private prevTextTime: number;
|
|
80
91
|
|
|
92
|
+
private readonly VSYNC_RATES: VSyncInfo[] = [
|
|
93
|
+
{ refreshRate: 60, frameTime: 16.67 },
|
|
94
|
+
{ refreshRate: 75, frameTime: 13.33 },
|
|
95
|
+
{ refreshRate: 90, frameTime: 11.11 },
|
|
96
|
+
{ refreshRate: 120, frameTime: 8.33 },
|
|
97
|
+
{ refreshRate: 144, frameTime: 6.94 },
|
|
98
|
+
{ refreshRate: 165, frameTime: 6.06 },
|
|
99
|
+
{ refreshRate: 240, frameTime: 4.17 }
|
|
100
|
+
];
|
|
101
|
+
private detectedVSync: VSyncInfo | null = null;
|
|
102
|
+
private frameTimeHistory: number[] = [];
|
|
103
|
+
private readonly HISTORY_SIZE = 120; // 2 seconds worth of frames at 60fps
|
|
104
|
+
private readonly VSYNC_THRESHOLD = 0.05; // 5% tolerance
|
|
105
|
+
private lastFrameTime: number = 0;
|
|
106
|
+
|
|
107
|
+
|
|
81
108
|
|
|
82
109
|
static Panel = Panel;
|
|
83
110
|
|
|
84
111
|
constructor({
|
|
85
112
|
trackGPU = false,
|
|
113
|
+
trackHz = false,
|
|
86
114
|
logsPerSecond = 4,
|
|
87
115
|
graphsPerSecond = 30,
|
|
88
116
|
samplesLog = 40,
|
|
@@ -96,6 +124,7 @@ class Stats {
|
|
|
96
124
|
this.horizontal = horizontal;
|
|
97
125
|
this.minimal = minimal;
|
|
98
126
|
this.trackGPU = trackGPU;
|
|
127
|
+
this.trackHz = trackHz;
|
|
99
128
|
this.samplesLog = samplesLog;
|
|
100
129
|
this.samplesGraph = samplesGraph;
|
|
101
130
|
this.precision = precision;
|
|
@@ -118,6 +147,12 @@ class Stats {
|
|
|
118
147
|
this.fpsPanel = this.addPanel(new Stats.Panel('FPS', '#0ff', '#002'), 0);
|
|
119
148
|
this.msPanel = this.addPanel(new Stats.Panel('CPU', '#0f0', '#020'), 1);
|
|
120
149
|
|
|
150
|
+
if (this.trackHz === true) {
|
|
151
|
+
this.vsyncPanel = new PanelVSync('', '#f0f', '#202');
|
|
152
|
+
this.dom.appendChild(this.vsyncPanel.canvas);
|
|
153
|
+
this.vsyncPanel.setOffset(56, 35);
|
|
154
|
+
}
|
|
155
|
+
|
|
121
156
|
this.setupEventListeners();
|
|
122
157
|
}
|
|
123
158
|
|
|
@@ -164,8 +199,15 @@ class Stats {
|
|
|
164
199
|
|
|
165
200
|
if (this.handleThreeRenderer(canvasOrGL)) return;
|
|
166
201
|
if (await this.handleWebGPURenderer(canvasOrGL)) return;
|
|
167
|
-
if (!this.initializeWebGL(canvasOrGL)) return;
|
|
168
202
|
|
|
203
|
+
if (this.initializeWebGL(canvasOrGL)) {
|
|
204
|
+
if (this.trackGPU) {
|
|
205
|
+
this.initializeGPUTracking();
|
|
206
|
+
}
|
|
207
|
+
return;
|
|
208
|
+
} else {
|
|
209
|
+
console.error('Stats-gl: Failed to initialize WebGL context');
|
|
210
|
+
}
|
|
169
211
|
}
|
|
170
212
|
|
|
171
213
|
private handleThreeRenderer(renderer: any): boolean {
|
|
@@ -362,6 +404,58 @@ class Stats {
|
|
|
362
404
|
}
|
|
363
405
|
});
|
|
364
406
|
|
|
407
|
+
}
|
|
408
|
+
private detectVSync(currentTime: number): void {
|
|
409
|
+
if (this.lastFrameTime === 0) {
|
|
410
|
+
this.lastFrameTime = currentTime;
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
// Calculate frame time
|
|
415
|
+
const frameTime = currentTime - this.lastFrameTime;
|
|
416
|
+
this.lastFrameTime = currentTime;
|
|
417
|
+
|
|
418
|
+
// Add to histories
|
|
419
|
+
this.frameTimeHistory.push(frameTime);
|
|
420
|
+
if (this.frameTimeHistory.length > this.HISTORY_SIZE) {
|
|
421
|
+
this.frameTimeHistory.shift();
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// Only start detection when we have enough samples
|
|
425
|
+
if (this.frameTimeHistory.length < 60) return;
|
|
426
|
+
|
|
427
|
+
// Calculate average frame time
|
|
428
|
+
const avgFrameTime = this.frameTimeHistory.reduce((a, b) => a + b) / this.frameTimeHistory.length;
|
|
429
|
+
|
|
430
|
+
// Calculate frame time stability (standard deviation)
|
|
431
|
+
const variance = this.frameTimeHistory.reduce((acc, time) =>
|
|
432
|
+
acc + Math.pow(time - avgFrameTime, 2), 0) / this.frameTimeHistory.length;
|
|
433
|
+
const stability = Math.sqrt(variance);
|
|
434
|
+
|
|
435
|
+
// Only proceed if frame timing is relatively stable
|
|
436
|
+
if (stability > 2) { // 2ms stability threshold
|
|
437
|
+
this.detectedVSync = null;
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
// Find the closest VSync rate based on frame time
|
|
442
|
+
let closestMatch: VSyncInfo | null = null;
|
|
443
|
+
let smallestDiff = Infinity;
|
|
444
|
+
|
|
445
|
+
for (const rate of this.VSYNC_RATES) {
|
|
446
|
+
const diff = Math.abs(avgFrameTime - rate.frameTime);
|
|
447
|
+
if (diff < smallestDiff) {
|
|
448
|
+
smallestDiff = diff;
|
|
449
|
+
closestMatch = rate;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
if (closestMatch && (smallestDiff / closestMatch.frameTime <= this.VSYNC_THRESHOLD)) {
|
|
454
|
+
this.detectedVSync = closestMatch;
|
|
455
|
+
} else {
|
|
456
|
+
this.detectedVSync = null;
|
|
457
|
+
}
|
|
458
|
+
|
|
365
459
|
}
|
|
366
460
|
|
|
367
461
|
endInternal() {
|
|
@@ -398,6 +492,16 @@ class Stats {
|
|
|
398
492
|
this.prevGraphTime = currentTime;
|
|
399
493
|
}
|
|
400
494
|
|
|
495
|
+
if (this.vsyncPanel !== null) {
|
|
496
|
+
this.detectVSync(currentTime);
|
|
497
|
+
|
|
498
|
+
const vsyncValue = this.detectedVSync?.refreshRate || 0;
|
|
499
|
+
|
|
500
|
+
if (shouldUpdateText && vsyncValue > 0) {
|
|
501
|
+
this.vsyncPanel.update(vsyncValue, vsyncValue);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
401
505
|
return currentTime;
|
|
402
506
|
}
|
|
403
507
|
|
|
@@ -592,4 +696,4 @@ class Stats {
|
|
|
592
696
|
}
|
|
593
697
|
|
|
594
698
|
|
|
595
|
-
export default Stats;
|
|
699
|
+
export default Stats;
|
package/lib/panel.ts
CHANGED
|
@@ -81,7 +81,7 @@ class Panel {
|
|
|
81
81
|
return gradient;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
public initializeCanvas() {
|
|
85
85
|
if (!this.context) return;
|
|
86
86
|
|
|
87
87
|
this.context.imageSmoothingEnabled = false;
|
|
@@ -104,7 +104,7 @@ class Panel {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
// Update only text portion
|
|
107
|
-
update(value: number, maxValue: number, decimals: number = 0) {
|
|
107
|
+
public update(value: number, maxValue: number, decimals: number = 0) {
|
|
108
108
|
if (!this.context || !this.gradient) return;
|
|
109
109
|
|
|
110
110
|
const min = Math.min(Infinity, value);
|
|
@@ -125,7 +125,7 @@ class Panel {
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
// Update only graph portion
|
|
128
|
-
updateGraph(valueGraph: number, maxGraph: number) {
|
|
128
|
+
public updateGraph(valueGraph: number, maxGraph: number) {
|
|
129
129
|
if (!this.context || !this.gradient) return;
|
|
130
130
|
|
|
131
131
|
// Handle zero values appropriately
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Panel } from './panel';
|
|
2
|
+
|
|
3
|
+
class PanelVSync extends Panel {
|
|
4
|
+
private readonly SMALL_HEIGHT: number;
|
|
5
|
+
private vsyncValue: number = 0;
|
|
6
|
+
|
|
7
|
+
constructor(name: string, fg: string, bg: string) {
|
|
8
|
+
super(name, fg, bg);
|
|
9
|
+
|
|
10
|
+
// Redefine dimensions for a smaller panel
|
|
11
|
+
this.SMALL_HEIGHT = 9 * this.PR; // Smaller height
|
|
12
|
+
this.HEIGHT = this.SMALL_HEIGHT;
|
|
13
|
+
this.TEXT_Y = 0 * this.PR; // Adjust text position
|
|
14
|
+
|
|
15
|
+
// Resize the canvas
|
|
16
|
+
this.canvas.height = this.HEIGHT;
|
|
17
|
+
this.canvas.style.height = '9px'; // Match the new height
|
|
18
|
+
|
|
19
|
+
// Style for overlay positioning
|
|
20
|
+
this.canvas.style.cssText = `
|
|
21
|
+
width: 90px;
|
|
22
|
+
height: 9px;
|
|
23
|
+
position: absolute;
|
|
24
|
+
top: 0;
|
|
25
|
+
left: 0;
|
|
26
|
+
pointer-events: none; // Allow clicks to pass through
|
|
27
|
+
`;
|
|
28
|
+
|
|
29
|
+
// Reinitialize with new dimensions
|
|
30
|
+
this.initializeCanvas();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public initializeCanvas() {
|
|
34
|
+
if (!this.context) return;
|
|
35
|
+
|
|
36
|
+
this.context.imageSmoothingEnabled = false;
|
|
37
|
+
|
|
38
|
+
// Larger font for better visibility
|
|
39
|
+
this.context.font = 'bold ' + (9 * this.PR) + 'px Helvetica,Arial,sans-serif';
|
|
40
|
+
this.context.textBaseline = 'top';
|
|
41
|
+
|
|
42
|
+
this.context.globalAlpha = 1;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Override update for VSync-specific display
|
|
46
|
+
public update(value: number, _maxValue: number, _decimals: number = 0) {
|
|
47
|
+
if (!this.context) return;
|
|
48
|
+
|
|
49
|
+
this.vsyncValue = value;
|
|
50
|
+
|
|
51
|
+
this.context.clearRect(0, 0, this.WIDTH, this.HEIGHT);
|
|
52
|
+
// Draw VSync text
|
|
53
|
+
this.context.globalAlpha = 1;
|
|
54
|
+
this.context.fillStyle = this.bg;
|
|
55
|
+
this.context.fillText(
|
|
56
|
+
`${value.toFixed(0)}Hz`,
|
|
57
|
+
this.TEXT_X,
|
|
58
|
+
this.TEXT_Y
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Override updateGraph to do nothing (we don't need a graph for VSync)
|
|
63
|
+
public updateGraph(_valueGraph: number, _maxGraph: number) {
|
|
64
|
+
// No graph needed for VSync display
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Method to set the offset position relative to parent panel
|
|
69
|
+
public setOffset(x: number, y: number) {
|
|
70
|
+
this.canvas.style.transform = `translate(${x}px, ${y}px)`;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { PanelVSync };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stats-gl",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Renaud ROHLINGER (https://github.com/RenaudRohlinger)",
|
|
6
6
|
"homepage": "https://github.com/RenaudRohlinger/stats-gl",
|
|
@@ -27,20 +27,21 @@
|
|
|
27
27
|
"build": "tsc && vite build && rollup -c && node ./scripts/copyBuild.js",
|
|
28
28
|
"preview": "vite preview"
|
|
29
29
|
},
|
|
30
|
-
"dependencies": {
|
|
31
|
-
"@types/three": "*",
|
|
32
|
-
"three": "^0.170.0"
|
|
33
|
-
},
|
|
34
30
|
"devDependencies": {
|
|
35
31
|
"fs-extra": "^11.2.0",
|
|
36
32
|
"path": "^0.12.7",
|
|
37
33
|
"rollup": "^4.24.3",
|
|
38
34
|
"rollup-plugin-dts": "^5.3.1",
|
|
39
35
|
"typescript": "^5.6.3",
|
|
40
|
-
"vite": "^4.5.5"
|
|
36
|
+
"vite": "^4.5.5",
|
|
37
|
+
"@types/three": "*"
|
|
41
38
|
},
|
|
42
39
|
"peerDependencies": {
|
|
43
|
-
"three": "*"
|
|
44
|
-
|
|
40
|
+
"three": "*"
|
|
41
|
+
},
|
|
42
|
+
"peerDependenciesMeta": {
|
|
43
|
+
"three": {
|
|
44
|
+
"optional": true
|
|
45
|
+
}
|
|
45
46
|
}
|
|
46
47
|
}
|