stats-gl 2.2.8 → 2.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 CHANGED
@@ -34,13 +34,14 @@ import Stats from "stats-gl";
34
34
 
35
35
  // create a new Stats object
36
36
  const stats = new Stats({
37
- logsPerSecond: 20,
37
+ trackGPU: false,
38
+ logsPerSecond: 20,
38
39
  samplesLog: 100,
39
40
  samplesGraph: 10,
40
41
  precision: 2,
41
42
  horizontal: true,
42
43
  minimal: false,
43
- mode: 0
44
+ mode: 0
44
45
  });
45
46
 
46
47
  // append the stats container to the body of the document
package/dist/main.cjs CHANGED
@@ -1,144 +1,149 @@
1
1
  "use strict";
2
2
  const panel = require("./panel.cjs");
3
3
  const _Stats = class _Stats2 {
4
- constructor({ logsPerSecond = 20, samplesLog = 100, samplesGraph = 10, precision = 2, minimal = false, horizontal = true, mode = 0 } = {}) {
4
+ constructor({
5
+ trackGPU = false,
6
+ logsPerSecond = 20,
7
+ samplesLog = 100,
8
+ samplesGraph = 10,
9
+ precision = 2,
10
+ minimal = false,
11
+ horizontal = true,
12
+ mode = 0
13
+ } = {}) {
14
+ this.gl = null;
15
+ this.ext = null;
16
+ this.activeQuery = null;
17
+ this.gpuQueries = [];
18
+ this.threeRendererPatched = false;
19
+ this.frames = 0;
20
+ this.renderCount = 0;
21
+ this.isRunningCPUProfiling = false;
5
22
  this.totalCpuDuration = 0;
6
23
  this.totalGpuDuration = 0;
7
24
  this.totalGpuDurationCompute = 0;
8
25
  this.totalFps = 0;
9
- this.activeQuery = null;
10
- this.gpuQueries = [];
11
- this.renderCount = 0;
26
+ this.gpuPanel = null;
27
+ this.gpuPanelCompute = null;
28
+ this.averageCpu = { logs: [], graph: [] };
29
+ this.averageGpu = { logs: [], graph: [] };
30
+ this.averageGpuCompute = { logs: [], graph: [] };
31
+ this.handleClick = (event) => {
32
+ event.preventDefault();
33
+ this.showPanel(++this.mode % this.dom.children.length);
34
+ };
35
+ this.handleResize = () => {
36
+ this.resizePanel(this.fpsPanel, 0);
37
+ this.resizePanel(this.msPanel, 1);
38
+ if (this.gpuPanel)
39
+ this.resizePanel(this.gpuPanel, 2);
40
+ if (this.gpuPanelCompute)
41
+ this.resizePanel(this.gpuPanelCompute, 3);
42
+ };
12
43
  this.mode = mode;
13
44
  this.horizontal = horizontal;
14
- this.dom = document.createElement("div");
15
- this.dom.style.cssText = "position:fixed;top:0;left:0;opacity:0.9;z-index:10000;";
16
- if (minimal) {
17
- this.dom.style.cssText += "cursor:pointer";
18
- }
19
- this.gl = null;
20
- this.query = null;
21
- this.isRunningCPUProfiling = false;
22
45
  this.minimal = minimal;
23
- this.beginTime = (performance || Date).now();
24
- this.prevTime = this.beginTime;
25
- this.prevCpuTime = this.beginTime;
26
- this.frames = 0;
27
- this.renderCount = 0;
28
- this.threeRendererPatched = false;
29
- this.averageCpu = {
30
- logs: [],
31
- graph: []
32
- };
33
- this.averageGpu = {
34
- logs: [],
35
- graph: []
36
- };
37
- this.averageGpuCompute = {
38
- logs: [],
39
- graph: []
40
- };
41
- this.queryCreated = false;
42
- this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
43
- this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
44
- this.gpuPanel = null;
45
- this.gpuPanelCompute = null;
46
+ this.trackGPU = trackGPU;
47
+ console.log("trackGPU", trackGPU);
46
48
  this.samplesLog = samplesLog;
47
49
  this.samplesGraph = samplesGraph;
48
50
  this.precision = precision;
49
51
  this.logsPerSecond = logsPerSecond;
50
- if (this.minimal) {
51
- this.dom.addEventListener("click", (event) => {
52
- event.preventDefault();
53
- this.showPanel(++this.mode % this.dom.children.length);
54
- }, false);
55
- this.mode = mode;
56
- this.showPanel(this.mode);
57
- } else {
58
- window.addEventListener("resize", () => {
59
- this.resizePanel(this.fpsPanel, 0);
60
- this.resizePanel(this.msPanel, 1);
61
- if (this.gpuPanel) {
62
- this.resizePanel(this.gpuPanel, 2);
63
- }
64
- if (this.gpuPanelCompute) {
65
- this.resizePanel(this.gpuPanelCompute, 3);
66
- }
67
- });
68
- }
52
+ this.dom = document.createElement("div");
53
+ this.initializeDOM();
54
+ this.beginTime = performance.now();
55
+ this.prevTime = this.beginTime;
56
+ this.prevCpuTime = this.beginTime;
57
+ this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
58
+ this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
59
+ this.setupEventListeners();
69
60
  }
70
- patchThreeRenderer(renderer) {
71
- const originalRenderMethod = renderer.render;
72
- const statsInstance = this;
73
- renderer.render = function(scene, camera) {
74
- statsInstance.begin();
75
- originalRenderMethod.call(this, scene, camera);
76
- statsInstance.end();
77
- };
78
- this.threeRendererPatched = true;
61
+ initializeDOM() {
62
+ this.dom.style.cssText = `
63
+ position: fixed;
64
+ top: 0;
65
+ left: 0;
66
+ opacity: 0.9;
67
+ z-index: 10000;
68
+ ${this.minimal ? "cursor: pointer;" : ""}
69
+ `;
79
70
  }
80
- resizePanel(panel2, offset) {
81
- panel2.canvas.style.position = "absolute";
71
+ setupEventListeners() {
82
72
  if (this.minimal) {
83
- panel2.canvas.style.display = "none";
73
+ this.dom.addEventListener("click", this.handleClick);
74
+ this.showPanel(this.mode);
84
75
  } else {
85
- panel2.canvas.style.display = "block";
86
- if (this.horizontal) {
87
- panel2.canvas.style.top = "0px";
88
- panel2.canvas.style.left = offset * panel2.WIDTH / panel2.PR + "px";
89
- } else {
90
- panel2.canvas.style.left = "0px";
91
- panel2.canvas.style.top = offset * panel2.HEIGHT / panel2.PR + "px";
92
- }
76
+ window.addEventListener("resize", this.handleResize);
93
77
  }
94
78
  }
95
- addPanel(panel2, offset) {
96
- if (panel2.canvas) {
97
- this.dom.appendChild(panel2.canvas);
98
- this.resizePanel(panel2, offset);
99
- }
100
- return panel2;
101
- }
102
- showPanel(id) {
103
- for (let i = 0; i < this.dom.children.length; i++) {
104
- const child = this.dom.children[i];
105
- child.style.display = i === id ? "block" : "none";
106
- }
107
- this.mode = id;
108
- }
109
79
  async init(canvasOrGL) {
110
80
  if (!canvasOrGL) {
111
81
  console.error('Stats: The "canvas" parameter is undefined.');
112
82
  return;
113
83
  }
114
- if (canvasOrGL.isWebGLRenderer && !this.threeRendererPatched) {
115
- const canvas = canvasOrGL;
116
- this.patchThreeRenderer(canvas);
117
- this.gl = canvas.getContext();
118
- } else if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
119
- this.gl = canvasOrGL;
84
+ if (this.handleThreeRenderer(canvasOrGL))
85
+ return;
86
+ if (await this.handleWebGPURenderer(canvasOrGL))
87
+ return;
88
+ if (!this.initializeWebGL(canvasOrGL))
89
+ return;
90
+ }
91
+ handleThreeRenderer(renderer) {
92
+ if (renderer.isWebGLRenderer && !this.threeRendererPatched) {
93
+ this.patchThreeRenderer(renderer);
94
+ this.gl = renderer.getContext();
95
+ if (this.trackGPU) {
96
+ this.initializeGPUTracking();
97
+ }
98
+ return true;
120
99
  }
121
- if (canvasOrGL.isWebGPURenderer) {
122
- canvasOrGL.backend.trackTimestamp = true;
123
- if (await canvasOrGL.hasFeatureAsync("timestamp-query")) {
124
- this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
125
- this.gpuPanelCompute = this.addPanel(new _Stats2.Panel("CPT", "#e1e1e1", "#212121"), 3);
126
- this.info = canvasOrGL.info;
100
+ return false;
101
+ }
102
+ async handleWebGPURenderer(renderer) {
103
+ console.log("renderer", renderer);
104
+ if (renderer.isWebGPURenderer) {
105
+ if (this.trackGPU) {
106
+ console.log("trackGPU", this.trackGPU);
107
+ renderer.backend.trackTimestamp = true;
108
+ if (await renderer.hasFeatureAsync("timestamp-query")) {
109
+ this.initializeWebGPUPanels();
110
+ }
127
111
  }
128
- return;
129
- } else if (!this.gl && canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
112
+ this.info = renderer.info;
113
+ return true;
114
+ }
115
+ return false;
116
+ }
117
+ initializeWebGPUPanels() {
118
+ this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
119
+ this.gpuPanelCompute = this.addPanel(
120
+ new _Stats2.Panel("CPT", "#e1e1e1", "#212121"),
121
+ 3
122
+ );
123
+ }
124
+ initializeWebGL(canvasOrGL) {
125
+ if (canvasOrGL instanceof WebGL2RenderingContext) {
126
+ this.gl = canvasOrGL;
127
+ } else if (canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
130
128
  this.gl = canvasOrGL.getContext("webgl2");
131
129
  if (!this.gl) {
132
130
  console.error("Stats: Unable to obtain WebGL2 context.");
133
- return;
131
+ return false;
134
132
  }
135
- } else if (!this.gl) {
136
- console.error("Stats: Invalid input type. Expected WebGL2RenderingContext, HTMLCanvasElement, or OffscreenCanvas.");
137
- return;
133
+ } else {
134
+ console.error(
135
+ "Stats: Invalid input type. Expected WebGL2RenderingContext, HTMLCanvasElement, or OffscreenCanvas."
136
+ );
137
+ return false;
138
138
  }
139
- this.ext = this.gl.getExtension("EXT_disjoint_timer_query_webgl2");
140
- if (this.ext) {
141
- this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
139
+ return true;
140
+ }
141
+ initializeGPUTracking() {
142
+ if (this.gl) {
143
+ this.ext = this.gl.getExtension("EXT_disjoint_timer_query_webgl2");
144
+ if (this.ext) {
145
+ this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
146
+ }
142
147
  }
143
148
  }
144
149
  begin() {
@@ -147,14 +152,12 @@ const _Stats = class _Stats2 {
147
152
  }
148
153
  if (!this.gl || !this.ext)
149
154
  return;
150
- if (this.gl && this.ext) {
151
- if (this.activeQuery) {
152
- this.gl.endQuery(this.ext.TIME_ELAPSED_EXT);
153
- }
154
- this.activeQuery = this.gl.createQuery();
155
- if (this.activeQuery !== null) {
156
- this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT, this.activeQuery);
157
- }
155
+ if (this.activeQuery) {
156
+ this.gl.endQuery(this.ext.TIME_ELAPSED_EXT);
157
+ }
158
+ this.activeQuery = this.gl.createQuery();
159
+ if (this.activeQuery) {
160
+ this.gl.beginQuery(this.ext.TIME_ELAPSED_EXT, this.activeQuery);
158
161
  }
159
162
  }
160
163
  end() {
@@ -165,6 +168,63 @@ const _Stats = class _Stats2 {
165
168
  this.activeQuery = null;
166
169
  }
167
170
  }
171
+ update() {
172
+ if (!this.info) {
173
+ this.processGpuQueries();
174
+ } else {
175
+ this.processWebGPUTimestamps();
176
+ }
177
+ this.endProfiling("cpu-started", "cpu-finished", "cpu-duration");
178
+ this.updateAverages();
179
+ this.resetCounters();
180
+ }
181
+ processWebGPUTimestamps() {
182
+ this.totalGpuDuration = this.info.render.timestamp;
183
+ this.totalGpuDurationCompute = this.info.compute.timestamp;
184
+ this.addToAverage(this.totalGpuDurationCompute, this.averageGpuCompute);
185
+ }
186
+ updateAverages() {
187
+ this.addToAverage(this.totalCpuDuration, this.averageCpu);
188
+ this.addToAverage(this.totalGpuDuration, this.averageGpu);
189
+ }
190
+ resetCounters() {
191
+ this.renderCount = 0;
192
+ if (this.totalCpuDuration === 0) {
193
+ this.beginProfiling("cpu-started");
194
+ }
195
+ this.totalCpuDuration = 0;
196
+ this.totalFps = 0;
197
+ this.beginTime = this.endInternal();
198
+ }
199
+ resizePanel(panel2, offset) {
200
+ panel2.canvas.style.position = "absolute";
201
+ if (this.minimal) {
202
+ panel2.canvas.style.display = "none";
203
+ } else {
204
+ panel2.canvas.style.display = "block";
205
+ if (this.horizontal) {
206
+ panel2.canvas.style.top = "0px";
207
+ panel2.canvas.style.left = offset * panel2.WIDTH / panel2.PR + "px";
208
+ } else {
209
+ panel2.canvas.style.left = "0px";
210
+ panel2.canvas.style.top = offset * panel2.HEIGHT / panel2.PR + "px";
211
+ }
212
+ }
213
+ }
214
+ addPanel(panel2, offset) {
215
+ if (panel2.canvas) {
216
+ this.dom.appendChild(panel2.canvas);
217
+ this.resizePanel(panel2, offset);
218
+ }
219
+ return panel2;
220
+ }
221
+ showPanel(id) {
222
+ for (let i = 0; i < this.dom.children.length; i++) {
223
+ const child = this.dom.children[i];
224
+ child.style.display = i === id ? "block" : "none";
225
+ }
226
+ this.mode = id;
227
+ }
168
228
  processGpuQueries() {
169
229
  if (!this.gl || !this.ext)
170
230
  return;
@@ -183,25 +243,6 @@ const _Stats = class _Stats2 {
183
243
  }
184
244
  });
185
245
  }
186
- update() {
187
- if (this.info === void 0) {
188
- this.processGpuQueries();
189
- } else {
190
- this.totalGpuDuration = this.info.render.timestamp;
191
- this.totalGpuDurationCompute = this.info.compute.timestamp;
192
- this.addToAverage(this.totalGpuDurationCompute, this.averageGpuCompute);
193
- }
194
- this.endProfiling("cpu-started", "cpu-finished", "cpu-duration");
195
- this.addToAverage(this.totalCpuDuration, this.averageCpu);
196
- this.addToAverage(this.totalGpuDuration, this.averageGpu);
197
- this.renderCount = 0;
198
- if (this.totalCpuDuration === 0) {
199
- this.beginProfiling("cpu-started");
200
- }
201
- this.totalCpuDuration = 0;
202
- this.totalFps = 0;
203
- this.beginTime = this.endInternal();
204
- }
205
246
  endInternal() {
206
247
  this.frames++;
207
248
  const time = (performance || Date).now();
@@ -271,12 +312,18 @@ const _Stats = class _Stats2 {
271
312
  get domElement() {
272
313
  return this.dom;
273
314
  }
274
- get container() {
275
- console.warn("Stats: Deprecated! this.container as been replaced to this.dom ");
276
- return this.dom;
315
+ patchThreeRenderer(renderer) {
316
+ const originalRenderMethod = renderer.render;
317
+ const statsInstance = this;
318
+ renderer.render = function(scene, camera) {
319
+ statsInstance.begin();
320
+ originalRenderMethod.call(this, scene, camera);
321
+ statsInstance.end();
322
+ };
323
+ this.threeRendererPatched = true;
277
324
  }
278
325
  };
279
- _Stats.Panel = panel;
326
+ _Stats.Panel = panel.Panel;
280
327
  let Stats = _Stats;
281
328
  module.exports = Stats;
282
329
  //# sourceMappingURL=main.cjs.map
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","panel","Panel"],"mappings":"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"}