Browse Source

Merge pull request #14084 from richardmonette/fix-exr-load-edge-case

fix exr load edge case
Mr.doob 7 years ago
parent
commit
45e55bb74a
1 changed files with 7 additions and 6 deletions
  1. 7 6
      examples/js/loaders/EXRLoader.js

+ 7 - 6
examples/js/loaders/EXRLoader.js

@@ -355,16 +355,17 @@ THREE.EXRLoader.prototype._parser = function ( buffer ) {
 			lc -= 8;
 
 			var cs = ( c >> lc );
+			var cs = new Uint8Array([cs])[0];
 
-			if ( out + cs > oe ) {
+			if ( outBufferOffset.value + cs > outBufferEndOffset ) {
 
-				throw 'Issue with getCode';
+				return false;
 
 			}
 
-			var s = out[ - 1 ];
+			var s = outBuffer[ outBufferOffset.value - 1 ];
 
-			while ( cs -- > 0 ) {
+			while ( cs-- > 0 ) {
 
 				outBuffer[ outBufferOffset.value ++ ] = s;
 
@@ -376,7 +377,7 @@ THREE.EXRLoader.prototype._parser = function ( buffer ) {
 
 		} else {
 
-			throw 'Issue with getCode';
+			return false;
 
 		}
 
@@ -1171,7 +1172,7 @@ THREE.EXRLoader.prototype._parser = function ( buffer ) {
 		width: width,
 		height: height,
 		data: byteArray,
-		format: THREE.RGBFormat,
+		format: EXRHeader.channels.length == 4 ? THREE.RGBAFormat : THREE.RGBFormat,
 		type: THREE.FloatType
 	};