diff --git a/package.json b/package.json index 3a9e2bc2..38afa8bf 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ }, "pnpm": { "overrides": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } } diff --git a/packages/auxiliary-lines/package.json b/packages/auxiliary-lines/package.json index 2f91cbe3..f9268ec0 100644 --- a/packages/auxiliary-lines/package.json +++ b/packages/auxiliary-lines/package.json @@ -24,7 +24,7 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" }, "dependencies": { "@galacean/engine-toolkit-custom-material": "workspace:*" diff --git a/packages/controls/package.json b/packages/controls/package.json index 880a6310..7c1f11c1 100644 --- a/packages/controls/package.json +++ b/packages/controls/package.json @@ -24,6 +24,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/custom-gltf-parser/package.json b/packages/custom-gltf-parser/package.json index f78ba575..9709d184 100755 --- a/packages/custom-gltf-parser/package.json +++ b/packages/custom-gltf-parser/package.json @@ -23,6 +23,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/custom-material/package.json b/packages/custom-material/package.json index 6e0747d1..e89609b2 100644 --- a/packages/custom-material/package.json +++ b/packages/custom-material/package.json @@ -24,6 +24,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/draco/package.json b/packages/draco/package.json index de733502..606ea65d 100644 --- a/packages/draco/package.json +++ b/packages/draco/package.json @@ -20,6 +20,6 @@ "types/**/*" ], "dependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/dynamic-bone/package.json b/packages/dynamic-bone/package.json index e004a40e..8b29eb71 100644 --- a/packages/dynamic-bone/package.json +++ b/packages/dynamic-bone/package.json @@ -24,6 +24,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/framebuffer-picker/package.json b/packages/framebuffer-picker/package.json index 0b27e2d1..29ed9110 100755 --- a/packages/framebuffer-picker/package.json +++ b/packages/framebuffer-picker/package.json @@ -23,6 +23,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/geometry-sketch/package.json b/packages/geometry-sketch/package.json index 96d67fc5..7dc338d4 100644 --- a/packages/geometry-sketch/package.json +++ b/packages/geometry-sketch/package.json @@ -24,6 +24,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/gizmo/package.json b/packages/gizmo/package.json index a13e5d03..beb369f4 100644 --- a/packages/gizmo/package.json +++ b/packages/gizmo/package.json @@ -24,8 +24,8 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0", - "@galacean/engine-ui": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0", + "@galacean/engine-ui": ">=2.0.0-0" }, "dependencies": { "@galacean/engine-toolkit-framebuffer-picker": "workspace:*", diff --git a/packages/input-logger/package.json b/packages/input-logger/package.json index ff827e39..e9ee20bb 100644 --- a/packages/input-logger/package.json +++ b/packages/input-logger/package.json @@ -24,6 +24,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/lines/package.json b/packages/lines/package.json index 7e3dc31e..979991e2 100644 --- a/packages/lines/package.json +++ b/packages/lines/package.json @@ -24,6 +24,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/navigation-gizmo/package.json b/packages/navigation-gizmo/package.json index 92fe91a9..2ec70043 100644 --- a/packages/navigation-gizmo/package.json +++ b/packages/navigation-gizmo/package.json @@ -24,7 +24,7 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" }, "dependencies": { "@galacean/engine-toolkit-controls": "workspace:*", diff --git a/packages/outline/package.json b/packages/outline/package.json index fcaa55fe..9897b457 100755 --- a/packages/outline/package.json +++ b/packages/outline/package.json @@ -23,6 +23,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/skeleton-viewer/package.json b/packages/skeleton-viewer/package.json index 5129a12f..05878789 100755 --- a/packages/skeleton-viewer/package.json +++ b/packages/skeleton-viewer/package.json @@ -23,6 +23,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/stats/README.md b/packages/stats/README.md index 08d2ad84..e30f0869 100644 --- a/packages/stats/README.md +++ b/packages/stats/README.md @@ -3,14 +3,15 @@ Statistics toolkit to gather performance data ## Features -- fps: frame rate; -- memory: CPU memory; +- fps: frame rate; +- JS Memory: JS heap memory (MB); +- totalGraphicsMemory: total graphics memory (MB); +- textureMemory: texture memory (MB); +- bufferMemory: buffer memory (MB); - drawCall: draw call count; - triangles: triangle count; - lines: line count; - points: point count; -- textures: texture count; -- shaders: shader count; - webglContext: webgl context type; ## npm diff --git a/packages/stats/package.json b/packages/stats/package.json index 01670581..96e3ad49 100755 --- a/packages/stats/package.json +++ b/packages/stats/package.json @@ -23,6 +23,6 @@ "types/**/*" ], "peerDependencies": { - "@galacean/engine": ">=1.6.0-0" + "@galacean/engine": ">=2.0.0-0" } } diff --git a/packages/stats/src/Core.ts b/packages/stats/src/Core.ts index 709b2c6f..35283060 100644 --- a/packages/stats/src/Core.ts +++ b/packages/stats/src/Core.ts @@ -1,7 +1,6 @@ +import { Engine } from "@galacean/engine"; import DrawCallHook from "./hooks/DrawCallHook"; -import { RequestHook } from "./hooks/RequestHook"; -import ShaderHook from "./hooks/ShaderHook"; -import TextureHook from "./hooks/TextureHook"; + declare global { interface Performance { @@ -14,25 +13,24 @@ declare global { */ export class Core { private readonly gl: WebGLRenderingContext | WebGL2RenderingContext; + private readonly engine: Engine; private drawCallHook: DrawCallHook; - private textureHook: TextureHook; - private shaderHook: ShaderHook; - private requestHook: RequestHook; + private samplingFrames: number = 60; private samplingIndex: number = 0; private updateCounter: number = 0; private updateTime: number = 0; - constructor(gl: WebGLRenderingContext | WebGL2RenderingContext) { + constructor(engine: Engine) { + // @ts-ignore + const gl = engine._hardwareRenderer.gl; this.gl = gl; + this.engine = engine; this.hook(gl); } private hook(gl: WebGLRenderingContext | WebGL2RenderingContext): void { this.drawCallHook = new DrawCallHook(gl); - this.textureHook = new TextureHook(gl); - this.shaderHook = new ShaderHook(gl); - this.requestHook = new RequestHook(); } /** @@ -47,8 +45,6 @@ export class Core { */ public release(): void { this.drawCallHook && this.drawCallHook.release(); - this.textureHook && this.textureHook.release(); - this.shaderHook && this.shaderHook.release(); } /** @@ -69,6 +65,7 @@ export class Core { this.samplingIndex = 0; + const renderingStatistics = this.engine.renderingStatistics; let data: PerformanceData = { fps: Math.round((this.updateCounter * 1000) / (now - this.updateTime)), memory: performance.memory && (performance.memory.usedJSHeapSize / 1048576) >> 0, @@ -76,9 +73,9 @@ export class Core { triangles: this.drawCallHook.triangles, lines: this.drawCallHook.lines, points: this.drawCallHook.points, - textures: this.textureHook.textures, - size: this.requestHook.size, - shaders: this.shaderHook.shaders, + textureMemory: formatBytes(renderingStatistics.textureMemory), + bufferMemory: formatBytes(renderingStatistics.bufferMemory), + totalGraphicsMemory: formatBytes(renderingStatistics.totalMemory), webglContext: window.hasOwnProperty("WebGL2RenderingContext") && this.gl instanceof WebGL2RenderingContext ? "2.0" : "1.0" }; @@ -99,8 +96,13 @@ interface PerformanceData { triangles: number; lines: number; points: number; - textures: number; - shaders: number; - size: string; + textureMemory: string; + bufferMemory: string; + totalGraphicsMemory: string; webglContext: string; } + +function formatBytes(bytes: number): string { + const mb = bytes / 1048576; + return mb.toFixed(2); +} diff --git a/packages/stats/src/Monitor.ts b/packages/stats/src/Monitor.ts index d4ccdc9a..13ed1225 100644 --- a/packages/stats/src/Monitor.ts +++ b/packages/stats/src/Monitor.ts @@ -1,22 +1,23 @@ +import { Engine } from "@galacean/engine"; import { Core } from "./Core"; let tpl = `