From c49ac0847bb1ade3b0efd931c6f97aca064ab889 Mon Sep 17 00:00:00 2001 From: Anton Date: Mon, 18 Jan 2016 17:21:26 +0300 Subject: [PATCH] fix statistics calculation for instanced geometry --- src/renderers/webgl/WebGLBufferRenderer.js | 16 ++++++++++++++-- .../webgl/WebGLIndexedBufferRenderer.js | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/renderers/webgl/WebGLBufferRenderer.js b/src/renderers/webgl/WebGLBufferRenderer.js index cba9d98637..311123482a 100644 --- a/src/renderers/webgl/WebGLBufferRenderer.js +++ b/src/renderers/webgl/WebGLBufferRenderer.js @@ -37,11 +37,23 @@ THREE.WebGLBufferRenderer = function ( _gl, extensions, _infoRender ) { if ( position instanceof THREE.InterleavedBufferAttribute ) { - extension.drawArraysInstancedANGLE( mode, 0, position.data.count, geometry.maxInstancedCount ); + var count = position.data.count; + + extension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount ); + + _infoRender.calls ++; + _infoRender.vertices += count * geometry.maxInstancedCount; + if ( mode === _gl.TRIANGLES ) _infoRender.faces += geometry.maxInstancedCount * count / 3; } else { - extension.drawArraysInstancedANGLE( mode, 0, position.count, geometry.maxInstancedCount ); + var count = position.count; + + extension.drawArraysInstancedANGLE( mode, 0, count, geometry.maxInstancedCount ); + + _infoRender.calls ++; + _infoRender.vertices += count * geometry.maxInstancedCount; + if ( mode === _gl.TRIANGLES ) _infoRender.faces += geometry.maxInstancedCount * count / 3; } diff --git a/src/renderers/webgl/WebGLIndexedBufferRenderer.js b/src/renderers/webgl/WebGLIndexedBufferRenderer.js index e209b7c59e..f528f4cb23 100644 --- a/src/renderers/webgl/WebGLIndexedBufferRenderer.js +++ b/src/renderers/webgl/WebGLIndexedBufferRenderer.js @@ -53,6 +53,9 @@ THREE.WebGLIndexedBufferRenderer = function ( _gl, extensions, _infoRender ) { extension.drawElementsInstancedANGLE( mode, count, type, start * size, geometry.maxInstancedCount ); + _infoRender.calls ++; + _infoRender.vertices += count * geometry.maxInstancedCount; + if ( mode === _gl.TRIANGLES ) _infoRender.faces += geometry.maxInstancedCount * count / 3; } this.setMode = setMode; -- GitLab