فهرست منبع

Uppate/Add some shader

ShiroSmith 4 سال پیش
والد
کامیت
865bf5b0b7
4فایلهای تغییر یافته به همراه43 افزوده شده و 3 حذف شده
  1. 5 2
      h3d/shader/AlphaMap.hx
  2. 12 0
      h3d/shader/AlphaMult.hx
  3. 2 1
      h3d/shader/ColorMult.hx
  4. 24 0
      h3d/shader/UVTransform.hx

+ 5 - 2
h3d/shader/AlphaMap.hx

@@ -9,11 +9,14 @@ class AlphaMap extends hxsl.Shader {
 		@param var uvScale : Vec2;
 		@param var uvDelta : Vec2;
 		@const var useAlphaChannel : Bool;
+		@const @param var useSourceUVs : Bool = false;
 		function fragment() {
+			var uv = useSourceUVs ? input.uv : calculatedUV;
+			uv = uv * uvScale + uvDelta;
 			if( useAlphaChannel )
-				pixelColor.a *= texture.get(calculatedUV * uvScale + uvDelta).a;
+				pixelColor.a *= texture.get(uv).a;
 			else
-				pixelColor.a *= texture.get(calculatedUV * uvScale + uvDelta).b;
+				pixelColor.a *= texture.get(uv).b;
 		}
 	}
 

+ 12 - 0
h3d/shader/AlphaMult.hx

@@ -0,0 +1,12 @@
+package h3d.shader;
+
+class AlphaMult extends hxsl.Shader {
+	static var SRC = {
+		@param var alpha : Float;
+		var pixelColor : Vec4;
+
+		function fragment() {
+			pixelColor.a *= alpha;
+		}
+	}
+}

+ 2 - 1
h3d/shader/ColorMult.hx

@@ -6,9 +6,10 @@ class ColorMult extends hxsl.Shader {
 		var pixelColor : Vec4;
 
 		@param var color : Vec4;
+		@param var amount : Float = 1.0;
 
 		function fragment() {
-			pixelColor *= color;
+			pixelColor.rgba = mix(pixelColor.rgba, pixelColor.rgba * color, amount);
 		}
 
 	};

+ 24 - 0
h3d/shader/UVTransform.hx

@@ -0,0 +1,24 @@
+package h3d.shader;
+
+class UVTransform extends hxsl.Shader {
+
+	static var SRC = {
+		@global var global : {
+			var time : Float;
+		};
+		@input var input : {
+			var uv : Vec2;
+		};
+
+		@param var shift : Vec2;
+		@param var speed : Vec2;
+		@param var scale : Vec2;
+
+		var calculatedUV : Vec2;
+
+		function vertex() {
+			var uv = input.uv;
+			calculatedUV = (uv + speed * global.time + shift) * scale;
+		}
+	};
+}