소스 검색

Support additional attribute types

WestLangley 5 년 전
부모
커밋
63502b521e
2개의 변경된 파일52개의 추가작업 그리고 0개의 파일을 삭제
  1. 26 0
      examples/js/loaders/EXRLoader.js
  2. 26 0
      examples/jsm/loaders/EXRLoader.js

+ 26 - 0
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;

+ 26 - 0
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;