Parcourir la source

Merge pull request #18415 from EliasHasle/patch-9

WebGLRenderer: Avoid duplicate initialization of materials in compile()
Mr.doob il y a 5 ans
Parent
commit
0d444a641b
1 fichiers modifiés avec 10 ajouts et 2 suppressions
  1. 10 2
      src/renderers/WebGLRenderer.js

+ 10 - 2
src/renderers/WebGLRenderer.js

@@ -1055,6 +1055,8 @@ function WebGLRenderer( parameters ) {
 
 		currentRenderState.setupLights( camera );
 
+		var compiled = {};
+
 		scene.traverse( function ( object ) {
 
 			if ( object.material ) {
@@ -1063,13 +1065,19 @@ function WebGLRenderer( parameters ) {
 
 					for ( var i = 0; i < object.material.length; i ++ ) {
 
-						initMaterial( object.material[ i ], scene, object );
+						if ( ! object.material[ i ].uuid in compiled ) {
+
+							initMaterial( object.material[ i ], scene, object );
+							compiled[ object.material[ i ].uuid ] = true;
+
+						}
 
 					}
 
-				} else {
+				} else if ( ! object.material.uuid in compiled ) {
 
 					initMaterial( object.material, scene, object );
+					compiled[ object.material.uuid ] = true;
 
 				}