Browse Source

Add StripAlpha shader node

Leonardo Jeanteur 4 years ago
parent
commit
7b953fc9f5
1 changed files with 49 additions and 0 deletions
  1. 49 0
      hrt/shgraph/nodes/StripAlpha.hx

+ 49 - 0
hrt/shgraph/nodes/StripAlpha.hx

@@ -0,0 +1,49 @@
+package hrt.shgraph.nodes;
+
+using hxsl.Ast;
+
+@name("Strip Alpha")
+@description("Separate the rgb and a components of an rgba vector")
+@group("Channel")
+class StripAlpha extends ShaderNode {
+
+	@input("RGBA") var input = SType.Vec4;
+
+	@output("RGB") var rgb = SType.Vec3;
+	@output("A") var a = SType.Float;
+
+	override public function computeOutputs() {
+		addOutput("rgb", TVec(3, VFloat));
+		addOutput("a", TFloat);
+	}
+
+	override public function build(key : String) : TExpr {
+        if( key == "a" ) {
+            return { e: TBinop(OpAssign, {
+                    e: TVar(getOutput(key)),
+                    p: null,
+                    t: getOutput(key).type
+                }, {
+                    e: TSwiz(input.getVar(TVec(4, VFloat)), [W]),
+                    p: null,
+                    t: getOutput(key).type
+                }),
+                p: null,
+                t: getOutput(key).type
+            };
+	    }
+        return { e: TBinop(OpAssign, {
+                e: TVar(getOutput(key)),
+                p: null,
+                t: getOutput(key).type
+            }, {
+                e: TSwiz(input.getVar(TVec(4, VFloat)), [X, Y, Z]),
+                p: null,
+                t: getOutput(key).type
+            }),
+            p: null,
+            t: getOutput(key).type
+        };
+    }
+
+}