diff --git a/examples/files.js b/examples/files.js index a132fcda79ae9bc59a70f3d291af621b48415399..8c5c658211b3c2b6496f0bd4d7b8d4ee98cd979c 100644 --- a/examples/files.js +++ b/examples/files.js @@ -131,6 +131,7 @@ var files = { "webgl_materials_bumpmap_skin", "webgl_materials_cars", "webgl_materials_channels", + "webgl_materials_compile", "webgl_materials_cubemap", "webgl_materials_cubemap_balls_reflection", "webgl_materials_cubemap_balls_refraction", diff --git a/examples/webgl_materials_nodes_multiple.html b/examples/webgl_materials_compile.html similarity index 100% rename from examples/webgl_materials_nodes_multiple.html rename to examples/webgl_materials_compile.html diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 962830e9cc9f93f88dbb670a89b91b1f45ef45a5..09dcd75891dabe61178f46c21d6ede9ed35d3153 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -688,6 +688,12 @@ function WebGLRenderer( parameters ) { }; + function absNumericalSort( a, b ) { + + return Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] ); + + } + this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { state.setMaterial( material ); @@ -1026,52 +1032,45 @@ function WebGLRenderer( parameters ) { } - // Sorting + // Compile - function absNumericalSort( a, b ) { + this.compile = function ( scene, camera ) { - return Math.abs( b[ 0 ] ) - Math.abs( a[ 0 ] ); + lights = []; - } - - this.compile = function(scene, camera){ + scene.traverse( function ( object ) { - lights = []; - - scene.traverse(function( object ) { - if ( object.isLight ) { - - lights.push(object); - + + lights.push( object ); + } - - }); - - setupLights(lights,camera); - - scene.traverse(function( object ) { - - - if (object.material) { - + + } ); + + setupLights( lights, camera ); + + scene.traverse( function ( object ) { + + if ( object.material ) { + if ( Array.isArray( object.material ) ) { - + for ( var i = 0; i < object.material.length; i ++ ) { - - initMaterial(object.material[i], scene.fog, object); - + + initMaterial( object.material[ i ], scene.fog, object ); + } - + } else { - - initMaterial(object.material, scene.fog, object); - + + initMaterial( object.material, scene.fog, object ); + } - + } - - }); + + } ); };