ShaderFunction.hx 822 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package hrt.shgraph;
  2. import hxsl.*;
  3. using hxsl.Ast;
  4. class ShaderFunction extends ShaderNode {
  5. @output() var output = SType.Variant;
  6. var func : TGlobal;
  7. public function new(func : TGlobal) {
  8. this.func = func;
  9. }
  10. override public function build(key : String) : TExpr {
  11. var args = [];
  12. var varArgs = [];
  13. for (k in getInputsKey()) {
  14. args.push({ name: k, type: getInput(k).getType() });
  15. varArgs.push(getInput(k).getVar());
  16. }
  17. return {
  18. p : null,
  19. t : TVec(3,VFloat),
  20. e : TBinop(OpAssign, {
  21. e: TVar(output),
  22. p: null,
  23. t: output.type
  24. }, {
  25. e: TCall({
  26. e: TGlobal(func),
  27. p: null,
  28. t: TFun([
  29. {
  30. ret: output.type,
  31. args: args
  32. }
  33. ])
  34. }, varArgs),
  35. p: null,
  36. t: output.type
  37. })
  38. };
  39. }
  40. }