Browse Source

GLTFLoader: Ensure cache misses if primitives share attributes but not morph targets. (#25976)

Don McCurdy 2 years ago
parent
commit
79c0f7559c
1 changed files with 12 additions and 1 deletions
  1. 12 1
      examples/jsm/loaders/GLTFLoader.js

+ 12 - 1
examples/jsm/loaders/GLTFLoader.js

@@ -2255,9 +2255,10 @@ function updateMorphTargets( mesh, meshDef ) {
 
 function createPrimitiveKey( primitiveDef ) {
 
-	const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];
 	let geometryKey;
 
+	const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];
+
 	if ( dracoExtension ) {
 
 		geometryKey = 'draco:' + dracoExtension.bufferView
@@ -2270,6 +2271,16 @@ function createPrimitiveKey( primitiveDef ) {
 
 	}
 
+	if ( primitiveDef.targets !== undefined ) {
+
+		for ( let i = 0, il = primitiveDef.targets.length; i < il; i ++ ) {
+
+			geometryKey += ':' + createAttributesKey( primitiveDef.targets[ i ] );
+
+		}
+
+	}
+
 	return geometryKey;
 
 }