Sampler.hx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package hrt.shgraph.nodes;
  2. using hxsl.Ast;
  3. @name("Sampler")
  4. @description("Get color from texture and UV")
  5. @group("Property")
  6. class Sampler extends ShaderNodeHxsl {
  7. static var SRC = {
  8. @sginput var texture : Sampler2D;
  9. @sginput(uv) var uv : Vec2;
  10. @sgoutput var RGBA : Vec4;
  11. @sgoutput var RGB : Vec3;
  12. @sgoutput var A : Float;
  13. function fragment() {
  14. RGBA = texture.get(uv);
  15. RGB = RGBA.rgb;
  16. A = RGBA.a;
  17. }
  18. }
  19. // @input("Texture") var texture = SType.Sampler;
  20. // @input("UV") var uv = SType.Vec2;
  21. // var components = [X, Y, Z, W];
  22. // var componentsString = ["r", "g", "b", "a"];
  23. // override public function computeOutputs() {
  24. // addOutput("rgba", TVec(4, VFloat));
  25. // addOutput("r", TFloat);
  26. // addOutput("g", TFloat);
  27. // addOutput("b", TFloat);
  28. // addOutput("a", TFloat);
  29. // }
  30. // override public function build(key : String) : TExpr {
  31. // if (key == "rgba") {
  32. // var args = [];
  33. // var varArgs = [];
  34. // for (k in getInputInfoKeys()) {
  35. // args.push({ name: k, type: getInput(k).getType() });
  36. // var wantedType = ShaderType.getType(getInputInfo(k).type);
  37. // varArgs.push(getInput(k).getVar((wantedType != null) ? wantedType : null));
  38. // }
  39. // return {
  40. // p : null,
  41. // t : rgba.type,
  42. // e : TBinop(OpAssign, {
  43. // e: TVar(rgba),
  44. // p: null,
  45. // t: rgba.type
  46. // }, {
  47. // e: TCall({
  48. // e: TGlobal(Texture),
  49. // p: null,
  50. // t: TFun([
  51. // {
  52. // ret: rgba.type,
  53. // args: args
  54. // }
  55. // ])
  56. // }, varArgs),
  57. // p: null,
  58. // t: rgba.type
  59. // })
  60. // };
  61. // } else {
  62. // var arrayExpr = [];
  63. // if (!outputCompiled.get("rgba")) {
  64. // arrayExpr.push({ e : TVarDecl(rgba), t : rgba.type, p : null });
  65. // arrayExpr.push(build("rgba"));
  66. // outputCompiled.set("rgba", true);
  67. // }
  68. // var compIdx = componentsString.indexOf(key);
  69. // arrayExpr.push({ e: TBinop(OpAssign, {
  70. // e: TVar(getOutput(key)),
  71. // p: null,
  72. // t: getOutput(key).type
  73. // }, {e: TSwiz({
  74. // e: TVar(rgba),
  75. // p: null,
  76. // t: rgba.type
  77. // },
  78. // [components[compIdx]]),
  79. // p: null,
  80. // t: getOutput(key).type }),
  81. // p: null,
  82. // t: getOutput(key).type
  83. // });
  84. // if (arrayExpr.length > 1) {
  85. // return {
  86. // p : null,
  87. // t : TVoid,
  88. // e : TBlock(arrayExpr)
  89. // };
  90. // } else {
  91. // return arrayExpr[0];
  92. // }
  93. // }
  94. // }
  95. }