Ver Fonte

- Added SVG to MSDF conversion - Improved AlphaMSDF shader

TothBenoit há 1 ano atrás
pai
commit
c10c0498af
3 ficheiros alterados com 23 adições e 6 exclusões
  1. 12 5
      h3d/shader/AlphaMSDF.hx
  2. 9 0
      hxd/fs/Convert.hx
  3. 2 1
      hxd/fs/FileConverter.hx

+ 12 - 5
h3d/shader/AlphaMSDF.hx

@@ -3,11 +3,15 @@ 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;
+		@input var input : { uv : Vec2 };
+		@const @param var useSourceUVs : Bool = true;		
+
+		@param var texture : Sampler2D;
+		@param var blur : Float = 1;
+		@const var useColor : Bool = false;
+		@param var color : Vec3;
 
 		function median(r : Float, g : Float, b : Float) : Float {
 		    return max(min(r, g), min(max(r, g), b));
@@ -20,10 +24,13 @@ class AlphaMSDF extends hxsl.Shader {
 		}
 
 		function fragment() {
-			var sample = texture.get(calculatedUV);
+			var uv = useSourceUVs ? input.uv : calculatedUV;
+			var sample = texture.get(uv);
 			var sd = median(sample.r, sample.g, sample.b);
-    		var screenPxDistance = screenPxRange(calculatedUV)*(sd - 0.5);
+    		var screenPxDistance = screenPxRange(uv)*(sd - 0.5);
     		pixelColor.a = clamp(screenPxDistance + 0.5, 0.0, 1.0);
+			if (useColor)
+				pixelColor.rgb = color;
 		}
     }
 }

+ 9 - 0
hxd/fs/Convert.hx

@@ -397,4 +397,13 @@ class ConvertBinJSON extends Convert {
 
 	static var _ = [Convert.register(new ConvertBinJSON("json,prefab,l3d", "hbson"))];
 }
+
+class ConvertSVGToMSDF extends Convert {
+	override function convert() {
+		var size = hasParam("size") ? getParam("size") : 128;
+		command("msdfgen.exe", ["-svg", srcPath, "-size", '$size', '$size', "-autoframe", "-o", dstPath]);
+	}
+
+	static var _ = Convert.register(new ConvertSVGToMSDF("svg", "png"));
+}
 #end

+ 2 - 1
hxd/fs/FileConverter.hx

@@ -68,7 +68,8 @@ class FileConverter {
 		var defaultCfg : Dynamic = {
 			"fs.convert" : {
 				"fbx" : { "convert" : "hmd", "priority" : -1 },
-				"fnt" : { "convert" : "bfnt", "priority" : -1 }
+				"fnt" : { "convert" : "bfnt", "priority" : -1 },
+				"svg" : { "convert" : "png", "priority" : -1 }
 			}
 		};
 		for ( conf in extraConfigs ) {