From 63502b521e1d50e42f57f24bc5d38b82fa5e0702 Mon Sep 17 00:00:00 2001 From: WestLangley Date: Fri, 10 Apr 2020 11:37:29 -0400 Subject: [PATCH] Support additional attribute types --- examples/js/loaders/EXRLoader.js | 26 ++++++++++++++++++++++++++ examples/jsm/loaders/EXRLoader.js | 26 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/examples/js/loaders/EXRLoader.js b/examples/js/loaders/EXRLoader.js index ea73526fcf..778810403e 100644 --- a/examples/js/loaders/EXRLoader.js +++ b/examples/js/loaders/EXRLoader.js @@ -1608,6 +1608,24 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade } + function parseRational( dataView, offset ) { + + var x = parseUint32( dataView, offset ); + var y = parseUint32( dataView, offset ); + + return [ x, y ]; + + } + + function parseTimecode( dataView, offset ) { + + var x = parseUint32( dataView, offset ); + var y = parseUint32( dataView, offset ); + + return [ x, y ]; + + } + function parseUint32( dataView, offset ) { var Uint32 = dataView.getUint32( offset.value, true ); @@ -1883,6 +1901,14 @@ THREE.EXRLoader.prototype = Object.assign( Object.create( THREE.DataTextureLoade return parseUint32( dataView, offset ); + } else if ( type === 'rational' ) { + + return parseRational( dataView, offset ); + + } else if ( type === 'timecode' ) { + + return parseTimecode( dataView, offset ); + } else { throw 'Cannot parse value for unsupported type: ' + type; diff --git a/examples/jsm/loaders/EXRLoader.js b/examples/jsm/loaders/EXRLoader.js index 19e881526c..0a35a58d22 100644 --- a/examples/jsm/loaders/EXRLoader.js +++ b/examples/jsm/loaders/EXRLoader.js @@ -1623,6 +1623,24 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype } + function parseRational( dataView, offset ) { + + var x = parseUint32( dataView, offset ); + var y = parseUint32( dataView, offset ); + + return [ x, y ]; + + } + + function parseTimecode( dataView, offset ) { + + var x = parseUint32( dataView, offset ); + var y = parseUint32( dataView, offset ); + + return [ x, y ]; + + } + function parseUint32( dataView, offset ) { var Uint32 = dataView.getUint32( offset.value, true ); @@ -1898,6 +1916,14 @@ EXRLoader.prototype = Object.assign( Object.create( DataTextureLoader.prototype return parseUint32( dataView, offset ); + } else if ( type === 'rational' ) { + + return parseRational( dataView, offset ); + + } else if ( type === 'timecode' ) { + + return parseTimecode( dataView, offset ); + } else { throw 'Cannot parse value for unsupported type: ' + type; -- GitLab