Jelajahi Sumber

EXRLoader: skip unknown header attributes

Guilherme Avila 5 tahun lalu
induk
melakukan
5b8f1c2246
2 mengubah file dengan 22 tambahan dan 30 penghapusan
  1. 11 15
      examples/js/loaders/EXRLoader.js
  2. 11 15
      examples/jsm/loaders/EXRLoader.js

+ 11 - 15
examples/js/loaders/EXRLoader.js

@@ -1678,15 +1678,6 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
 
 		}
 
-		function parsePreview( dataView, offset ) {
-
-			var width = parseUint32( dataView, offset );
-			var height = parseUint32( dataView, offset );
-
-			offset.value += 4 * width * height;
-
-		}
-
 		function parseInt32( dataView, offset ) {
 
 			var Int32 = dataView.getInt32( offset.value, true );
@@ -1994,13 +1985,9 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
 
 				return parseTimecode( dataView, offset );
 
-			} else if ( type === 'preview' ) {
-
-				return parsePreview( dataView, offset );
-
 			} else {
 
-				throw 'Cannot parse value for unsupported type: ' + type;
+				return undefined;
 
 			}
 
@@ -2035,7 +2022,16 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
 				var attributeSize = parseUint32( bufferDataView, offset );
 				var attributeValue = parseValue( bufferDataView, buffer, offset, attributeType, attributeSize );
 
-				EXRHeader[ attributeName ] = attributeValue;
+				if ( attributeValue === undefined ) {
+
+					console.warn( `EXRLoader.parse: skipped unknown header attribute type \'${attributeType}\'.` );
+					offset.value += attributeSize;
+
+				} else {
+
+					EXRHeader[ attributeName ] = attributeValue;
+
+				}
 
 			}
 

+ 11 - 15
examples/jsm/loaders/EXRLoader.js

@@ -1691,15 +1691,6 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
 
 		}
 
-		function parsePreview( dataView, offset ) {
-
-			var width = parseUint32( dataView, offset );
-			var height = parseUint32( dataView, offset );
-
-			offset.value += 4 * width * height;
-
-		}
-
 		function parseInt32( dataView, offset ) {
 
 			var Int32 = dataView.getInt32( offset.value, true );
@@ -2007,13 +1998,9 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
 
 				return parseTimecode( dataView, offset );
 
-			} else if ( type === 'preview' ) {
-
-				return parsePreview( dataView, offset );
-
 			} else {
 
-				throw 'Cannot parse value for unsupported type: ' + type;
+				return undefined;
 
 			}
 
@@ -2048,7 +2035,16 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
 				var attributeSize = parseUint32( bufferDataView, offset );
 				var attributeValue = parseValue( bufferDataView, buffer, offset, attributeType, attributeSize );
 
-				EXRHeader[ attributeName ] = attributeValue;
+				if ( attributeValue === undefined ) {
+
+					console.warn( `EXRLoader.parse: skipped unknown header attribute type \'${attributeType}\'.` );
+					offset.value += attributeSize;
+
+				} else {
+
+					EXRHeader[ attributeName ] = attributeValue;
+
+				}
 
 			}