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 }