stats-gl 2.0.1 → 2.2.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/dist/main.cjs CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  const panel = require("./panel.cjs");
3
- const _Stats = class _Stats {
3
+ const _Stats = class _Stats2 {
4
4
  constructor({ logsPerSecond = 20, samplesLog = 100, samplesGraph = 10, precision = 2, minimal = false, horizontal = true, mode = 0 } = {}) {
5
5
  this.totalCpuDuration = 0;
6
6
  this.totalGpuDuration = 0;
7
+ this.totalGpuDurationCompute = 0;
7
8
  this.totalFps = 0;
8
9
  this.activeQuery = null;
9
10
  this.gpuQueries = [];
@@ -33,10 +34,15 @@ const _Stats = class _Stats {
33
34
  logs: [],
34
35
  graph: []
35
36
  };
37
+ this.averageGpuCompute = {
38
+ logs: [],
39
+ graph: []
40
+ };
36
41
  this.queryCreated = false;
37
- this.fpsPanel = this.addPanel(new _Stats.Panel("FPS", "#0ff", "#002"), 0);
38
- this.msPanel = this.addPanel(new _Stats.Panel("CPU", "#0f0", "#020"), 1);
42
+ this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
43
+ this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
39
44
  this.gpuPanel = null;
45
+ this.gpuPanelCompute = null;
40
46
  this.samplesLog = samplesLog;
41
47
  this.samplesGraph = samplesGraph;
42
48
  this.precision = precision;
@@ -55,6 +61,9 @@ const _Stats = class _Stats {
55
61
  if (this.gpuPanel) {
56
62
  this.resizePanel(this.gpuPanel, 2);
57
63
  }
64
+ if (this.gpuPanelCompute) {
65
+ this.resizePanel(this.gpuPanelCompute, 3);
66
+ }
58
67
  });
59
68
  }
60
69
  }
@@ -62,10 +71,24 @@ const _Stats = class _Stats {
62
71
  const originalRenderMethod = renderer.render;
63
72
  const statsInstance = this;
64
73
  renderer.render = function(scene, camera) {
74
+ if (statsInstance.info !== void 0) {
75
+ statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
76
+ }
65
77
  statsInstance.begin();
66
78
  originalRenderMethod.call(this, scene, camera);
67
79
  statsInstance.end();
68
80
  };
81
+ if (renderer.renderAsync) {
82
+ const originalRenderAsyncMethod = renderer.renderAsync;
83
+ renderer.renderAsync = function(scene, camera) {
84
+ if (statsInstance.info !== void 0) {
85
+ statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
86
+ }
87
+ statsInstance.begin();
88
+ originalRenderAsyncMethod.call(this, scene, camera);
89
+ statsInstance.end();
90
+ };
91
+ }
69
92
  this.threeRendererPatched = true;
70
93
  }
71
94
  resizePanel(panel2, offset) {
@@ -97,18 +120,26 @@ const _Stats = class _Stats {
97
120
  }
98
121
  this.mode = id;
99
122
  }
100
- init(canvasOrGL) {
123
+ async init(canvasOrGL) {
101
124
  if (!canvasOrGL) {
102
125
  console.error('Stats: The "canvas" parameter is undefined.');
103
126
  return;
104
127
  }
105
- if (canvasOrGL.isWebGLRenderer && !this.threeRendererPatched) {
128
+ if ((canvasOrGL.isWebGLRenderer || canvasOrGL.isWebGPURenderer) && !this.threeRendererPatched) {
106
129
  const canvas = canvasOrGL;
107
130
  this.patchThreeRenderer(canvas);
108
131
  this.gl = canvas.getContext();
109
- }
110
- if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
132
+ } else if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
111
133
  this.gl = canvasOrGL;
134
+ }
135
+ if (canvasOrGL.isWebGPURenderer) {
136
+ canvasOrGL.backend.trackTimestamp = true;
137
+ if (await canvasOrGL.hasFeatureAsync("timestamp-query")) {
138
+ this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
139
+ this.gpuPanelCompute = this.addPanel(new _Stats2.Panel("COM", "#e1e1e1", "#212121"), 3);
140
+ this.info = canvasOrGL.info;
141
+ }
142
+ return;
112
143
  } else if (!this.gl && canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
113
144
  this.gl = canvasOrGL.getContext("webgl2");
114
145
  if (!this.gl) {
@@ -121,7 +152,7 @@ const _Stats = class _Stats {
121
152
  }
122
153
  this.ext = this.gl.getExtension("EXT_disjoint_timer_query_webgl2");
123
154
  if (this.ext) {
124
- this.gpuPanel = this.addPanel(new _Stats.Panel("GPU", "#ff0", "#220"), 2);
155
+ this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
125
156
  }
126
157
  }
127
158
  begin() {
@@ -173,7 +204,11 @@ const _Stats = class _Stats {
173
204
  this.addToAverage(this.totalGpuDuration, this.averageGpu);
174
205
  this.renderCount = 0;
175
206
  this.totalCpuDuration = 0;
176
- this.totalGpuDuration = 0;
207
+ if (this.info === void 0) {
208
+ this.addToAverage(this.totalGpuDurationCompute, this.averageGpuCompute);
209
+ this.totalGpuDuration = 0;
210
+ this.totalGpuDurationCompute = 0;
211
+ }
177
212
  this.totalFps = 0;
178
213
  this.beginTime = this.endInternal();
179
214
  }
@@ -183,6 +218,9 @@ const _Stats = class _Stats {
183
218
  if (time >= this.prevCpuTime + 1e3 / this.logsPerSecond) {
184
219
  this.updatePanel(this.msPanel, this.averageCpu);
185
220
  this.updatePanel(this.gpuPanel, this.averageGpu);
221
+ if (this.gpuPanelCompute) {
222
+ this.updatePanel(this.gpuPanelCompute, this.averageGpuCompute);
223
+ }
186
224
  this.prevCpuTime = time;
187
225
  }
188
226
  if (time >= this.prevTime + 1e3) {
package/dist/main.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.cjs","sources":["../lib/main.ts"],"sourcesContent":null,"names":["panel","Panel"],"mappings":";;AAQA,MAAM,SAAN,MAAM,OAAM;AAAA,EAmCV,YAAY,EAAE,gBAAgB,IAAI,aAAa,KAAK,eAAe,IAAI,YAAY,GAAG,UAAU,OAAO,aAAa,MAAM,OAAO,EAAE,IAAI,IAAI;AAlChH,SAAA,mBAAA;AACA,SAAA,mBAAA;AACR,SAAA,WAAA;AAoBc,SAAA,cAAA;AASjC,SAAA,aAAsC;AAChB,SAAA,cAAA;AAIpB,SAAK,OAAO;AACZ,SAAK,aAAa;AACb,SAAA,MAAM,SAAS,cAAc,KAAK;AAClC,SAAA,IAAI,MAAM,UAAU;AAEzB,QAAI,SAAS;AAEN,WAAA,IAAI,MAAM,WAAW;AAAA,IAE5B;AAEA,SAAK,KAAK;AACV,SAAK,QAAQ;AAEb,SAAK,wBAAwB;AAC7B,SAAK,UAAU;AAEV,SAAA,aAAa,eAAe,MAAM,IAAI;AAC3C,SAAK,WAAW,KAAK;AACrB,SAAK,cAAc,KAAK;AACxB,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,uBAAuB;AAC5B,SAAK,aAAa;AAAA,MAChB,MAAM,CAAC;AAAA,MACP,OAAO,CAAC;AAAA,IAAA;AAEV,SAAK,aAAa;AAAA,MAChB,MAAM,CAAC;AAAA,MACP,OAAO,CAAC;AAAA,IAAA;AAGV,SAAK,eAAe;AAEf,SAAA,WAAW,KAAK,SAAS,IAAI,OAAM,MAAM,OAAO,QAAQ,MAAM,GAAG,CAAC;AAClE,SAAA,UAAU,KAAK,SAAS,IAAI,OAAM,MAAM,OAAO,QAAQ,MAAM,GAAG,CAAC;AACtE,SAAK,WAAW;AAEhB,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,gBAAgB;AAErB,QAAI,KAAK,SAAS;AAEhB,WAAK,IAAI,iBAAiB,SAAS,CAAC,UAAU;AAE5C,cAAM,eAAe;AACrB,aAAK,UAAU,EAAE,KAAK,OAAO,KAAK,IAAI,SAAS,MAAM;AAAA,SAEpD,KAAK;AAER,WAAK,OAAO;AACP,WAAA,UAAU,KAAK,IAAI;AAAA,IAAA,OAEnB;AAEE,aAAA,iBAAiB,UAAU,MAAM;AAEjC,aAAA,YAAY,KAAK,UAAU,CAAC;AAC5B,aAAA,YAAY,KAAK,SAAS,CAAC;AAEhC,YAAI,KAAK,UAAU;AACZ,eAAA,YAAY,KAAK,UAAU,CAAC;AAAA,QACnC;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EAGF;AAAA,EAEA,mBAAmB,UAA+B;AAGhD,UAAM,uBAAuB,SAAS;AAGtC,UAAM,gBAAgB;AAGb,aAAA,SAAS,SAAS,OAAO,QAAQ;AACxC,oBAAc,MAAM;AAGC,2BAAA,KAAK,MAAM,OAAO,MAAM;AAE7C,oBAAc,IAAI;AAAA,IAAA;AAGpB,SAAK,uBAAuB;AAAA,EAE9B;AAAA,EAEA,YAAYA,QAAc,QAAgB;AAElC,IAAAA,OAAA,OAAO,MAAM,WAAW;AAE9B,QAAI,KAAK,SAAS;AAEV,MAAAA,OAAA,OAAO,MAAM,UAAU;AAAA,IAAA,OAExB;AAEC,MAAAA,OAAA,OAAO,MAAM,UAAU;AAC7B,UAAI,KAAK,YAAY;AACb,QAAAA,OAAA,OAAO,MAAM,MAAM;AACzB,QAAAA,OAAM,OAAO,MAAM,OAAO,SAASA,OAAM,QAAQA,OAAM,KAAK;AAAA,MAAA,OACvD;AACC,QAAAA,OAAA,OAAO,MAAM,OAAO;AAC1B,QAAAA,OAAM,OAAO,MAAM,MAAM,SAASA,OAAM,SAASA,OAAM,KAAK;AAAA,MAE9D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAASA,QAAc,QAAgB;AAErC,QAAIA,OAAM,QAAQ;AAEX,WAAA,IAAI,YAAYA,OAAM,MAAM;AAE5B,WAAA,YAAYA,QAAO,MAAM;AAAA,IAEhC;AAEO,WAAAA;AAAA,EAET;AAAA,EAEA,UAAU,IAAY;AAEpB,aAAS,IAAI,GAAG,IAAI,KAAK,IAAI,SAAS,QAAQ,KAAK;AACjD,YAAM,QAAQ,KAAK,IAAI,SAAS,CAAC;AAEjC,YAAM,MAAM,UAAU,MAAM,KAAK,UAAU;AAAA,IAE7C;AAEA,SAAK,OAAO;AAAA,EAEd;AAAA,EAEA,KAAK,YAAgG;AACnG,QAAI,CAAC,YAAY;AACf,cAAQ,MAAM,6CAA6C;AAC3D;AAAA,IACF;AASA,QAAK,WAAmB,mBAAmB,CAAC,KAAK,sBAAsB;AACrE,YAAM,SAAc;AACpB,WAAK,mBAAmB,MAAa;AAChC,WAAA,KAAK,OAAO;IACnB;AAGA,QAAI,CAAC,KAAK,MAAM,sBAAsB,wBAAwB;AAC5D,WAAK,KAAK;AAAA,IAAA,WAIH,CAAC,KAAK,MAAM,sBAAsB,qBAAqB,sBAAsB,iBAAiB;AAChG,WAAA,KAAK,WAAW,WAAW,QAAQ;AACpC,UAAA,CAAC,KAAK,IAAI;AACZ,gBAAQ,MAAM,yCAAyC;AACvD;AAAA,MACF;AAAA,IAAA,WACS,CAAC,KAAK,IAAI;AACnB,cAAQ,MAAM,oGAAoG;AAClH;AAAA,IACF;AAGA,SAAK,MAAM,KAAK,GAAG,aAAa,iCAAiC;AACjE,QAAI,KAAK,KAAK;AACP,WAAA,WAAW,KAAK,SAAS,IAAI,OAAM,MAAM,OAAO,QAAQ,MAAM,GAAG,CAAC;AAAA,IACzE;AAAA,EACF;AAAA,EAGA,QAAQ;AAEF,QAAA,CAAC,KAAK,uBAAuB;AAC/B,WAAK,eAAe,aAAa;AAAA,IACnC;AAEA,QAAI,CAAC,KAAK,MAAM,CAAC,KAAK;AAAK;AAEvB,QAAA,KAAK,MAAM,KAAK,KAAK;AACvB,UAAI,KAAK,aAAa;AAEpB,aAAK,GAAG,SAAS,KAAK,IAAI,gBAAgB;AAAA,MAC5C;AAEK,WAAA,cAAc,KAAK,GAAG,YAAY;AACnC,UAAA,KAAK,gBAAgB,MAAM;AAC7B,aAAK,GAAG,WAAW,KAAK,IAAI,kBAAkB,KAAK,WAAW;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAAA,EAIA,MAAM;AAGC,SAAA;AAEL,QAAI,KAAK,MAAM,KAAK,OAAO,KAAK,aAAa;AAC3C,WAAK,GAAG,SAAS,KAAK,IAAI,gBAAgB;AAE1C,WAAK,WAAW,KAAK,EAAE,OAAO,KAAK,aAAa;AAChD,WAAK,cAAc;AAAA,IACrB;AAAA,EAEF;AAAA,EAEA,oBAAoB;AAClB,QAAI,CAAC,KAAK,MAAM,CAAC,KAAK;AAAK;AAE3B,SAAK,mBAAmB;AAExB,SAAK,WAAW,QAAQ,CAAC,WAAW,UAAU;AAC5C,UAAI,KAAK,IAAI;AACL,cAAA,YAAY,KAAK,GAAG,kBAAkB,UAAU,OAAO,KAAK,GAAG,sBAAsB;AAC3F,cAAM,WAAW,KAAK,GAAG,aAAa,KAAK,IAAI,gBAAgB;AAE3D,YAAA,aAAa,CAAC,UAAU;AACpB,gBAAA,UAAU,KAAK,GAAG,kBAAkB,UAAU,OAAO,KAAK,GAAG,YAAY;AAC/E,gBAAM,WAAW,UAAU;AAC3B,eAAK,oBAAoB;AACpB,eAAA,GAAG,YAAY,UAAU,KAAK;AAC9B,eAAA,WAAW,OAAO,OAAO,CAAC;AAAA,QACjC;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EAEH;AAAA,EAEA,SAAS;AAEP,SAAK,kBAAkB;AAClB,SAAA,aAAa,eAAe,gBAAgB,cAAc;AAG/D,SAAK,aAAa,KAAK,kBAAmB,KAAK,UAAU;AACzD,SAAK,aAAa,KAAK,kBAAkB,KAAK,UAAU;AAExD,SAAK,cAAc;AACnB,SAAK,mBAAmB;AACxB,SAAK,mBAAmB;AACxB,SAAK,WAAW;AAEX,SAAA,YAAY,KAAK;EAIxB;AAAA,EAEA,cAAc;AAEP,SAAA;AACC,UAAA,QAAQ,eAAe,MAAM,IAAI;AAEvC,QAAI,QAAQ,KAAK,cAAc,MAAO,KAAK,eAAe;AACxD,WAAK,YAAY,KAAK,SAAS,KAAK,UAAU;AAC9C,WAAK,YAAY,KAAK,UAAU,KAAK,UAAU;AAE/C,WAAK,cAAc;AAAA,IACrB;AAEI,QAAA,QAAQ,KAAK,WAAW,KAAM;AAEhC,YAAM,MAAO,KAAK,SAAS,OAAS,OAAO,KAAK;AAEhD,WAAK,SAAS,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC;AAE1C,WAAK,WAAW;AAChB,WAAK,SAAS;AAAA,IAEhB;AAEO,WAAA;AAAA,EAET;AAAA,EAEA,aAAa,OAAe,cAA0C;AAEvD,iBAAA,KAAK,KAAK,KAAK;AAC5B,QAAI,aAAa,KAAK,SAAS,KAAK,YAAY;AAE9C,mBAAa,KAAK;IAEpB;AAEa,iBAAA,MAAM,KAAK,KAAK;AAC7B,QAAI,aAAa,MAAM,SAAS,KAAK,cAAc;AAEjD,mBAAa,MAAM;IAErB;AAAA,EAEF;AAAA,EAEA,eAAe,QAAgB;AAE7B,QAAI,OAAO,aAAa;AAEf,aAAA,YAAY,KAAK,MAAM;AAC9B,WAAK,wBAAwB;AAAA,IAE/B;AAAA,EAEF;AAAA,EAEA,aAAa,aAA6D,WAA+B,aAAqB;AAE5H,QAAI,OAAO,eAAe,aAAa,KAAK,uBAAuB;AAE1D,aAAA,YAAY,KAAK,SAAS;AACjC,YAAM,aAAa,YAAY,QAAQ,aAAa,aAAa,SAAS;AAC1E,WAAK,oBAAoB,WAAW;AACpC,WAAK,wBAAwB;AAAA,IAE/B;AAAA,EAEF;AAAA,EAEA,YAAYA,QAAgC,cAAmD;AAEzF,QAAA,aAAa,KAAK,SAAS,GAAG;AAEhC,UAAI,SAAS;AACb,UAAI,MAAM;AAEV,eAAS,IAAI,GAAG,IAAI,aAAa,KAAK,QAAQ,KAAK;AAEvC,kBAAA,aAAa,KAAK,CAAC;AAE7B,YAAI,aAAa,KAAK,CAAC,IAAI,KAAK;AACxB,gBAAA,aAAa,KAAK,CAAC;AAAA,QAC3B;AAAA,MAEF;AAEA,UAAI,WAAW;AACf,UAAI,WAAW;AACf,eAAS,IAAI,GAAG,IAAI,aAAa,MAAM,QAAQ,KAAK;AAEtC,oBAAA,aAAa,MAAM,CAAC;AAEhC,YAAI,aAAa,MAAM,CAAC,IAAI,UAAU;AACzB,qBAAA,aAAa,MAAM,CAAC;AAAA,QACjC;AAAA,MAEF;AAEA,UAAIA,QAAO;AACH,QAAAA,OAAA,OAAO,SAAS,KAAK,IAAI,aAAa,KAAK,QAAQ,KAAK,UAAU,GAAG,WAAW,KAAK,IAAI,aAAa,MAAM,QAAQ,KAAK,YAAY,GAAG,KAAK,UAAU,KAAK,SAAS;AAAA,MAC7K;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,IAAI,aAAa;AAEjB,WAAO,KAAK;AAAA,EAEb;AAAA,EAEC,IAAI,YAAY;AAEhB,YAAQ,KAAK,iEAAiE;AAC9E,WAAO,KAAK;AAAA,EAEb;AAED;AAnZE,OAAO,QAAsBC;AAjB/B,IAAM,QAAN;;"}
1
+ {"version":3,"file":"main.cjs","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats","panel","Panel"],"mappings":"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"}
package/dist/main.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import Panel from "./panel.js";
2
- const _Stats = class _Stats {
2
+ const _Stats = class _Stats2 {
3
3
  constructor({ logsPerSecond = 20, samplesLog = 100, samplesGraph = 10, precision = 2, minimal = false, horizontal = true, mode = 0 } = {}) {
4
4
  this.totalCpuDuration = 0;
5
5
  this.totalGpuDuration = 0;
6
+ this.totalGpuDurationCompute = 0;
6
7
  this.totalFps = 0;
7
8
  this.activeQuery = null;
8
9
  this.gpuQueries = [];
@@ -32,10 +33,15 @@ const _Stats = class _Stats {
32
33
  logs: [],
33
34
  graph: []
34
35
  };
36
+ this.averageGpuCompute = {
37
+ logs: [],
38
+ graph: []
39
+ };
35
40
  this.queryCreated = false;
36
- this.fpsPanel = this.addPanel(new _Stats.Panel("FPS", "#0ff", "#002"), 0);
37
- this.msPanel = this.addPanel(new _Stats.Panel("CPU", "#0f0", "#020"), 1);
41
+ this.fpsPanel = this.addPanel(new _Stats2.Panel("FPS", "#0ff", "#002"), 0);
42
+ this.msPanel = this.addPanel(new _Stats2.Panel("CPU", "#0f0", "#020"), 1);
38
43
  this.gpuPanel = null;
44
+ this.gpuPanelCompute = null;
39
45
  this.samplesLog = samplesLog;
40
46
  this.samplesGraph = samplesGraph;
41
47
  this.precision = precision;
@@ -54,6 +60,9 @@ const _Stats = class _Stats {
54
60
  if (this.gpuPanel) {
55
61
  this.resizePanel(this.gpuPanel, 2);
56
62
  }
63
+ if (this.gpuPanelCompute) {
64
+ this.resizePanel(this.gpuPanelCompute, 3);
65
+ }
57
66
  });
58
67
  }
59
68
  }
@@ -61,10 +70,24 @@ const _Stats = class _Stats {
61
70
  const originalRenderMethod = renderer.render;
62
71
  const statsInstance = this;
63
72
  renderer.render = function(scene, camera) {
73
+ if (statsInstance.info !== void 0) {
74
+ statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
75
+ }
64
76
  statsInstance.begin();
65
77
  originalRenderMethod.call(this, scene, camera);
66
78
  statsInstance.end();
67
79
  };
80
+ if (renderer.renderAsync) {
81
+ const originalRenderAsyncMethod = renderer.renderAsync;
82
+ renderer.renderAsync = function(scene, camera) {
83
+ if (statsInstance.info !== void 0) {
84
+ statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render;
85
+ }
86
+ statsInstance.begin();
87
+ originalRenderAsyncMethod.call(this, scene, camera);
88
+ statsInstance.end();
89
+ };
90
+ }
68
91
  this.threeRendererPatched = true;
69
92
  }
70
93
  resizePanel(panel, offset) {
@@ -96,18 +119,26 @@ const _Stats = class _Stats {
96
119
  }
97
120
  this.mode = id;
98
121
  }
99
- init(canvasOrGL) {
122
+ async init(canvasOrGL) {
100
123
  if (!canvasOrGL) {
101
124
  console.error('Stats: The "canvas" parameter is undefined.');
102
125
  return;
103
126
  }
104
- if (canvasOrGL.isWebGLRenderer && !this.threeRendererPatched) {
127
+ if ((canvasOrGL.isWebGLRenderer || canvasOrGL.isWebGPURenderer) && !this.threeRendererPatched) {
105
128
  const canvas = canvasOrGL;
106
129
  this.patchThreeRenderer(canvas);
107
130
  this.gl = canvas.getContext();
108
- }
109
- if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
131
+ } else if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
110
132
  this.gl = canvasOrGL;
133
+ }
134
+ if (canvasOrGL.isWebGPURenderer) {
135
+ canvasOrGL.backend.trackTimestamp = true;
136
+ if (await canvasOrGL.hasFeatureAsync("timestamp-query")) {
137
+ this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
138
+ this.gpuPanelCompute = this.addPanel(new _Stats2.Panel("COM", "#e1e1e1", "#212121"), 3);
139
+ this.info = canvasOrGL.info;
140
+ }
141
+ return;
111
142
  } else if (!this.gl && canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
112
143
  this.gl = canvasOrGL.getContext("webgl2");
113
144
  if (!this.gl) {
@@ -120,7 +151,7 @@ const _Stats = class _Stats {
120
151
  }
121
152
  this.ext = this.gl.getExtension("EXT_disjoint_timer_query_webgl2");
122
153
  if (this.ext) {
123
- this.gpuPanel = this.addPanel(new _Stats.Panel("GPU", "#ff0", "#220"), 2);
154
+ this.gpuPanel = this.addPanel(new _Stats2.Panel("GPU", "#ff0", "#220"), 2);
124
155
  }
125
156
  }
126
157
  begin() {
@@ -172,7 +203,11 @@ const _Stats = class _Stats {
172
203
  this.addToAverage(this.totalGpuDuration, this.averageGpu);
173
204
  this.renderCount = 0;
174
205
  this.totalCpuDuration = 0;
175
- this.totalGpuDuration = 0;
206
+ if (this.info === void 0) {
207
+ this.addToAverage(this.totalGpuDurationCompute, this.averageGpuCompute);
208
+ this.totalGpuDuration = 0;
209
+ this.totalGpuDurationCompute = 0;
210
+ }
176
211
  this.totalFps = 0;
177
212
  this.beginTime = this.endInternal();
178
213
  }
@@ -182,6 +217,9 @@ const _Stats = class _Stats {
182
217
  if (time >= this.prevCpuTime + 1e3 / this.logsPerSecond) {
183
218
  this.updatePanel(this.msPanel, this.averageCpu);
184
219
  this.updatePanel(this.gpuPanel, this.averageGpu);
220
+ if (this.gpuPanelCompute) {
221
+ this.updatePanel(this.gpuPanelCompute, this.averageGpuCompute);
222
+ }
185
223
  this.prevCpuTime = time;
186
224
  }
187
225
  if (time >= this.prevTime + 1e3) {
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../lib/main.ts"],"sourcesContent":null,"names":[],"mappings":";AAQA,MAAM,SAAN,MAAM,OAAM;AAAA,EAmCV,YAAY,EAAE,gBAAgB,IAAI,aAAa,KAAK,eAAe,IAAI,YAAY,GAAG,UAAU,OAAO,aAAa,MAAM,OAAO,EAAE,IAAI,IAAI;AAlChH,SAAA,mBAAA;AACA,SAAA,mBAAA;AACR,SAAA,WAAA;AAoBc,SAAA,cAAA;AASjC,SAAA,aAAsC;AAChB,SAAA,cAAA;AAIpB,SAAK,OAAO;AACZ,SAAK,aAAa;AACb,SAAA,MAAM,SAAS,cAAc,KAAK;AAClC,SAAA,IAAI,MAAM,UAAU;AAEzB,QAAI,SAAS;AAEN,WAAA,IAAI,MAAM,WAAW;AAAA,IAE5B;AAEA,SAAK,KAAK;AACV,SAAK,QAAQ;AAEb,SAAK,wBAAwB;AAC7B,SAAK,UAAU;AAEV,SAAA,aAAa,eAAe,MAAM,IAAI;AAC3C,SAAK,WAAW,KAAK;AACrB,SAAK,cAAc,KAAK;AACxB,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,uBAAuB;AAC5B,SAAK,aAAa;AAAA,MAChB,MAAM,CAAC;AAAA,MACP,OAAO,CAAC;AAAA,IAAA;AAEV,SAAK,aAAa;AAAA,MAChB,MAAM,CAAC;AAAA,MACP,OAAO,CAAC;AAAA,IAAA;AAGV,SAAK,eAAe;AAEf,SAAA,WAAW,KAAK,SAAS,IAAI,OAAM,MAAM,OAAO,QAAQ,MAAM,GAAG,CAAC;AAClE,SAAA,UAAU,KAAK,SAAS,IAAI,OAAM,MAAM,OAAO,QAAQ,MAAM,GAAG,CAAC;AACtE,SAAK,WAAW;AAEhB,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,YAAY;AACjB,SAAK,gBAAgB;AAErB,QAAI,KAAK,SAAS;AAEhB,WAAK,IAAI,iBAAiB,SAAS,CAAC,UAAU;AAE5C,cAAM,eAAe;AACrB,aAAK,UAAU,EAAE,KAAK,OAAO,KAAK,IAAI,SAAS,MAAM;AAAA,SAEpD,KAAK;AAER,WAAK,OAAO;AACP,WAAA,UAAU,KAAK,IAAI;AAAA,IAAA,OAEnB;AAEE,aAAA,iBAAiB,UAAU,MAAM;AAEjC,aAAA,YAAY,KAAK,UAAU,CAAC;AAC5B,aAAA,YAAY,KAAK,SAAS,CAAC;AAEhC,YAAI,KAAK,UAAU;AACZ,eAAA,YAAY,KAAK,UAAU,CAAC;AAAA,QACnC;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EAGF;AAAA,EAEA,mBAAmB,UAA+B;AAGhD,UAAM,uBAAuB,SAAS;AAGtC,UAAM,gBAAgB;AAGb,aAAA,SAAS,SAAS,OAAO,QAAQ;AACxC,oBAAc,MAAM;AAGC,2BAAA,KAAK,MAAM,OAAO,MAAM;AAE7C,oBAAc,IAAI;AAAA,IAAA;AAGpB,SAAK,uBAAuB;AAAA,EAE9B;AAAA,EAEA,YAAY,OAAc,QAAgB;AAElC,UAAA,OAAO,MAAM,WAAW;AAE9B,QAAI,KAAK,SAAS;AAEV,YAAA,OAAO,MAAM,UAAU;AAAA,IAAA,OAExB;AAEC,YAAA,OAAO,MAAM,UAAU;AAC7B,UAAI,KAAK,YAAY;AACb,cAAA,OAAO,MAAM,MAAM;AACzB,cAAM,OAAO,MAAM,OAAO,SAAS,MAAM,QAAQ,MAAM,KAAK;AAAA,MAAA,OACvD;AACC,cAAA,OAAO,MAAM,OAAO;AAC1B,cAAM,OAAO,MAAM,MAAM,SAAS,MAAM,SAAS,MAAM,KAAK;AAAA,MAE9D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS,OAAc,QAAgB;AAErC,QAAI,MAAM,QAAQ;AAEX,WAAA,IAAI,YAAY,MAAM,MAAM;AAE5B,WAAA,YAAY,OAAO,MAAM;AAAA,IAEhC;AAEO,WAAA;AAAA,EAET;AAAA,EAEA,UAAU,IAAY;AAEpB,aAAS,IAAI,GAAG,IAAI,KAAK,IAAI,SAAS,QAAQ,KAAK;AACjD,YAAM,QAAQ,KAAK,IAAI,SAAS,CAAC;AAEjC,YAAM,MAAM,UAAU,MAAM,KAAK,UAAU;AAAA,IAE7C;AAEA,SAAK,OAAO;AAAA,EAEd;AAAA,EAEA,KAAK,YAAgG;AACnG,QAAI,CAAC,YAAY;AACf,cAAQ,MAAM,6CAA6C;AAC3D;AAAA,IACF;AASA,QAAK,WAAmB,mBAAmB,CAAC,KAAK,sBAAsB;AACrE,YAAM,SAAc;AACpB,WAAK,mBAAmB,MAAa;AAChC,WAAA,KAAK,OAAO;IACnB;AAGA,QAAI,CAAC,KAAK,MAAM,sBAAsB,wBAAwB;AAC5D,WAAK,KAAK;AAAA,IAAA,WAIH,CAAC,KAAK,MAAM,sBAAsB,qBAAqB,sBAAsB,iBAAiB;AAChG,WAAA,KAAK,WAAW,WAAW,QAAQ;AACpC,UAAA,CAAC,KAAK,IAAI;AACZ,gBAAQ,MAAM,yCAAyC;AACvD;AAAA,MACF;AAAA,IAAA,WACS,CAAC,KAAK,IAAI;AACnB,cAAQ,MAAM,oGAAoG;AAClH;AAAA,IACF;AAGA,SAAK,MAAM,KAAK,GAAG,aAAa,iCAAiC;AACjE,QAAI,KAAK,KAAK;AACP,WAAA,WAAW,KAAK,SAAS,IAAI,OAAM,MAAM,OAAO,QAAQ,MAAM,GAAG,CAAC;AAAA,IACzE;AAAA,EACF;AAAA,EAGA,QAAQ;AAEF,QAAA,CAAC,KAAK,uBAAuB;AAC/B,WAAK,eAAe,aAAa;AAAA,IACnC;AAEA,QAAI,CAAC,KAAK,MAAM,CAAC,KAAK;AAAK;AAEvB,QAAA,KAAK,MAAM,KAAK,KAAK;AACvB,UAAI,KAAK,aAAa;AAEpB,aAAK,GAAG,SAAS,KAAK,IAAI,gBAAgB;AAAA,MAC5C;AAEK,WAAA,cAAc,KAAK,GAAG,YAAY;AACnC,UAAA,KAAK,gBAAgB,MAAM;AAC7B,aAAK,GAAG,WAAW,KAAK,IAAI,kBAAkB,KAAK,WAAW;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAAA,EAIA,MAAM;AAGC,SAAA;AAEL,QAAI,KAAK,MAAM,KAAK,OAAO,KAAK,aAAa;AAC3C,WAAK,GAAG,SAAS,KAAK,IAAI,gBAAgB;AAE1C,WAAK,WAAW,KAAK,EAAE,OAAO,KAAK,aAAa;AAChD,WAAK,cAAc;AAAA,IACrB;AAAA,EAEF;AAAA,EAEA,oBAAoB;AAClB,QAAI,CAAC,KAAK,MAAM,CAAC,KAAK;AAAK;AAE3B,SAAK,mBAAmB;AAExB,SAAK,WAAW,QAAQ,CAAC,WAAW,UAAU;AAC5C,UAAI,KAAK,IAAI;AACL,cAAA,YAAY,KAAK,GAAG,kBAAkB,UAAU,OAAO,KAAK,GAAG,sBAAsB;AAC3F,cAAM,WAAW,KAAK,GAAG,aAAa,KAAK,IAAI,gBAAgB;AAE3D,YAAA,aAAa,CAAC,UAAU;AACpB,gBAAA,UAAU,KAAK,GAAG,kBAAkB,UAAU,OAAO,KAAK,GAAG,YAAY;AAC/E,gBAAM,WAAW,UAAU;AAC3B,eAAK,oBAAoB;AACpB,eAAA,GAAG,YAAY,UAAU,KAAK;AAC9B,eAAA,WAAW,OAAO,OAAO,CAAC;AAAA,QACjC;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EAEH;AAAA,EAEA,SAAS;AAEP,SAAK,kBAAkB;AAClB,SAAA,aAAa,eAAe,gBAAgB,cAAc;AAG/D,SAAK,aAAa,KAAK,kBAAmB,KAAK,UAAU;AACzD,SAAK,aAAa,KAAK,kBAAkB,KAAK,UAAU;AAExD,SAAK,cAAc;AACnB,SAAK,mBAAmB;AACxB,SAAK,mBAAmB;AACxB,SAAK,WAAW;AAEX,SAAA,YAAY,KAAK;EAIxB;AAAA,EAEA,cAAc;AAEP,SAAA;AACC,UAAA,QAAQ,eAAe,MAAM,IAAI;AAEvC,QAAI,QAAQ,KAAK,cAAc,MAAO,KAAK,eAAe;AACxD,WAAK,YAAY,KAAK,SAAS,KAAK,UAAU;AAC9C,WAAK,YAAY,KAAK,UAAU,KAAK,UAAU;AAE/C,WAAK,cAAc;AAAA,IACrB;AAEI,QAAA,QAAQ,KAAK,WAAW,KAAM;AAEhC,YAAM,MAAO,KAAK,SAAS,OAAS,OAAO,KAAK;AAEhD,WAAK,SAAS,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC;AAE1C,WAAK,WAAW;AAChB,WAAK,SAAS;AAAA,IAEhB;AAEO,WAAA;AAAA,EAET;AAAA,EAEA,aAAa,OAAe,cAA0C;AAEvD,iBAAA,KAAK,KAAK,KAAK;AAC5B,QAAI,aAAa,KAAK,SAAS,KAAK,YAAY;AAE9C,mBAAa,KAAK;IAEpB;AAEa,iBAAA,MAAM,KAAK,KAAK;AAC7B,QAAI,aAAa,MAAM,SAAS,KAAK,cAAc;AAEjD,mBAAa,MAAM;IAErB;AAAA,EAEF;AAAA,EAEA,eAAe,QAAgB;AAE7B,QAAI,OAAO,aAAa;AAEf,aAAA,YAAY,KAAK,MAAM;AAC9B,WAAK,wBAAwB;AAAA,IAE/B;AAAA,EAEF;AAAA,EAEA,aAAa,aAA6D,WAA+B,aAAqB;AAE5H,QAAI,OAAO,eAAe,aAAa,KAAK,uBAAuB;AAE1D,aAAA,YAAY,KAAK,SAAS;AACjC,YAAM,aAAa,YAAY,QAAQ,aAAa,aAAa,SAAS;AAC1E,WAAK,oBAAoB,WAAW;AACpC,WAAK,wBAAwB;AAAA,IAE/B;AAAA,EAEF;AAAA,EAEA,YAAY,OAAgC,cAAmD;AAEzF,QAAA,aAAa,KAAK,SAAS,GAAG;AAEhC,UAAI,SAAS;AACb,UAAI,MAAM;AAEV,eAAS,IAAI,GAAG,IAAI,aAAa,KAAK,QAAQ,KAAK;AAEvC,kBAAA,aAAa,KAAK,CAAC;AAE7B,YAAI,aAAa,KAAK,CAAC,IAAI,KAAK;AACxB,gBAAA,aAAa,KAAK,CAAC;AAAA,QAC3B;AAAA,MAEF;AAEA,UAAI,WAAW;AACf,UAAI,WAAW;AACf,eAAS,IAAI,GAAG,IAAI,aAAa,MAAM,QAAQ,KAAK;AAEtC,oBAAA,aAAa,MAAM,CAAC;AAEhC,YAAI,aAAa,MAAM,CAAC,IAAI,UAAU;AACzB,qBAAA,aAAa,MAAM,CAAC;AAAA,QACjC;AAAA,MAEF;AAEA,UAAI,OAAO;AACH,cAAA,OAAO,SAAS,KAAK,IAAI,aAAa,KAAK,QAAQ,KAAK,UAAU,GAAG,WAAW,KAAK,IAAI,aAAa,MAAM,QAAQ,KAAK,YAAY,GAAG,KAAK,UAAU,KAAK,SAAS;AAAA,MAC7K;AAAA,IAEF;AAAA,EACF;AAAA,EAEA,IAAI,aAAa;AAEjB,WAAO,KAAK;AAAA,EAEb;AAAA,EAEC,IAAI,YAAY;AAEhB,YAAQ,KAAK,iEAAiE;AAC9E,WAAO,KAAK;AAAA,EAEb;AAED;AAnZE,OAAO,QAAsB;AAjB/B,IAAM,QAAN;"}
1
+ {"version":3,"file":"main.js","sources":["../lib/main.ts"],"sourcesContent":null,"names":["_Stats"],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- import * as THREE from 'three';
2
-
3
1
  declare class Panel {
4
2
  canvas: HTMLCanvasElement;
5
3
  context: CanvasRenderingContext2D | null;
@@ -26,8 +24,10 @@ interface AverageArray {
26
24
  declare class Stats {
27
25
  totalCpuDuration: number;
28
26
  totalGpuDuration: number;
27
+ totalGpuDurationCompute: number;
29
28
  totalFps: number;
30
29
  mode: number;
30
+ info: any;
31
31
  dom: HTMLDivElement;
32
32
  minimal: boolean;
33
33
  horizontal: boolean;
@@ -37,12 +37,14 @@ declare class Stats {
37
37
  frames: number;
38
38
  averageCpu: AverageArray;
39
39
  averageGpu: AverageArray;
40
+ averageGpuCompute: AverageArray;
40
41
  queryCreated: boolean;
41
42
  isRunningCPUProfiling: boolean;
42
43
  fpsPanel: Panel;
43
44
  static Panel: typeof Panel;
44
45
  msPanel: Panel;
45
46
  gpuPanel: Panel | null;
47
+ gpuPanelCompute: Panel | null;
46
48
  samplesLog: number;
47
49
  samplesGraph: number;
48
50
  logsPerSecond: number;
@@ -67,11 +69,11 @@ declare class Stats {
67
69
  horizontal?: boolean | undefined;
68
70
  mode?: number | undefined;
69
71
  });
70
- patchThreeRenderer(renderer: THREE.WebGLRenderer): void;
72
+ patchThreeRenderer(renderer: any): void;
71
73
  resizePanel(panel: Panel, offset: number): void;
72
74
  addPanel(panel: Panel, offset: number): Panel;
73
75
  showPanel(id: number): void;
74
- init(canvasOrGL: HTMLCanvasElement | OffscreenCanvas | THREE.WebGLRenderer | WebGL2RenderingContext): void;
76
+ init(canvasOrGL: any): Promise<void>;
75
77
  begin(): void;
76
78
  end(): void;
77
79
  processGpuQueries(): void;
package/lib/main.ts CHANGED
@@ -9,8 +9,10 @@ export interface AverageArray {
9
9
  class Stats {
10
10
  totalCpuDuration: number = 0;
11
11
  totalGpuDuration: number = 0;
12
+ totalGpuDurationCompute: number = 0;
12
13
  totalFps: number = 0;
13
14
  mode: number;
15
+ info: any;
14
16
  dom: HTMLDivElement;
15
17
  minimal: boolean;
16
18
  horizontal: boolean;
@@ -20,12 +22,14 @@ class Stats {
20
22
  frames: number;
21
23
  averageCpu: AverageArray;
22
24
  averageGpu: AverageArray;
25
+ averageGpuCompute: AverageArray;
23
26
  queryCreated: boolean;
24
27
  isRunningCPUProfiling: boolean;
25
28
  fpsPanel: Panel;
26
29
  static Panel: typeof Panel = Panel;
27
30
  msPanel: Panel;
28
31
  gpuPanel: Panel | null;
32
+ gpuPanelCompute: Panel | null;
29
33
  samplesLog: number;
30
34
  samplesGraph: number;
31
35
  logsPerSecond: number;
@@ -59,7 +63,7 @@ class Stats {
59
63
 
60
64
  this.isRunningCPUProfiling = false;
61
65
  this.minimal = minimal;
62
-
66
+
63
67
  this.beginTime = (performance || Date).now();
64
68
  this.prevTime = this.beginTime;
65
69
  this.prevCpuTime = this.beginTime;
@@ -74,12 +78,17 @@ class Stats {
74
78
  logs: [],
75
79
  graph: []
76
80
  };
81
+ this.averageGpuCompute = {
82
+ logs: [],
83
+ graph: []
84
+ };
77
85
 
78
86
  this.queryCreated = false;
79
87
 
80
88
  this.fpsPanel = this.addPanel(new Stats.Panel('FPS', '#0ff', '#002'), 0);
81
89
  this.msPanel = this.addPanel(new Stats.Panel('CPU', '#0f0', '#020'), 1);
82
90
  this.gpuPanel = null;
91
+ this.gpuPanelCompute = null;
83
92
 
84
93
  this.samplesLog = samplesLog;
85
94
  this.samplesGraph = samplesGraph;
@@ -108,13 +117,16 @@ class Stats {
108
117
  if (this.gpuPanel) {
109
118
  this.resizePanel(this.gpuPanel, 2);
110
119
  }
120
+ if (this.gpuPanelCompute) {
121
+ this.resizePanel(this.gpuPanelCompute, 3);
122
+ }
111
123
  })
112
124
  }
113
125
 
114
126
 
115
127
  }
116
128
 
117
- patchThreeRenderer(renderer: THREE.WebGLRenderer) {
129
+ patchThreeRenderer(renderer: any) {
118
130
 
119
131
  // Store the original render method
120
132
  const originalRenderMethod = renderer.render;
@@ -123,7 +135,13 @@ class Stats {
123
135
  const statsInstance = this;
124
136
 
125
137
  // Override the render method on the prototype
126
- renderer.render = function(scene, camera) {
138
+ renderer.render = function (scene: THREE.Scene, camera: THREE.Camera) {
139
+
140
+
141
+ if (statsInstance.info !== undefined) {
142
+ statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render
143
+ }
144
+
127
145
  statsInstance.begin(); // Start tracking for this render call
128
146
 
129
147
  // Call the original render method
@@ -132,6 +150,28 @@ class Stats {
132
150
  statsInstance.end(); // End tracking for this render call
133
151
  };
134
152
 
153
+ if (renderer.renderAsync) {
154
+ const originalRenderAsyncMethod = renderer.renderAsync;
155
+
156
+ renderer.renderAsync = function (scene: THREE.Scene, camera: THREE.Camera) {
157
+
158
+ if (statsInstance.info !== undefined) {
159
+ statsInstance.totalGpuDuration = this.info.timestamp.compute + this.info.timestamp.render
160
+ }
161
+
162
+ statsInstance.begin(); // Start tracking for this render call
163
+
164
+ // Call the original render method
165
+ originalRenderAsyncMethod.call(this, scene, camera);
166
+
167
+ statsInstance.end(); // End tracking for this render call
168
+
169
+
170
+
171
+
172
+ };
173
+ }
174
+
135
175
  this.threeRendererPatched = true;
136
176
 
137
177
  }
@@ -185,7 +225,7 @@ class Stats {
185
225
 
186
226
  }
187
227
 
188
- init(canvasOrGL: HTMLCanvasElement | OffscreenCanvas | THREE.WebGLRenderer | WebGL2RenderingContext) {
228
+ async init(canvasOrGL: any) {
189
229
  if (!canvasOrGL) {
190
230
  console.error('Stats: The "canvas" parameter is undefined.');
191
231
  return;
@@ -198,16 +238,27 @@ class Stats {
198
238
  // this.patchThreeRenderer(canvas as any);
199
239
  // this.gl = canvas.getContext();
200
240
  // } else
201
- if ((canvasOrGL as any).isWebGLRenderer && !this.threeRendererPatched) {
241
+ if (((canvasOrGL as any).isWebGLRenderer || (canvasOrGL as any).isWebGPURenderer) && !this.threeRendererPatched) {
202
242
  const canvas: any = canvasOrGL
203
243
  this.patchThreeRenderer(canvas as any);
204
244
  this.gl = canvas.getContext();
245
+ } else if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
246
+ this.gl = canvasOrGL;
205
247
  }
206
248
 
207
- // Check if canvasOrGL is already a WebGL2RenderingContext
208
- if (!this.gl && canvasOrGL instanceof WebGL2RenderingContext) {
209
- this.gl = canvasOrGL;
249
+ if (canvasOrGL.isWebGPURenderer) {
250
+
251
+ canvasOrGL.backend.trackTimestamp = true
252
+
253
+ if (await canvasOrGL.hasFeatureAsync('timestamp-query')) {
254
+ this.gpuPanel = this.addPanel(new Stats.Panel('GPU', '#ff0', '#220'), 2);
255
+ this.gpuPanelCompute = this.addPanel(new Stats.Panel('COM', '#e1e1e1', '#212121'), 3);
256
+ this.info = canvasOrGL.info
257
+ }
258
+ return;
210
259
  }
260
+ // Check if canvasOrGL is already a WebGL2RenderingContext
261
+
211
262
 
212
263
  // Handle HTMLCanvasElement and OffscreenCanvas
213
264
  else if (!this.gl && canvasOrGL instanceof HTMLCanvasElement || canvasOrGL instanceof OffscreenCanvas) {
@@ -236,7 +287,7 @@ class Stats {
236
287
  }
237
288
 
238
289
  if (!this.gl || !this.ext) return;
239
-
290
+
240
291
  if (this.gl && this.ext) {
241
292
  if (this.activeQuery) {
242
293
  // End the previous query if it's still active
@@ -267,8 +318,10 @@ class Stats {
267
318
  }
268
319
 
269
320
  processGpuQueries() {
321
+
322
+
270
323
  if (!this.gl || !this.ext) return;
271
-
324
+
272
325
  this.totalGpuDuration = 0;
273
326
 
274
327
  this.gpuQueries.forEach((queryInfo, index) => {
@@ -289,17 +342,24 @@ class Stats {
289
342
  }
290
343
 
291
344
  update() {
292
-
345
+
293
346
  this.processGpuQueries();
294
347
  this.endProfiling('cpu-started', 'cpu-finished', 'cpu-duration');
295
348
 
296
349
  // Calculate the total duration of CPU and GPU work for this frame
297
- this.addToAverage(this.totalCpuDuration , this.averageCpu);
350
+ this.addToAverage(this.totalCpuDuration, this.averageCpu);
298
351
  this.addToAverage(this.totalGpuDuration, this.averageGpu);
299
352
 
300
353
  this.renderCount = 0;
301
354
  this.totalCpuDuration = 0;
302
- this.totalGpuDuration = 0;
355
+
356
+ if (this.info === undefined) {
357
+ this.addToAverage(this.totalGpuDurationCompute, this.averageGpuCompute);
358
+
359
+ this.totalGpuDuration = 0;
360
+ this.totalGpuDurationCompute = 0;
361
+
362
+ }
303
363
  this.totalFps = 0;
304
364
 
305
365
  this.beginTime = this.endInternal()
@@ -317,6 +377,10 @@ class Stats {
317
377
  this.updatePanel(this.msPanel, this.averageCpu);
318
378
  this.updatePanel(this.gpuPanel, this.averageGpu);
319
379
 
380
+ if (this.gpuPanelCompute) {
381
+ this.updatePanel(this.gpuPanelCompute, this.averageGpuCompute);
382
+ }
383
+
320
384
  this.prevCpuTime = time;
321
385
  }
322
386
 
@@ -415,16 +479,16 @@ class Stats {
415
479
 
416
480
  get domElement() {
417
481
  // patch for some use case in threejs
418
- return this.dom;
482
+ return this.dom;
419
483
 
420
- }
484
+ }
421
485
 
422
486
  get container() { // @deprecated
423
487
 
424
- console.warn('Stats: Deprecated! this.container as been replaced to this.dom ')
425
- return this.dom;
488
+ console.warn('Stats: Deprecated! this.container as been replaced to this.dom ')
489
+ return this.dom;
426
490
 
427
- }
491
+ }
428
492
 
429
493
  }
430
494
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stats-gl",
3
- "version": "2.0.1",
3
+ "version": "2.2.0",
4
4
  "type": "module",
5
5
  "author": "Renaud ROHLINGER (https://github.com/RenaudRohlinger)",
6
6
  "homepage": "https://github.com/RenaudRohlinger/stats-gl",
@@ -22,19 +22,19 @@
22
22
  },
23
23
  "sideEffects": false,
24
24
  "scripts": {
25
- "dev": "vite demo",
26
- "serve": "vite serve demo",
25
+ "dev": "vite dev --debug",
26
+ "serve": "vite serve",
27
27
  "build": "tsc && vite build && rollup -c && node ./scripts/copyBuild.js",
28
28
  "preview": "vite preview"
29
29
  },
30
30
  "devDependencies": {
31
- "@types/three": "^0.159.0",
31
+ "@types/three": "^0.162.0",
32
32
  "fs-extra": "^11.1.1",
33
33
  "path": "^0.12.7",
34
- "rollup": "^3.26.3",
34
+ "rollup": "^4.12.1",
35
35
  "rollup-plugin-dts": "^5.3.0",
36
- "three": "^0.154.0",
36
+ "three": "^0.162.0",
37
37
  "typescript": "^5.0.2",
38
- "vite": "^4.4.0"
38
+ "vite": "^4.5.2"
39
39
  }
40
40
  }