Parcourir la source

Merge pull request #20108 from sciecode/dev-exr-preview

EXRLoader: skip unknown header attributes
Mr.doob il y a 5 ans
Parent
commit
2195955e65
2 fichiers modifiés avec 22 ajouts et 4 suppressions
  1. 11 2
      examples/js/loaders/EXRLoader.js
  2. 11 2
      examples/jsm/loaders/EXRLoader.js

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

@@ -1987,7 +1987,7 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade
 
 			} else {
 
-				throw 'Cannot parse value for unsupported type: ' + type;
+				return undefined;
 
 			}
 
@@ -2022,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 - 2
examples/jsm/loaders/EXRLoader.js

@@ -2000,7 +2000,7 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype
 
 			} else {
 
-				throw 'Cannot parse value for unsupported type: ' + type;
+				return undefined;
 
 			}
 
@@ -2035,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;
+
+				}
 
 			}