Browse Source

Object3D/WebGLRenderer: Added .renderOrder. See #5496.

Mr.doob 10 years ago
parent
commit
052f81ab6e
2 changed files with 11 additions and 2 deletions
  1. 1 0
      src/core/Object3D.js
  2. 10 2
      src/renderers/WebGLRenderer.js

+ 1 - 0
src/core/Object3D.js

@@ -70,6 +70,7 @@ THREE.Object3D = function () {
 	this.receiveShadow = false;
 
 	this.frustumCulled = true;
+	this.renderOrder = 0;
 
 	this.userData = {};
 

+ 10 - 2
src/renderers/WebGLRenderer.js

@@ -3263,7 +3263,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	function painterSortStable ( a, b ) {
 
-		if ( a.material.id !== b.material.id ) {
+		if ( a.renderOrder !== b.renderOrder ) {
+
+			return a.renderOrder - b.renderOrder;
+
+		} else if ( a.material.id !== b.material.id ) {
 
 			return a.material.id - b.material.id;
 
@@ -3281,7 +3285,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	function reversePainterSortStable ( a, b ) {
 
-		if ( a.z !== b.z ) {
+		if ( a.renderOrder !== b.renderOrder ) {
+
+			return a.renderOrder - b.renderOrder;
+
+		} if ( a.z !== b.z ) {
 
 			return b.z - a.z;