diff --git a/src/apps/viewer/index.html b/src/apps/viewer/index.html index 7c28bd24ac813386b80c6543f53f8beb7bae4a66..b11ebd079b9f173c5993ba2ba93b4135e3e98557 100644 --- a/src/apps/viewer/index.html +++ b/src/apps/viewer/index.html @@ -45,6 +45,9 @@ return decodeURIComponent(((window.location.search || '').match(r) || [])[1] || ''); } + var debugMode = getParam('debug-mode', '[^&]+').trim() === '1'; + if (debugMode) molstar.setDebugMode(debugMode); + var hideControls = getParam('hide-controls', '[^&]+').trim() === '1'; var pdbProvider = getParam('pdb-provider', '[^&]+').trim().toLowerCase(); var emdbProvider = getParam('emdb-provider', '[^&]+').trim().toLowerCase(); diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index f888da0b33ec326cc43a6b89468412a17bc44de4..6bb14f0fce34b364dd7842af9578c91f44af5e04 100644 --- a/src/mol-canvas3d/canvas3d.ts +++ b/src/mol-canvas3d/canvas3d.ts @@ -362,10 +362,19 @@ namespace Canvas3D { camera.setState({ radiusMax: scene.boundingSphere.radius }, 0); reprCount.next(reprRenderObjects.size); + if (isDebugMode) consoleStats(); return true; } + function consoleStats() { + console.table(scene.renderables.map(r => ({ + drawCount: r.values.drawCount.ref.value, + instanceCount: r.values.instanceCount.ref.value, + materialId: r.materialId, + }))); + } + function add(repr: Representation.Any) { registerAutoUpdate(repr); @@ -384,6 +393,7 @@ namespace Canvas3D { reprRenderObjects.set(repr, newRO); scene.update(repr.renderObjects, false); + if (isDebugMode) consoleStats(); } function remove(repr: Representation.Any) { @@ -394,6 +404,7 @@ namespace Canvas3D { renderObjects.forEach(o => scene.remove(o)); reprRenderObjects.delete(repr); scene.update(repr.renderObjects, false, true); + if (isDebugMode) consoleStats(); } }