2
0
TothBenoit 1 жил өмнө
parent
commit
a4294d3668

+ 29 - 0
h3d/shader/AlphaMSDF.hx

@@ -0,0 +1,29 @@
+package h3d.shader;
+
+class AlphaMSDF extends hxsl.Shader {
+    static var SRC = {  
+		
+		@param var texture : Sampler2D;
+		@param var blur : Float = 1;
+
+		var calculatedUV : Vec2;
+		var pixelColor : Vec4;
+
+		function median(r : Float, g : Float, b : Float) : Float {
+		    return max(min(r, g), min(max(r, g), b));
+		}
+
+		function screenPxRange( uv : Vec2 ) : Float {
+			var unitRange = vec2(blur)/vec2(texture.size());
+			var screenTexSize = vec2(1.0)/fwidth(uv);
+			return max(0.5*dot(unitRange, screenTexSize), 1.0);
+		}
+
+		function fragment() {
+				var sample = texture.get(calculatedUV);
+			var sd = median(sample.r, sample.g, sample.b);
+    		var screenPxDistance = screenPxRange(calculatedUV)*(sd - 0.5);
+    		pixelColor.a = clamp(screenPxDistance + 0.5, 0.0, 1.0);
+		}
+    }
+}