1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package hrt.shgraph.nodes;
- import hxsl.*;
- using hxsl.Ast;
- @name("Split")
- @description("Split all components of a vector into floats")
- @group("Channel")
- class Split extends ShaderNode {
- @input("rgba") var input = SType.Vec4;
- @output("r") var r = SType.Float;
- @output("g") var g = SType.Float;
- @output("b") var b = SType.Float;
- @output("a") var a = SType.Float;
- var components = [X, Y, Z, W];
- var componentsString = ["r", "g", "b", "a"];
- override public function createOutputs() {
- addOutput("r", TFloat);
- addOutput("g", TFloat);
- addOutput("b", TFloat);
- addOutput("a", TFloat);
- }
- override public function build(key : String) : TExpr {
- var compIdx = componentsString.indexOf(key);
- return { e: TBinop(OpAssign, {
- e: TVar(getOutput(key)),
- p: null,
- t: getOutput(key).type
- }, {e: TSwiz(input.getVar(), [components[compIdx]]), p: null, t: getOutput(key).type }),
- p: null,
- t: getOutput(key).type
- };
- }
- }
|