Browse Source

WebGLRenderList: Ensure sort does work even with undefined programs.

Mugen87 6 years ago
parent
commit
5f081c07be
1 changed files with 5 additions and 3 deletions
  1. 5 3
      src/renderers/webgl/WebGLRenderLists.js

+ 5 - 3
src/renderers/webgl/WebGLRenderLists.js

@@ -12,7 +12,7 @@ function painterSortStable( a, b ) {
 
 
 		return a.renderOrder - b.renderOrder;
 		return a.renderOrder - b.renderOrder;
 
 
-	} else if ( a.program && b.program && a.program !== b.program ) {
+	} else if ( a.program !== b.program ) {
 
 
 		return a.program.id - b.program.id;
 		return a.program.id - b.program.id;
 
 
@@ -63,6 +63,8 @@ function WebGLRenderList() {
 	var opaque = [];
 	var opaque = [];
 	var transparent = [];
 	var transparent = [];
 
 
+	var defaultProgram = { id: - 1 };
+
 	function init() {
 	function init() {
 
 
 		renderItemsIndex = 0;
 		renderItemsIndex = 0;
@@ -83,7 +85,7 @@ function WebGLRenderList() {
 				object: object,
 				object: object,
 				geometry: geometry,
 				geometry: geometry,
 				material: material,
 				material: material,
-				program: material.program,
+				program: material.program || defaultProgram,
 				groupOrder: groupOrder,
 				groupOrder: groupOrder,
 				renderOrder: object.renderOrder,
 				renderOrder: object.renderOrder,
 				z: z,
 				z: z,
@@ -98,7 +100,7 @@ function WebGLRenderList() {
 			renderItem.object = object;
 			renderItem.object = object;
 			renderItem.geometry = geometry;
 			renderItem.geometry = geometry;
 			renderItem.material = material;
 			renderItem.material = material;
-			renderItem.program = material.program;
+			renderItem.program = material.program || defaultProgram;
 			renderItem.groupOrder = groupOrder;
 			renderItem.groupOrder = groupOrder;
 			renderItem.renderOrder = object.renderOrder;
 			renderItem.renderOrder = object.renderOrder;
 			renderItem.z = z;
 			renderItem.z = z;