소스 검색

exr loader bug fixes

Richard Monette 7 년 전
부모
커밋
68157212b8
1개의 변경된 파일9개의 추가작업 그리고 5개의 파일을 삭제
  1. 9 5
      examples/js/loaders/EXRLoader.js

+ 9 - 5
examples/js/loaders/EXRLoader.js

@@ -817,7 +817,7 @@ THREE.EXRLoader.prototype._parser = function ( buffer ) {
 
 		} else if ( type == 'chromaticities' ) {
 
-			return parseChromaticities( buffer, offset );
+			return parseChromaticities( dataView, offset );
 
 		} else if ( type == 'compression' ) {
 
@@ -839,6 +839,10 @@ THREE.EXRLoader.prototype._parser = function ( buffer ) {
 
 			return parseV2f( dataView, offset );
 
+		} else if ( type == 'int' ) {
+
+			return parseUint32( dataView, offset );
+
 		} else {
 
 			throw 'Cannot parse value for unsupported type: ' + type;
@@ -916,8 +920,8 @@ THREE.EXRLoader.prototype._parser = function ( buffer ) {
 
 		for ( var y = 0; y < height; y ++ ) {
 
-			var y_scanline = parseUint32( buffer, offset );
-			var dataSize = parseUint32( buffer, offset );
+			var y_scanline = parseUint32( bufferDataView, offset );
+			var dataSize = parseUint32( bufferDataView, offset );
 
 			for ( var channelID = 0; channelID < EXRHeader.channels.length; channelID ++ ) {
 
@@ -928,9 +932,9 @@ THREE.EXRLoader.prototype._parser = function ( buffer ) {
 					// HALF
 					for ( var x = 0; x < width; x ++ ) {
 
-						var val = parseFloat16( buffer, offset );
+						var val = parseFloat16( bufferDataView, offset );
 
-						byteArray[ ( ( ( width - y_scanline ) * ( height * numChannels ) ) + ( x * numChannels ) ) + cOff ] = val;
+						byteArray[ ( ( (height - y_scanline) * ( width * numChannels ) ) + ( x * numChannels ) ) + cOff ] = val;
 
 					}