未验证 提交 4019a61d 编写于 作者: M Mr.doob 提交者: GitHub

Merge pull request #19110 from sciecode/dev-exrloader-int32

EXRLoader: fix int32 parsing
......@@ -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' ) {
......
......@@ -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' ) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册