ncannasse 11 rokov pred
rodič
commit
fa69d19c7a
1 zmenil súbory, kde vykonal 14 pridanie a 1 odobranie
  1. 14 1
      h3d/mat/MeshMaterial.hx

+ 14 - 1
h3d/mat/MeshMaterial.hx

@@ -100,6 +100,11 @@ private class MeshShader extends h3d.impl.Shader {
 		var writeDistance : Bool;
 		var projCenter : Float3;
 		var distance : Float3;
+		
+		
+		var colorMap : Texture;
+		var colorMapMatrix : Matrix;
+		var hasColorMap : Bool;
 
 		function vertex( mpos : Matrix, mproj : Matrix ) {
 			var tpos = input.pos.xyzw;
@@ -195,7 +200,9 @@ private class MeshShader extends h3d.impl.Shader {
 				if( colorMatrix != null ) c = c * colorMatrix;
 				out = c;
 			} else {
-				var c = tex.get(tuv.xy,type=isDXT1 ? 1 : isDXT5 ? 2 : 0);
+				var c = tex.get(tuv.xy, type = isDXT1 ? 1 : isDXT5 ? 2 : 0);
+				if( hasColorMap )
+					c.rgb *= (colorMap.get(tuv.xy) * colorMapMatrix).rgb;
 				if( fog != null ) c.a *= talpha;
 				if( hasAlphaMap ) c.a *= alphaMap.get(alphaMapScroll != null ? tuv + alphaMapScroll : tuv.xy,type=isDXT1 ? 1 : isDXT5 ? 2 : 0).b;
 				if( killAlpha ) kill(c.a - killAlphaThreshold);
@@ -800,5 +807,11 @@ class MeshMaterial extends Material {
 		return mshader.outlinePower = v;
 	}
 	
+	public function setColorMap( texture, ?matrix ) {
+		mshader.hasColorMap = texture != null;
+		mshader.colorMap = texture;
+		mshader.colorMapMatrix = matrix;
+	}
+	
 	#end
 }