123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- export default class XStats {
- constructor(e) {
- E(this, "scene");
- E(this, "sceneInstrumentation");
- E(this, "engineInstrumentation");
- E(this, "caps");
- E(this, "engine");
- E(this, "_canvas");
- E(this, "_osversion");
- E(this, "_scenemanager");
- this._scenemanager = e,
- this.scene = e.Scene,
- this._canvas = e.canvas,
- this.initSceneInstrument()
- }
- initSceneInstrument() {
- this.sceneInstrumentation = new BABYLON.SceneInstrumentation(this.scene);
- this.sceneInstrumentation.captureCameraRenderTime = !0;
- this.sceneInstrumentation.captureActiveMeshesEvaluationTime = !0;
- this.sceneInstrumentation.captureRenderTargetsRenderTime = !0;
- this.sceneInstrumentation.captureFrameTime = !0;
- this.sceneInstrumentation.captureRenderTime = !0;
- this.sceneInstrumentation.captureInterFrameTime = !0;
- this.sceneInstrumentation.captureParticlesRenderTime = !0;
- this.sceneInstrumentation.captureSpritesRenderTime = !0;
- this.sceneInstrumentation.capturePhysicsTime = !0;
- this.sceneInstrumentation.captureAnimationsTime = !0;
- this.engineInstrumentation = new BABYLON.EngineInstrumentation(this.scene.getEngine());
- this.caps = this.scene.getEngine().getCaps();
- this.engine = this.scene.getEngine();
- this._osversion = this.osVersion();
- }
- getFrameTimeCounter() {
- return this.sceneInstrumentation.frameTimeCounter.current
- }
- getInterFrameTimeCounter() {
- return this.sceneInstrumentation.interFrameTimeCounter.current
- }
- getActiveMeshEvaluationTime() {
- return this.sceneInstrumentation.activeMeshesEvaluationTimeCounter.current
- }
- getDrawCall() {
- return this.sceneInstrumentation.drawCallsCounter.current
- }
- getDrawCallTime() {
- return this.sceneInstrumentation.renderTimeCounter.current
- }
- getAnimationTime() {
- return this.sceneInstrumentation.animationsTimeCounter.current
- }
- getActiveMesh() {
- return this.scene.getActiveMeshes().length
- }
- getActiveFaces() {
- return Math.round(this.scene.getActiveIndices() / 3)
- }
- getActiveBones() {
- return this.scene.getActiveBones()
- }
- getActiveAnimation() {
- return this.scene._activeAnimatables.length
- }
- getActiveParticles() {
- return this.scene.getActiveParticles()
- }
- getTotalMaterials() {
- return this.scene.materials.length
- }
- getTotalTextures() {
- return this.scene.textures.length
- }
- getTotalGeometries() {
- return this.scene.geometries.length
- }
- getTotalMeshes() {
- return this.scene.meshes.length
- }
- getCameraRenderTime() {
- return this.sceneInstrumentation.cameraRenderTimeCounter.current
- }
- getTotalRootNodes() {
- return this.scene.rootNodes.length
- }
- getRenderTargetRenderTime() {
- const e = this.getDrawCallTime()
- , t = this.getActiveMeshEvaluationTime()
- , r = this.getCameraRenderTime() - (t + e);
- return this.getRTT1Time() + r
- }
- getRegisterBeforeRenderTime() {
- return this.sceneInstrumentation.registerBeforeTimeCounter.current
- }
- getRegisterAfterRenderTime() {
- return this.sceneInstrumentation.registerAfterTimeCounter.current
- }
- getRTT1Time() {
- return this.sceneInstrumentation.getRTT1TimeCounter.current
- }
- getRegisterBeforeRenderObserverLength() {
- return this.scene.onBeforeRenderObservable.observers.length
- }
- getRegisterAfterRenderObserverLength() {
- return this.scene.onAfterRenderObservable.observers.length
- }
- getTotalMeshByType() {
- const e = new Map;
- return this.scene.meshes.forEach(t=>{
- e.has(t.xtype) ? e.set(t.xtype, e.get(t.xtype) + 1) : e.set(t.xtype, 1)
- }
- ),
- e
- }
- getHardwareRenderInfo() {
- return {
- maxTexturesUnits: this.caps.maxTexturesImageUnits,
- maxVertexTextureImageUnits: this.caps.maxVertexTextureImageUnits,
- maxCombinedTexturesImageUnits: this.caps.maxCombinedTexturesImageUnits,
- maxTextureSize: this.caps.maxTextureSize,
- maxSamples: this.caps.maxSamples,
- maxCubemapTextureSize: this.caps.maxCubemapTextureSize,
- maxRenderTextureSize: this.caps.maxRenderTextureSize,
- maxVertexAttribs: this.caps.maxVertexAttribs,
- maxVaryingVectors: this.caps.maxVaryingVectors,
- maxVertexUniformVectors: this.caps.maxVertexUniformVectors,
- maxFragmentUniformVectors: this.caps.maxFragmentUniformVectors,
- standardDerivatives: this.caps.standardDerivatives,
- supportTextureCompress: {
- s3tc: this.caps.s3tc !== void 0,
- s3tc_srgb: this.caps.s3tc_srgb !== void 0,
- pvrtc: this.caps.pvrtc !== void 0,
- etc1: this.caps.etc1 !== void 0,
- etc2: this.caps.etc2 !== void 0,
- astc: this.caps.astc !== void 0,
- bptc: this.caps.bptc !== void 0
- },
- textureFloat: this.caps.textureFloat,
- vertexArrayObject: this.caps.vertexArrayObject,
- textureAnisotropicFilterExtension: this.caps.textureAnisotropicFilterExtension !== void 0,
- maxAnisotropy: this.caps.maxAnisotropy,
- instancedArrays: this.caps.instancedArrays,
- uintIndices: this.caps.uintIndices,
- highPrecisionShaders: this.caps.highPrecisionShaderSupported,
- fragmentDepth: this.caps.fragmentDepthSupported,
- textureFloatLinearFiltering: this.caps.textureFloatLinearFiltering,
- renderToTextureFloat: this.caps.textureFloatRender,
- textureHalfFloat: this.caps.textureHalfFloat,
- textureHalfFloatLinearFiltering: this.caps.textureHalfFloatLinearFiltering,
- textureHalfFloatRender: this.caps.textureHalfFloatRender,
- textureLOD: this.caps.textureLOD,
- drawBuffersExtension: this.caps.drawBuffersExtension,
- depthTextureExtension: this.caps.depthTextureExtension,
- colorBufferFloat: this.caps.colorBufferFloat,
- supportTimerQuery: this.caps.timerQuery !== void 0,
- canUseTimestampForTimerQuery: this.caps.canUseTimestampForTimerQuery,
- supportOcclusionQuery: this.caps.supportOcclusionQuery,
- multiview: this.caps.multiview,
- oculusMultiview: this.caps.oculusMultiview,
- maxMSAASamples: this.caps.maxMSAASamples,
- blendMinMax: this.caps.blendMinMax,
- canUseGLInstanceID: this.caps.canUseGLInstanceID,
- canUseGLVertexID: this.caps.canUseGLVertexID,
- supportComputeShaders: this.caps.supportComputeShaders,
- supportSRGBBuffers: this.caps.supportSRGBBuffers,
- supportStencil: this.engine.isStencilEnable
- }
- }
- getSystemInfo() {
- return {
- resolution: "real: " + this.engine.getRenderWidth() + "x" + this.engine.getRenderHeight() + " cavs: " + this._canvas.clientWidth + "x" + this._canvas.clientHeight,
- hardwareScalingLevel: this.engine.getHardwareScalingLevel().toFixed(2).toString() + "_" + this._scenemanager.initEngineScaleNumber.toFixed(2).toString(),
- driver: this.engine.getGlInfo().renderer,
- vender: this.engine.getGlInfo().vendor,
- version: this.engine.getGlInfo().version,
- os: this._osversion
- }
- }
- getFps() {
- const e = this.sceneInstrumentation.frameTimeCounter.lastSecAverage
- , t = this.sceneInstrumentation.interFrameTimeCounter.lastSecAverage;
- return 1e3 / (e + t)
- }
- osVersion() {
- const e = window.navigator.userAgent;
- let t;
- return /iphone|ipad|ipod/gi.test(e) ? t = e.match(/OS (\d+)_(\d+)_?(\d+)?/) : /android/gi.test(e) && (t = e.match(/Android (\d+)/)),
- t != null && t.length > 0 ? t[0] : null
- }
- }
|