فهرست منبع

Added compressed textures support to MTLLoader.

This also adds compressed textures support to UTF8v2Loader.

Now with UTF8 + BufferGeometry + DDS we should have quite efficient and GPU friendly asset pipeline. One possible improvement would be using Rich Geldreich's Crunch compression instead of raw DDS for having smaller texture file sizes while downloading: http://code.google.com/p/crunch/

TODO: there seem to be some bug somewhere in our compressed texture pipeline (or in Chrome). I tried Ben's textures converted to DDS and I got boatload of GL warnings :S
alteredq 13 سال پیش
والد
کامیت
a22b6a4609
3فایلهای تغییر یافته به همراه82 افزوده شده و 16 حذف شده
  1. 25 15
      examples/js/loaders/MTLLoader.js
  2. 56 0
      examples/obj/male02/male02_dds.mtl
  3. 1 1
      examples/webgl_loader_obj_mtl.html

+ 25 - 15
examples/js/loaders/MTLLoader.js

@@ -398,31 +398,41 @@ THREE.MTLLoader.MaterialCreator.prototype = {
 
 THREE.MTLLoader.loadTexture = function ( url, mapping, onLoad, onError ) {
 
-        var image = new Image();
-        var texture = new THREE.Texture( image, mapping );
+	var isCompressed = url.toLowerCase().endsWith( ".dds" );
 
-        var loader = new THREE.ImageLoader();
+	if ( isCompressed ) {
 
-        loader.addEventListener( 'load', function ( event ) {
+		var texture = THREE.ImageUtils.loadCompressedTexture( url, mapping, onLoad, onError );
 
-            texture.image = THREE.MTLLoader.ensurePowerOfTwo_( event.content );
-            texture.needsUpdate = true;
-            if ( onLoad ) onLoad( texture );
+	} else {
 
-        } );
+		var image = new Image();
+		var texture = new THREE.Texture( image, mapping );
 
-        loader.addEventListener( 'error', function ( event ) {
+		var loader = new THREE.ImageLoader();
 
-            if ( onError ) onError( event.message );
+		loader.addEventListener( 'load', function ( event ) {
 
-        } );
+			texture.image = THREE.MTLLoader.ensurePowerOfTwo_( event.content );
+			texture.needsUpdate = true;
+			if ( onLoad ) onLoad( texture );
 
-        loader.crossOrigin = this.crossOrigin;
-        loader.load( url, image );
+		} );
 
-        return texture;
+		loader.addEventListener( 'error', function ( event ) {
 
-    };
+			if ( onError ) onError( event.message );
+
+		} );
+
+		loader.crossOrigin = this.crossOrigin;
+		loader.load( url, image );
+
+	}
+
+	return texture;
+
+};
 
 THREE.MTLLoader.ensurePowerOfTwo_ = function ( image ) {
 

+ 56 - 0
examples/obj/male02/male02_dds.mtl

@@ -0,0 +1,56 @@
+# Material Count: 5
+newmtl _01_-_Default1noCulli__01_-_Default1noCulli
+Ns 154.901961
+Ka 0.000000 0.000000 0.000000
+Kd 0.640000 0.640000 0.640000
+Ks 0.165000 0.165000 0.165000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd 01_-_Default1noCulling.dds
+
+
+newmtl FrontColorNoCullingID_male-02-1noCulling.JP
+Ns 154.901961
+Ka 0.000000 0.000000 0.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.165000 0.165000 0.165000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd male-02-1noCulling.dds
+
+
+newmtl male-02-1noCullingID_male-02-1noCulling.JP
+Ns 154.901961
+Ka 0.000000 0.000000 0.000000
+Kd 0.640000 0.640000 0.640000
+Ks 0.165000 0.165000 0.165000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd male-02-1noCulling.dds
+
+
+newmtl orig_02_-_Defaul1noCu_orig_02_-_Defaul1noCu
+Ns 154.901961
+Ka 0.000000 0.000000 0.000000
+Kd 0.640000 0.640000 0.640000
+Ks 0.165000 0.165000 0.165000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd orig_02_-_Defaul1noCulling.dds
+
+
+newmtl FrontColorNoCullingID_orig_02_-_Defaul1noCu
+Ns 154.901961
+Ka 0.000000 0.000000 0.000000
+Kd 0.800000 0.800000 0.800000
+Ks 0.165000 0.165000 0.165000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd orig_02_-_Defaul1noCulling.dds
+
+

+ 1 - 1
examples/webgl_loader_obj_mtl.html

@@ -84,7 +84,7 @@
 					scene.add( object );
 
 				});
-				loader.load( 'obj/male02/male02.obj', 'obj/male02/male02.mtl' );
+				loader.load( 'obj/male02/male02.obj', 'obj/male02/male02_dds.mtl' );
 
 				//