浏览代码

added textureWrap on PbrMaterial, remove drawOrder

Nicolas Cannasse 4 年之前
父节点
当前提交
691d6492a1
共有 3 个文件被更改,包括 15 次插入8 次删除
  1. 0 1
      h3d/mat/Pass.hx
  2. 13 5
      h3d/mat/PbrMaterial.hx
  3. 2 2
      h3d/scene/Renderer.hx

+ 0 - 1
h3d/mat/Pass.hx

@@ -42,7 +42,6 @@ class Pass implements hxd.impl.Serializable {
 	@:bits(bits) public var blendAlphaOp : Operation;
 	@:bits(bits) public var wireframe : Bool;
 	public var colorMask : Int;
-	public var layer : Int = 0;
 
 	@:s public var stencil : Stencil;
 

+ 13 - 5
h3d/mat/PbrMaterial.hx

@@ -62,6 +62,7 @@ typedef PbrProps = {
 	@:optional var alphaKill : Bool;
 	@:optional var emissive : Float;
 	@:optional var parallax : Float;
+	@:optional var textureWrap : Bool;
 
 	var enableStencil : Bool;
 	@:optional var stencilCompare : PbrStencilCompare;
@@ -71,8 +72,6 @@ typedef PbrProps = {
 	@:optional var stencilValue : Int;
 	@:optional var stencilWriteMask : Int;
 	@:optional var stencilReadMask : Int;
-
-	@:optional var drawOrder : Int;
 }
 
 class PbrMaterial extends Material {
@@ -194,6 +193,8 @@ class PbrMaterial extends Material {
 		// Remove unused fields
 		if( props.emissive == 0 )
 			Reflect.deleteField(props,"emissive");
+		if( !props.textureWrap )
+			Reflect.deleteField(props,"textureWrap");
 		if( !props.enableStencil ) {
 			Reflect.deleteField(props, "stencilWriteMask");
 			Reflect.deleteField(props, "stencilReadMask");
@@ -264,6 +265,15 @@ class PbrMaterial extends Material {
 			tshader.killAlphaThreshold = 0.5;
 		}
 
+		if( props.textureWrap ) {
+			var t = texture;
+			if( t != null ) t.wrap = Repeat;
+			t = specularTexture;
+			if( t != null ) t.wrap = Repeat;
+			t = normalMap;
+			if( t != null ) t.wrap = Repeat;
+		}
+
 		mainPass.culling = props.culling ? Back : None;
 
 		shadows = props.shadows;
@@ -310,8 +320,6 @@ class PbrMaterial extends Material {
 		setColorMask();
 
 		setStencil();
-
-		mainPass.layer = props.drawOrder == null ? 0 : props.drawOrder;
 	}
 
 	function setColorMask() {
@@ -466,7 +474,7 @@ class PbrMaterial extends Material {
 				<dt>Shadows</dt><dd><input type="checkbox" field="shadows"/></dd>
 				<dt>Culled</dt><dd><input type="checkbox" field="culling"/></dd>
 				<dt>AlphaKill</dt><dd><input type="checkbox" field="alphaKill"/></dd>
-				<dt>Draw Order</dt><dd><input type="range" min="0" max="10" step="1" field="drawOrder"/></dd>
+				<dt>Wrap</dt><dd><input type="checkbox" field="textureWrap"/></dd>
 			</dl>
 		');
 	}

+ 2 - 2
h3d/scene/Renderer.hx

@@ -109,9 +109,9 @@ class Renderer extends hxd.impl.AnyProps {
 			p.depth = z / w;
 		}
 		if( frontToBack )
-			passes.sort(function(p1, p2) return p1.pass.layer == p2.pass.layer ? (p1.depth > p2.depth ? 1 : -1) : p1.pass.layer - p2.pass.layer);
+			passes.sort(function(p1, p2) return p1.depth > p2.depth ? 1 : -1);
 		else
-			passes.sort(function(p1, p2) return p1.pass.layer == p2.pass.layer ? (p1.depth > p2.depth ? -1 : 1) : p1.pass.layer - p2.pass.layer);
+			passes.sort(function(p1, p2) return p1.depth > p2.depth ? -1 : 1);
 	}
 
 	inline function clear( ?color, ?depth, ?stencil ) {