diff --git a/examples/js/loaders/EXRLoader.js b/examples/js/loaders/EXRLoader.js index 778810403ec5b1224dd0e3332ee1379288ace0b5..3cffdc61abbfaf27b9416c4eba51e2b30d0aeb68 100644 --- a/examples/js/loaders/EXRLoader.js +++ b/examples/js/loaders/EXRLoader.js @@ -1610,7 +1610,7 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade function parseRational( dataView, offset ) { - var x = parseUint32( dataView, offset ); + var x = parseInt32( dataView, offset ); var y = parseUint32( dataView, offset ); return [ x, y ]; @@ -1626,6 +1626,16 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade } + function parseInt32( dataView, offset ) { + + var Int32 = dataView.getInt32( offset.value, true ); + + offset.value = offset.value + INT32_SIZE; + + return Int32; + + } + function parseUint32( dataView, offset ) { var Uint32 = dataView.getUint32( offset.value, true ); @@ -1773,11 +1783,11 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade while ( offset.value < ( startOffset + size - 1 ) ) { var name = parseNullTerminatedString( buffer, offset ); - var pixelType = parseUint32( dataView, offset ); // TODO: Cast this to UINT, HALF or FLOAT + var pixelType = parseInt32( dataView, offset ); var pLinear = parseUint8( dataView, offset ); offset.value += 3; // reserved, three chars - var xSampling = parseUint32( dataView, offset ); - var ySampling = parseUint32( dataView, offset ); + var xSampling = parseInt32( dataView, offset ); + var ySampling = parseInt32( dataView, offset ); channels.push( { name: name, @@ -1899,7 +1909,7 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade } else if ( type === 'int' ) { - return parseUint32( dataView, offset ); + return parseInt32( dataView, offset ); } else if ( type === 'rational' ) { diff --git a/examples/jsm/loaders/EXRLoader.js b/examples/jsm/loaders/EXRLoader.js index 0a35a58d22e299ffa282dabb9cfc246d026c8bae..6132fd2a6e66e8aa21c3ff7d90b4d9bf320b6222 100644 --- a/examples/jsm/loaders/EXRLoader.js +++ b/examples/jsm/loaders/EXRLoader.js @@ -1625,7 +1625,7 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype function parseRational( dataView, offset ) { - var x = parseUint32( dataView, offset ); + var x = parseInt32( dataView, offset ); var y = parseUint32( dataView, offset ); return [ x, y ]; @@ -1641,6 +1641,16 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype } + function parseInt32( dataView, offset ) { + + var Int32 = dataView.getInt32( offset.value, true ); + + offset.value = offset.value + INT32_SIZE; + + return Int32; + + } + function parseUint32( dataView, offset ) { var Uint32 = dataView.getUint32( offset.value, true ); @@ -1788,11 +1798,11 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype while ( offset.value < ( startOffset + size - 1 ) ) { var name = parseNullTerminatedString( buffer, offset ); - var pixelType = parseUint32( dataView, offset ); // TODO: Cast this to UINT, HALF or FLOAT + var pixelType = parseInt32( dataView, offset ); var pLinear = parseUint8( dataView, offset ); offset.value += 3; // reserved, three chars - var xSampling = parseUint32( dataView, offset ); - var ySampling = parseUint32( dataView, offset ); + var xSampling = parseInt32( dataView, offset ); + var ySampling = parseInt32( dataView, offset ); channels.push( { name: name, @@ -1914,7 +1924,7 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype } else if ( type === 'int' ) { - return parseUint32( dataView, offset ); + return parseInt32( dataView, offset ); } else if ( type === 'rational' ) {