StripAlpha.hx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package hrt.shgraph.nodes;
  2. using hxsl.Ast;
  3. @name("Strip Alpha")
  4. @description("Separate the rgb and a components of an rgba vector")
  5. @group("Channel")
  6. class StripAlpha extends ShaderNode {
  7. @input("RGBA") var input = SType.Vec4;
  8. @output("RGB") var rgb = SType.Vec3;
  9. @output("A") var a = SType.Float;
  10. override public function computeOutputs() {
  11. addOutput("rgb", TVec(3, VFloat));
  12. addOutput("a", TFloat);
  13. }
  14. override public function build(key : String) : TExpr {
  15. if( key == "a" ) {
  16. return { e: TBinop(OpAssign, {
  17. e: TVar(getOutput(key)),
  18. p: null,
  19. t: getOutput(key).type
  20. }, {
  21. e: TSwiz(input.getVar(TVec(4, VFloat)), [W]),
  22. p: null,
  23. t: getOutput(key).type
  24. }),
  25. p: null,
  26. t: getOutput(key).type
  27. };
  28. }
  29. return { e: TBinop(OpAssign, {
  30. e: TVar(getOutput(key)),
  31. p: null,
  32. t: getOutput(key).type
  33. }, {
  34. e: TSwiz(input.getVar(TVec(4, VFloat)), [X, Y, Z]),
  35. p: null,
  36. t: getOutput(key).type
  37. }),
  38. p: null,
  39. t: getOutput(key).type
  40. };
  41. }
  42. }