|
@@ -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
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+}
|