diff --git a/src/mol-gl/renderer.ts b/src/mol-gl/renderer.ts
index 45e6d11f24ba1fcb719467e72ab6cf20b6706bb7..f1eb405564cc76d2575370c24d5650efeecdad40 100644
--- a/src/mol-gl/renderer.ts
+++ b/src/mol-gl/renderer.ts
@@ -26,6 +26,10 @@ export interface RendererStats {
     renderbufferCount: number
     textureCount: number
     vaoCount: number
+
+    drawCount: number
+    instanceCount: number
+    instancedDrawCount: number
 }
 
 interface Renderer {
@@ -166,7 +170,6 @@ namespace Renderer {
             },
 
             get stats(): RendererStats {
-                console.log(ctx)
                 return {
                     programCount: ctx.programCache.count,
                     shaderCount: ctx.shaderCache.count,
@@ -176,6 +179,10 @@ namespace Renderer {
                     renderbufferCount: ctx.renderbufferCount,
                     textureCount: ctx.textureCount,
                     vaoCount: ctx.vaoCount,
+
+                    drawCount: ctx.drawCount,
+                    instanceCount: ctx.instanceCount,
+                    instancedDrawCount: ctx.instancedDrawCount,
                 }
             },
             dispose: () => {
diff --git a/src/mol-gl/webgl/context.ts b/src/mol-gl/webgl/context.ts
index 5c5e9635ab87a99dfece1cc726e4302ba24ba7a5..c33ac3e8c949766670b58972c6dcfb078b6d129a 100644
--- a/src/mol-gl/webgl/context.ts
+++ b/src/mol-gl/webgl/context.ts
@@ -76,6 +76,10 @@ export interface Context {
     textureCount: number
     vaoCount: number
 
+    drawCount: number
+    instanceCount: number
+    instancedDrawCount: number
+
     unbindFramebuffer: () => void
     readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => void
     destroy: () => void
@@ -116,6 +120,10 @@ export function createContext(gl: WebGLRenderingContext): Context {
         textureCount: 0,
         vaoCount: 0,
 
+        drawCount: 0,
+        instanceCount: 0,
+        instancedDrawCount: 0,
+
         unbindFramebuffer: () => unbindFramebuffer(gl),
         readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => {
             gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buffer)
diff --git a/src/mol-gl/webgl/render-item.ts b/src/mol-gl/webgl/render-item.ts
index ce6f79961552ef7e1e9037be7754d04aca5dd684..7cc81d732662edd81fc78ceab3040ae919924539 100644
--- a/src/mol-gl/webgl/render-item.ts
+++ b/src/mol-gl/webgl/render-item.ts
@@ -97,6 +97,10 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S
     let drawCount = values.drawCount.ref.value
     let instanceCount = values.instanceCount.ref.value
 
+    ctx.drawCount += drawCount
+    ctx.instanceCount += instanceCount
+    ctx.instancedDrawCount += instanceCount * drawCount
+
     const valueChanges: ValueChanges = {
         attributes: false,
         defines: false,
@@ -157,11 +161,15 @@ export function createRenderItem(ctx: Context, drawMode: DrawMode, shaderCode: S
 
             if (values.drawCount.ref.version !== versions.drawCount) {
                 // console.log('drawCount version changed')
+                ctx.drawCount += values.drawCount.ref.value - drawCount
+                ctx.instancedDrawCount += instanceCount * values.drawCount.ref.value - instanceCount * drawCount
                 drawCount = values.drawCount.ref.value
                 versions.drawCount = values.drawCount.ref.version
             }
             if (values.instanceCount.ref.version !== versions.instanceCount) {
                 // console.log('instanceCount version changed')
+                ctx.instanceCount += values.instanceCount.ref.value - instanceCount
+                ctx.instancedDrawCount += values.instanceCount.ref.value * drawCount - instanceCount * drawCount
                 instanceCount = values.instanceCount.ref.value
                 versions.instanceCount = values.instanceCount.ref.version
             }