Jelajahi Sumber

h3d/scene/World.hx texture wrap

clementlandrin 8 bulan lalu
induk
melakukan
18582b3307
1 mengubah file dengan 23 tambahan dan 3 penghapusan
  1. 23 3
      h3d/scene/World.hx

+ 23 - 3
h3d/scene/World.hx

@@ -211,6 +211,21 @@ class World extends Object {
 	*/
 	*/
 	public var specularInAlpha = false;
 	public var specularInAlpha = false;
 
 
+	public var wrap(default, set) : h3d.mat.Data.Wrap = Clamp;
+	public function set_wrap(v : h3d.mat.Data.Wrap) {
+		wrap = v;
+		inline function bigTextureWrap(t : h3d.mat.BigTexture) {
+			if ( t != null && t.tex != null )
+				t.tex.wrap = wrap;
+		}
+		for ( b in bigTextures ) {
+			bigTextureWrap(b.diffuse);
+			bigTextureWrap(b.normal);
+			bigTextureWrap(b.spec);
+		}
+		return wrap;
+	}
+
 	var bigTextureSize = 2048;
 	var bigTextureSize = 2048;
 	var defaultDiffuseBG = 0;
 	var defaultDiffuseBG = 0;
 	var defaultNormalBG = 0x8080FF;
 	var defaultNormalBG = 0x8080FF;
@@ -321,6 +336,7 @@ class World extends Object {
 		}
 		}
 		if( t == null ) {
 		if( t == null ) {
 			var b = new h3d.mat.BigTexture(bigTextures.length, bigTextureSize, defaultDiffuseBG);
 			var b = new h3d.mat.BigTexture(bigTextures.length, bigTextureSize, defaultDiffuseBG);
+			b.tex.wrap = wrap;
 			btex = { diffuse : b, spec : null, normal : null };
 			btex = { diffuse : b, spec : null, normal : null };
 			bigTextures.unshift( btex );
 			bigTextures.unshift( btex );
 			t = b.add(rt);
 			t = b.add(rt);
@@ -331,7 +347,7 @@ class World extends Object {
 			if(res != null) {
 			if(res != null) {
 				var size = res.getSize();
 				var size = res.getSize();
 				if(size.width != t.width || size.height != t.height)
 				if(size.width != t.width || size.height != t.height)
-					throw 'Texture ${res.entry.path} has different size from diffuse (${size.width}x${size.height})';
+					throw 'Texture ${res.entry.path} has different size ${size.width}x${size.height} from diffuse ${t.width}x${t.height}';
 			}
 			}
 		}
 		}
 
 
@@ -345,8 +361,10 @@ class World extends Object {
 					specTex = t;
 					specTex = t;
 				}
 				}
 			} else {
 			} else {
-				if( btex.spec == null )
+				if( btex.spec == null ) {
 					btex.spec = new h3d.mat.BigTexture(-1, bigTextureSize, defaultSpecularBG);
 					btex.spec = new h3d.mat.BigTexture(-1, bigTextureSize, defaultSpecularBG);
+					btex.spec.tex.wrap = wrap;
+				}
 				if( res != null )
 				if( res != null )
 					specTex = btex.spec.add(res);
 					specTex = btex.spec.add(res);
 				else
 				else
@@ -358,8 +376,10 @@ class World extends Object {
 		if( enableNormalMaps ) {
 		if( enableNormalMaps ) {
 			var res = resolveNormalMap(texturePath, mat);
 			var res = resolveNormalMap(texturePath, mat);
 			checkSize(res);
 			checkSize(res);
-			if( btex.normal == null )
+			if( btex.normal == null ) {
 				btex.normal = new h3d.mat.BigTexture(-1, bigTextureSize, defaultNormalBG);
 				btex.normal = new h3d.mat.BigTexture(-1, bigTextureSize, defaultNormalBG);
+				btex.normal.tex.wrap = wrap;
+			}
 			if( res != null )
 			if( res != null )
 				normalMap = btex.normal.add(res);
 				normalMap = btex.normal.add(res);
 			else
 			else