From 59280c0cbb4e6ab42f191df42bee8993968d23d6 Mon Sep 17 00:00:00 2001 From: alteredq Date: Wed, 17 Nov 2010 23:42:24 +0100 Subject: [PATCH] Fixed performance issue in WebGL version of materials test. We are back at 60 fps ;) --- examples/materials_gl.html | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/examples/materials_gl.html b/examples/materials_gl.html index 1bafd995..22bf0a2a 100644 --- a/examples/materials_gl.html +++ b/examples/materials_gl.html @@ -65,7 +65,7 @@ // Spheres - var geometry = new Sphere( 70, 32, 16, true ); + var geometry1 = new Sphere( 70, 32, 16, true ); var generatedTexture = new THREE.Texture( generateTexture() ); generatedTexture.loaded = 1; @@ -86,9 +86,13 @@ materials.push( { material: new THREE.MeshBasicMaterial( { map: generatedTexture } ), overdraw: true, doubleSided: false } ); materials.push( { material: new THREE.MeshLambertMaterial( { map: generatedTexture } ), overdraw: true, doubleSided: false } ); - for ( var i = 0, l = geometry.faces.length; i < l; i ++ ) { + // Extra mesh to be broken down for MeshFaceMaterial + + var geometry2 = new Sphere( 70, 32, 16, true ); + + for ( var i = 0, l = geometry2.faces.length; i < l; i ++ ) { - var face = geometry.faces[ i ]; + var face = geometry2.faces[ i ]; if ( Math.random() > 0.7 ) face.material = [ materials[ Math.floor( Math.random() * materials.length ) ].material ]; } @@ -97,9 +101,14 @@ objects = []; + var sphere, geometry; + for ( var i = 0, l = materials.length; i < l; i ++ ) { - - var sphere = new THREE.Mesh( geometry, materials[ i ].material ); + + geometry = materials[ i ].material instanceof THREE.MeshFaceMaterial ? geometry2 : geometry1; + + sphere = new THREE.Mesh( geometry, materials[ i ].material ); + sphere.overdraw = materials[ i ].overdraw; sphere.doubleSided = materials[ i ].doubleSided;