From c3eff75eea12acbc1384b207bdc260592ae6db53 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Mon, 24 Feb 2014 14:49:07 -0500 Subject: [PATCH] WebGLRenderer: Sort by material.id first. --- examples/webgl_sandbox.html | 4 ---- src/renderers/WebGLRenderer.js | 8 +++++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/examples/webgl_sandbox.html b/examples/webgl_sandbox.html index 81b605aa1d..d14a2468dd 100644 --- a/examples/webgl_sandbox.html +++ b/examples/webgl_sandbox.html @@ -132,16 +132,12 @@ mesh.scale.x = mesh.scale.y = mesh.scale.z = Math.random() * 4 + 1; - mesh.matrixAutoUpdate = false; - mesh.updateMatrix(); scene.add( mesh ); } renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); - renderer.sortObjects = false; - container.appendChild( renderer.domElement ); if ( statsEnabled ) { diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 3643b137f5..6aa577b496 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -3180,7 +3180,11 @@ THREE.WebGLRenderer = function ( parameters ) { function painterSortStable ( a, b ) { - if ( a.z !== b.z ) { + if ( a.materialId !== b.materialId ) { + + return b.materialId - a.materialId; + + } else if ( a.z !== b.z ) { return b.z - a.z; @@ -3269,6 +3273,7 @@ THREE.WebGLRenderer = function ( parameters ) { object = webglObject.object; webglObject.id = i; + webglObject.materialId = object.material.id; webglObject.render = false; if ( object.visible ) { @@ -3811,6 +3816,7 @@ THREE.WebGLRenderer = function ( parameters ) { id: null, buffer: buffer, object: object, + materialId: null, opaque: null, transparent: null, z: 0 -- GitLab