浏览代码

More Math modes

CPKreuz 8 月之前
父节点
当前提交
ff7ef2e1d8

+ 1 - 1
src/Drawie

@@ -1 +1 @@
-Subproject commit c3f025d2e28869acfaf8db3378116172e6b386da
+Subproject commit 512f280da10f3fbf0552f2bd79d1e1b54385813d

+ 12 - 2
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/MathNode.cs

@@ -53,7 +53,12 @@ public class MathNode : Node
                 MathNodeMode.GreaterThanOrEqual => ShaderMath.GreaterThanOrEqual(x, y),
                 MathNodeMode.LessThan => ShaderMath.LessThan(x, y),
                 MathNodeMode.LessThanOrEqual => ShaderMath.LessThanOrEqual(x, y),
-                MathNodeMode.Compare => ShaderMath.Compare(x, y, z)
+                MathNodeMode.Compare => ShaderMath.Compare(x, y, z),
+                MathNodeMode.Power => ShaderMath.Power(x, y),
+                MathNodeMode.Logarithm => ShaderMath.Log(x, y),
+                MathNodeMode.NaturalLogarithm => ShaderMath.LogE(x),
+                MathNodeMode.Root => ShaderMath.Root(x, y),
+                MathNodeMode.InverseRoot => ShaderMath.InverseRoot(x, y),
             };
 
             if (Clamp.Value)
@@ -81,7 +86,12 @@ public class MathNode : Node
             MathNodeMode.GreaterThanOrEqual => xConst >= yConst ? 1 : 0,
             MathNodeMode.LessThan => xConst < yConst ? 1 : 0,
             MathNodeMode.LessThanOrEqual => xConst <= yConst ? 1 : 0,
-            MathNodeMode.Compare => Math.Abs(xConst - yConst) < zConst ? 1 : 0
+            MathNodeMode.Compare => Math.Abs(xConst - yConst) < zConst ? 1 : 0,
+            MathNodeMode.Power => Math.Pow(xConst, yConst),
+            MathNodeMode.Logarithm => Math.Log(xConst, yConst),
+            MathNodeMode.NaturalLogarithm => Math.Log(xConst),
+            MathNodeMode.Root => Math.Pow(xConst, 1.0 / yConst),
+            MathNodeMode.InverseRoot => 1.0 / Math.Pow(xConst, 1.0 / yConst)
         };
             
         return new Float1(string.Empty) { ConstantValue = constValue };

+ 11 - 1
src/PixiEditor.ChangeableDocument/Enums/MathNodeMode.cs

@@ -27,7 +27,17 @@ public enum MathNodeMode
     [Description("LESS_THAN_OR_EQUAL")]
     LessThanOrEqual,
     [Description("COMPARE")]
-    Compare
+    Compare,
+    [Description("MATH_POWER")]
+    Power,
+    [Description("LOGARITHM")]
+    Logarithm,
+    [Description("NATURAL_LOGARITHM")]
+    NaturalLogarithm,
+    [Description("ROOT")]
+    Root,
+    [Description("INVERSE_ROOT")]
+    InverseRoot
 }
 
 public static class MathNodeModeExtensions