浏览代码

Properly handle exr files on drag-and-drop

WestLangley 4 年之前
父节点
当前提交
e23695f60a
共有 1 个文件被更改,包括 28 次插入4 次删除
  1. 28 4
      examples/webgl_materials_matcap.html

+ 28 - 4
examples/webgl_materials_matcap.html

@@ -62,11 +62,14 @@
 				var manager = new THREE.LoadingManager( render );
 
 				// matcap
-				var loader = new EXRLoader( manager );
+				var loader = new EXRLoader( manager )
+					.setDataType( THREE.UnsignedByteType ); // default: FloatType
+
 				var matcap = loader.load( 'textures/matcaps/040full.exr' );
 
 				// normalmap
 				var loader = new THREE.TextureLoader( manager );
+
 				var normalmap = loader.load( 'models/gltf/LeePerrySmith/Infinite-Level_02_Tangent_SmoothUV.jpg' );
 
 				// model
@@ -179,6 +182,8 @@
 
 				var loader = new EXRLoader();
 
+				loader.setDataType( THREE.UnsignedByteType ); // default: FloatType
+
 				var texData = loader.parse( contents );
 
 				var texture = new THREE.DataTexture();
@@ -190,9 +195,28 @@
 				texture.format = texData.format;
 				texture.type = texData.type;
 
-				texture.generateMipmaps = false;
-				texture.magFilter = THREE.LinearFilter;
-				texture.minFilter = THREE.LinearFilter;
+				switch ( texture.type ) {
+
+					case THREE.UnsignedByteType:
+
+						texture.encoding = THREE.RGBEEncoding;
+						texture.minFilter = THREE.NearestFilter;
+						texture.magFilter = THREE.NearestFilter;
+						texture.generateMipmaps = false;
+						texture.flipY = false;
+						break;
+
+					case THREE.FloatType:
+					case THREE.HalfFloatType:
+
+						texture.encoding = THREE.LinearEncoding;
+						texture.minFilter = THREE.LinearFilter;
+						texture.magFilter = THREE.LinearFilter;
+						texture.generateMipmaps = false;
+						texture.flipY = false;
+						break;
+
+				}
 
 				updateMatcap( texture );