@babylonjs/smart-filters 0.3.2-alpha → 0.3.4-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/blocks/inputBlock.d.ts +19 -0
  2. package/dist/blocks/inputBlock.d.ts.map +1 -1
  3. package/dist/blocks/inputBlock.deserializer.d.ts +1 -3
  4. package/dist/blocks/inputBlock.deserializer.d.ts.map +1 -1
  5. package/dist/blocks/inputBlock.deserializer.js +14 -13
  6. package/dist/blocks/inputBlock.deserializer.js.map +1 -1
  7. package/dist/blocks/inputBlock.js.map +1 -1
  8. package/dist/blocks/inputBlock.serialization.types.d.ts +13 -0
  9. package/dist/blocks/inputBlock.serialization.types.d.ts.map +1 -1
  10. package/dist/blocks/inputBlock.serializer.d.ts.map +1 -1
  11. package/dist/blocks/inputBlock.serializer.js +12 -4
  12. package/dist/blocks/inputBlock.serializer.js.map +1 -1
  13. package/dist/blocks/outputBlock.d.ts +7 -0
  14. package/dist/blocks/outputBlock.d.ts.map +1 -1
  15. package/dist/blocks/outputBlock.js +7 -4
  16. package/dist/blocks/outputBlock.js.map +1 -1
  17. package/dist/blocks/shaderBlock.d.ts.map +1 -1
  18. package/dist/blocks/shaderBlock.js +5 -8
  19. package/dist/blocks/shaderBlock.js.map +1 -1
  20. package/dist/runtime/renderTargetGenerator.d.ts +3 -2
  21. package/dist/runtime/renderTargetGenerator.d.ts.map +1 -1
  22. package/dist/runtime/renderTargetGenerator.js +25 -14
  23. package/dist/runtime/renderTargetGenerator.js.map +1 -1
  24. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
  25. package/dist/serialization/smartFilterDeserializer.js +12 -5
  26. package/dist/serialization/smartFilterDeserializer.js.map +1 -1
  27. package/dist/serialization/smartFilterSerializer.js +4 -4
  28. package/dist/serialization/smartFilterSerializer.js.map +1 -1
  29. package/dist/serialization/v1/serialization.types.d.ts +4 -4
  30. package/dist/serialization/v1/serialization.types.d.ts.map +1 -1
  31. package/dist/smartFilter.d.ts +4 -1
  32. package/dist/smartFilter.d.ts.map +1 -1
  33. package/dist/smartFilter.js +7 -7
  34. package/dist/smartFilter.js.map +1 -1
  35. package/dist/utils/buildTools/buildShaders.d.ts +8 -0
  36. package/dist/utils/buildTools/buildShaders.d.ts.map +1 -0
  37. package/dist/utils/buildTools/buildShaders.js +12 -0
  38. package/dist/utils/buildTools/buildShaders.js.map +1 -0
  39. package/dist/utils/buildTools/shaderConverter.d.ts +12 -1
  40. package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
  41. package/dist/utils/buildTools/shaderConverter.js +4 -8
  42. package/dist/utils/buildTools/shaderConverter.js.map +1 -1
  43. package/dist/utils/buildTools/watchShaders.d.ts +8 -0
  44. package/dist/utils/buildTools/watchShaders.d.ts.map +1 -0
  45. package/dist/utils/buildTools/watchShaders.js +36 -0
  46. package/dist/utils/buildTools/watchShaders.js.map +1 -0
  47. package/dist/utils/renderTargetUtils.d.ts +24 -0
  48. package/dist/utils/renderTargetUtils.d.ts.map +1 -0
  49. package/dist/utils/renderTargetUtils.js +38 -0
  50. package/dist/utils/renderTargetUtils.js.map +1 -0
  51. package/package.json +5 -3
  52. package/src/blocks/inputBlock.deserializer.ts +20 -21
  53. package/src/blocks/inputBlock.serialization.types.ts +16 -0
  54. package/src/blocks/inputBlock.serializer.ts +10 -1
  55. package/src/blocks/inputBlock.ts +25 -1
  56. package/src/blocks/outputBlock.ts +10 -6
  57. package/src/blocks/shaderBlock.ts +11 -10
  58. package/src/runtime/renderTargetGenerator.ts +31 -14
  59. package/src/serialization/smartFilterDeserializer.ts +17 -6
  60. package/src/serialization/smartFilterSerializer.ts +4 -4
  61. package/src/serialization/v1/serialization.types.ts +4 -4
  62. package/src/smartFilter.ts +12 -9
  63. package/src/utils/buildTools/buildShaders.ts +13 -0
  64. package/src/utils/buildTools/shaderConverter.ts +4 -9
  65. package/src/utils/buildTools/watchShaders.ts +40 -0
  66. package/src/utils/renderTargetUtils.ts +56 -0
@@ -40,6 +40,11 @@ export type InputBlockEditorData<T extends ConnectionPointType> = T extends Conn
40
40
  * The URL of the texture, or default if null.
41
41
  */
42
42
  url: Nullable<string>;
43
+ /**
44
+ * If supplied, gives a hint as to which type of texture the URL points to.
45
+ * Default is assumed to be "image"
46
+ */
47
+ urlTypeHint: Nullable<"image" | "video">;
43
48
  /**
44
49
  * The anisotropic filtering level of the texture, or default if null.
45
50
  */
@@ -52,6 +57,20 @@ export type InputBlockEditorData<T extends ConnectionPointType> = T extends Conn
52
57
  * The file extension to use, or default if null.
53
58
  */
54
59
  forcedExtension: Nullable<string>;
60
+ /**
61
+ * Method to call to dispose of the texture - used in Editor scenarios when changing the texture.
62
+ * Not to be represented in serialized smart filters.
63
+ */
64
+ dispose: Nullable<() => void>;
65
+ } : T extends ConnectionPointType.Float ? {
66
+ /**
67
+ * If supplied, how this should be animated by the editor. Will not affect runtime behavior.
68
+ */
69
+ animationType: Nullable<"time">;
70
+ /**
71
+ * If supplied, the amount to change the value per millisecond when animating.
72
+ */
73
+ valueDeltaPerMs: Nullable<number>;
55
74
  } : {};
56
75
  /**
57
76
  * This represents any inputs used in the graph.
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAatD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAEtG;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,gBAAgB,CAE9E;AAED;;;GAGG;AACH,8BAAsB,cAAe,SAAQ,SAAS;IAClD;;OAEG;IACH,OAAuB,SAAS,SAAgB;IAEhD;;OAEG;IACH,kBAAyB,IAAI,EAAE,mBAAmB,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,mBAAmB,IAAI,CAAC,SAAS,mBAAmB,CAAC,OAAO,GACjG;IACI;;OAEG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtB;;OAEG;IACH,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEzB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrC,GACD,EAAE,CAAC;AAET;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,mBAAmB,CAAE,SAAQ,cAAc;IACzE;;OAEG;IACH,SAAgB,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAEtD;;OAEG;IACH,SAAgB,IAAI,EAAE,CAAC,CAAC;IAExB;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAQ;IAE5D;;OAEG;IACH,IAAW,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,CAExC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAE5C;IAED;;;;;;;OAOG;gBAEC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,EACP,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CAmB7D;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;KACvB,CAAC,IAAI,MAAM,OAAO,mBAAmB,GAAG,UAAU,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;CACvF,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"inputBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAatD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAEtG;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,IAAI,gBAAgB,CAE9E;AAED;;;GAGG;AACH,8BAAsB,cAAe,SAAQ,SAAS;IAClD;;OAEG;IACH,OAAuB,SAAS,SAAgB;IAEhD;;OAEG;IACH,kBAAyB,IAAI,EAAE,mBAAmB,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,mBAAmB,IAAI,CAAC,SAAS,mBAAmB,CAAC,OAAO,GACjG;IACI;;OAEG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,EAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAEzC;;OAEG;IACH,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEzB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,OAAO,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;CACjC,GACD,CAAC,SAAS,mBAAmB,CAAC,KAAK,GACjC;IACI;;OAEG;IACH,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrC,GACD,EAAE,CAAC;AAEX;;;;;;GAMG;AACH,qBAAa,UAAU,CAAC,CAAC,SAAS,mBAAmB,CAAE,SAAQ,cAAc;IACzE;;OAEG;IACH,SAAgB,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAEtD;;OAEG;IACH,SAAgB,IAAI,EAAE,CAAC,CAAC;IAExB;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAQ;IAE5D;;OAEG;IACH,IAAW,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC,CAExC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAE5C;IAED;;;;;;;OAOG;gBAEC,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,EACP,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;CAmB7D;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;KACvB,CAAC,IAAI,MAAM,OAAO,mBAAmB,GAAG,UAAU,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;CACvF,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC"}
@@ -2,13 +2,11 @@ import { InputBlock } from "./inputBlock.js";
2
2
  import { ConnectionPointType } from "../connection/connectionPointType.js";
3
3
  import type { SmartFilter } from "../smartFilter.js";
4
4
  import type { ISerializedBlockV1 } from "../serialization/v1/serialization.types.js";
5
- import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
6
5
  /**
7
6
  * V1 Input Block Deserializer
8
7
  * @param smartFilter - The SmartFilter to deserialize the block into
9
8
  * @param serializedBlock - The serialized block data
10
- * @param engine - The ThinEngine to use for loading textures
11
9
  * @returns A deserialized InputBlock
12
10
  */
13
- export declare function inputBlockDeserializer(smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine): InputBlock<ConnectionPointType.Texture> | InputBlock<ConnectionPointType.Boolean> | InputBlock<ConnectionPointType.Float> | InputBlock<ConnectionPointType.Color3> | InputBlock<ConnectionPointType.Color4> | InputBlock<ConnectionPointType.Vector2>;
11
+ export declare function inputBlockDeserializer(smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1): InputBlock<ConnectionPointType.Texture> | InputBlock<ConnectionPointType.Boolean> | InputBlock<ConnectionPointType.Float> | InputBlock<ConnectionPointType.Color3> | InputBlock<ConnectionPointType.Color4> | InputBlock<ConnectionPointType.Vector2>;
14
12
  //# sourceMappingURL=inputBlock.deserializer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.deserializer.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAGxE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAClC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,yPAwCrB"}
1
+ {"version":3,"file":"inputBlock.deserializer.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAErF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,yPA8CnG"}
@@ -1,36 +1,37 @@
1
1
  import { InputBlock } from "./inputBlock.js";
2
2
  import { ConnectionPointType } from "../connection/connectionPointType.js";
3
- import { createImageTexture } from "../utils/textureLoaders.js";
4
3
  /**
5
4
  * V1 Input Block Deserializer
6
5
  * @param smartFilter - The SmartFilter to deserialize the block into
7
6
  * @param serializedBlock - The serialized block data
8
- * @param engine - The ThinEngine to use for loading textures
9
7
  * @returns A deserialized InputBlock
10
8
  */
11
- export function inputBlockDeserializer(smartFilter, serializedBlock, engine) {
9
+ export function inputBlockDeserializer(smartFilter, serializedBlock) {
12
10
  const blockData = serializedBlock.data;
13
11
  switch (blockData.inputType) {
14
12
  case ConnectionPointType.Boolean:
15
13
  return new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Boolean, blockData.value);
16
- case ConnectionPointType.Float:
17
- return new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Float, blockData.value);
18
- case ConnectionPointType.Texture: {
19
- // If information necessary to load an image was serialized, load the image
20
- const texture = blockData.url
21
- ? createImageTexture(engine, blockData.url, blockData.flipY)
22
- : null;
23
- if (texture && blockData.anisotropicFilteringLevel !== null) {
24
- texture.anisotropicFilteringLevel = blockData.anisotropicFilteringLevel;
14
+ case ConnectionPointType.Float: {
15
+ const inputBlock = new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Float, blockData.value);
16
+ if (blockData.animationType) {
17
+ inputBlock.editorData = {
18
+ animationType: blockData.animationType,
19
+ valueDeltaPerMs: blockData.valueDeltaPerMs,
20
+ };
25
21
  }
22
+ return inputBlock;
23
+ }
24
+ case ConnectionPointType.Texture: {
26
25
  // Create the input block
27
- const inputBlock = new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Texture, texture);
26
+ const inputBlock = new InputBlock(smartFilter, serializedBlock.name, ConnectionPointType.Texture, null);
28
27
  // If editor data was serialized, set it on the deserialized block
29
28
  inputBlock.editorData = {
30
29
  url: blockData.url,
30
+ urlTypeHint: blockData.urlTypeHint,
31
31
  anisotropicFilteringLevel: blockData.anisotropicFilteringLevel,
32
32
  flipY: blockData.flipY,
33
33
  forcedExtension: blockData.forcedExtension,
34
+ dispose: null,
34
35
  };
35
36
  return inputBlock;
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.deserializer.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIhE;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAClC,WAAwB,EACxB,eAAmC,EACnC,MAAkB;IAElB,MAAM,SAAS,GAAG,eAAe,CAAC,IAAgC,CAAC;IAEnE,QAAQ,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,mBAAmB,CAAC,OAAO;YAC5B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3G,KAAK,mBAAmB,CAAC,KAAK;YAC1B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QACzG,KAAK,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,2EAA2E;YAC3E,MAAM,OAAO,GAA0B,SAAS,CAAC,GAAG;gBAChD,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC;gBAC5D,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,OAAO,IAAI,SAAS,CAAC,yBAAyB,KAAK,IAAI,EAAE,CAAC;gBAC1D,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,yBAAyB,CAAC;YAC5E,CAAC;YAED,yBAAyB;YACzB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE3G,kEAAkE;YAClE,UAAU,CAAC,UAAU,GAAG;gBACpB,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,yBAAyB,EAAE,SAAS,CAAC,yBAAyB;gBAC9D,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,eAAe,EAAE,SAAS,CAAC,eAAe;aAC7C,CAAC;YAEF,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,KAAK,mBAAmB,CAAC,MAAM;YAC3B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1G,KAAK,mBAAmB,CAAC,MAAM;YAC3B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1G,KAAK,mBAAmB,CAAC,OAAO;YAC5B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/G,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC7E,CAAC"}
1
+ {"version":3,"file":"inputBlock.deserializer.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.deserializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAI3E;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAwB,EAAE,eAAmC;IAChG,MAAM,SAAS,GAAG,eAAe,CAAC,IAAgC,CAAC;IAEnE,QAAQ,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,mBAAmB,CAAC,OAAO;YAC5B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3G,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,UAAU,CAC7B,WAAW,EACX,eAAe,CAAC,IAAI,EACpB,mBAAmB,CAAC,KAAK,EACzB,SAAS,CAAC,KAAK,CAClB,CAAC;YACF,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;gBAC1B,UAAU,CAAC,UAAU,GAAG;oBACpB,aAAa,EAAE,SAAS,CAAC,aAAa;oBACtC,eAAe,EAAE,SAAS,CAAC,eAAe;iBAC7C,CAAC;YACN,CAAC;YACD,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,KAAK,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,yBAAyB;YACzB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAExG,kEAAkE;YAClE,UAAU,CAAC,UAAU,GAAG;gBACpB,GAAG,EAAE,SAAS,CAAC,GAAG;gBAClB,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,yBAAyB,EAAE,SAAS,CAAC,yBAAyB;gBAC9D,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,eAAe,EAAE,SAAS,CAAC,eAAe;gBAC1C,OAAO,EAAE,IAAI;aAChB,CAAC;YAEF,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,KAAK,mBAAmB,CAAC,MAAM;YAC3B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1G,KAAK,mBAAmB,CAAC,MAAM;YAC3B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1G,KAAK,mBAAmB,CAAC,OAAO;YAC5B,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/G,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AAC7E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E;;;;GAIG;AACH,SAAS,aAAa,CAClB,KAA+C;IAE/C,OAAO,KAAK,IAAK,KAA0C,CAAC,KAAK,KAAK,SAAS,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAChD,OAAQ,KAAiD,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAC/C,OAAQ,KAA0B,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,OAAgB,cAAe,SAAQ,SAAS;;AAClD;;GAEG;AACoB,wBAAS,GAAG,YAAY,CAAC;AAmCpD;;;;;;GAMG;AACH,MAAM,OAAO,UAA0C,SAAQ,cAAc;IAgBzE;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAqB;QACzC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,YACI,WAAwB,EACxB,IAAY,EACZ,IAAO,EACP,YAAsD;QAEtD,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAjC7B;;WAEG;QACI,eAAU,GAAsC,IAAI,CAAC;QA+BxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,0BAA0B,CACzC,QAAQ,EACR,IAAI,EACJ,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAC7E,CAAC;QAEF,4FAA4F;QAC5F,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"inputBlock.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E;;;;GAIG;AACH,SAAS,aAAa,CAClB,KAA+C;IAE/C,OAAO,KAAK,IAAK,KAA0C,CAAC,KAAK,KAAK,SAAS,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAgB;IAChD,OAAQ,KAAiD,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAC/C,OAAQ,KAA0B,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,OAAgB,cAAe,SAAQ,SAAS;;AAClD;;GAEG;AACoB,wBAAS,GAAG,YAAY,CAAC;AA2DpD;;;;;;GAMG;AACH,MAAM,OAAO,UAA0C,SAAQ,cAAc;IAgBzE;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAqB;QACzC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,YACI,WAAwB,EACxB,IAAY,EACZ,IAAO,EACP,YAAsD;QAEtD,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAjC7B;;WAEG;QACI,eAAU,GAAsC,IAAI,CAAC;QA+BxD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,0BAA0B,CACzC,QAAQ,EACR,IAAI,EACJ,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAC7E,CAAC;QAEF,4FAA4F;QAC5F,IAAI,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACrC,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;IACL,CAAC;CACJ"}
@@ -9,6 +9,11 @@ export type TextureInputBlockData = {
9
9
  inputType: ConnectionPointType.Texture;
10
10
  /** The URL, if available, of the texture */
11
11
  url: Nullable<string>;
12
+ /**
13
+ * If supplied, gives a hint as to which type of texture the URL points to.
14
+ * Default is assumed to be "image"
15
+ */
16
+ urlTypeHint: Nullable<"image" | "video">;
12
17
  /**
13
18
  * Defines the anisotropic level to use, or default if null
14
19
  */
@@ -39,6 +44,14 @@ export type FloatInputBlockData = {
39
44
  inputType: ConnectionPointType.Float;
40
45
  /** The value of the input block */
41
46
  value: number;
47
+ /**
48
+ * If supplied, how this should be animated by the editor. Will not affect runtime behavior.
49
+ */
50
+ animationType: Nullable<"time">;
51
+ /**
52
+ * If supplied, the amount to change the value per millisecond when animating.
53
+ */
54
+ valueDeltaPerMs: Nullable<number>;
42
55
  };
43
56
  /**
44
57
  * The data for an InputBlock for ConnectionPointType.Color3 inputs
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.serialization.types.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.serialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;IAEvC,4CAA4C;IAC5C,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtB;;OAEG;IACH,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEzB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;IAEvC,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAC9B,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC;IAErC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAEtC,mCAAmC;IACnC,KAAK,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAEtC,mCAAmC;IACnC,KAAK,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;IAEvC,mCAAmC;IACnC,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAC9B,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,qBAAqB,CAAC"}
1
+ {"version":3,"file":"inputBlock.serialization.types.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.serialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;IAEvC,4CAA4C;IAC5C,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,EAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAEzC;;OAEG;IACH,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5C;;OAEG;IACH,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEzB;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;IAEvC,mCAAmC;IACnC,KAAK,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAC9B,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC;IAErC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC;;OAEG;IACH,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAEtC,mCAAmC;IACnC,KAAK,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAEtC,mCAAmC;IACnC,KAAK,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAChC,kCAAkC;IAClC,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;IAEvC,mCAAmC;IACnC,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAC9B,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.serializer.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.serializer.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAsGlF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAclC,CAAC"}
1
+ {"version":3,"file":"inputBlock.serializer.d.ts","sourceRoot":"","sources":["../../src/blocks/inputBlock.serializer.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AA+GlF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAclC,CAAC"}
@@ -28,14 +28,19 @@ function serializeInputBlockData(inputBlock) {
28
28
  * @returns The serialized data for the InputBlock
29
29
  */
30
30
  function serializeTextureInputBlock(inputBlock) {
31
- var _a, _b, _c, _d, _e;
31
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
32
32
  const internalTexture = (_a = inputBlock.runtimeValue.value) === null || _a === void 0 ? void 0 : _a.getInternalTexture();
33
33
  const forcedExtension = (_b = internalTexture === null || internalTexture === void 0 ? void 0 : internalTexture._extension) !== null && _b !== void 0 ? _b : null;
34
+ let url = (_c = internalTexture === null || internalTexture === void 0 ? void 0 : internalTexture.url) !== null && _c !== void 0 ? _c : null;
35
+ if (url === "" || !url) {
36
+ url = (_e = (_d = inputBlock.editorData) === null || _d === void 0 ? void 0 : _d.url) !== null && _e !== void 0 ? _e : null;
37
+ }
34
38
  return {
35
39
  inputType: ConnectionPointType.Texture,
36
- url: (_c = internalTexture === null || internalTexture === void 0 ? void 0 : internalTexture.url) !== null && _c !== void 0 ? _c : null,
37
- flipY: (_d = internalTexture === null || internalTexture === void 0 ? void 0 : internalTexture.invertY) !== null && _d !== void 0 ? _d : null,
38
- anisotropicFilteringLevel: (_e = internalTexture === null || internalTexture === void 0 ? void 0 : internalTexture.anisotropicFilteringLevel) !== null && _e !== void 0 ? _e : null,
40
+ url,
41
+ urlTypeHint: (_g = (_f = inputBlock.editorData) === null || _f === void 0 ? void 0 : _f.urlTypeHint) !== null && _g !== void 0 ? _g : null,
42
+ flipY: (_h = internalTexture === null || internalTexture === void 0 ? void 0 : internalTexture.invertY) !== null && _h !== void 0 ? _h : null,
43
+ anisotropicFilteringLevel: (_j = internalTexture === null || internalTexture === void 0 ? void 0 : internalTexture.anisotropicFilteringLevel) !== null && _j !== void 0 ? _j : null,
39
44
  forcedExtension: forcedExtension !== "" ? forcedExtension : null,
40
45
  };
41
46
  }
@@ -56,9 +61,12 @@ function serializeBooleanInputBlock(inputBlock) {
56
61
  * @returns The serialized data for the InputBlock
57
62
  */
58
63
  function serializeFloatInputBlock(inputBlock) {
64
+ var _a, _b, _c, _d;
59
65
  return {
60
66
  inputType: ConnectionPointType.Float,
61
67
  value: inputBlock.runtimeValue.value,
68
+ animationType: (_b = (_a = inputBlock.editorData) === null || _a === void 0 ? void 0 : _a.animationType) !== null && _b !== void 0 ? _b : null,
69
+ valueDeltaPerMs: (_d = (_c = inputBlock.editorData) === null || _c === void 0 ? void 0 : _c.valueDeltaPerMs) !== null && _d !== void 0 ? _d : null,
62
70
  };
63
71
  }
64
72
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"inputBlock.serializer.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inputBlock.serializer.js","sourceRoot":"","sources":["../../src/blocks/inputBlock.serializer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { InitializationData, SmartFilter } from "../smartFilter";
2
2
  import { ConnectionPointType } from "../connection/connectionPointType.js";
3
3
  import { BaseBlock } from "./baseBlock.js";
4
+ import type { Nullable } from "@babylonjs/core/types";
5
+ import type { ThinRenderTargetTexture } from "@babylonjs/core/Materials/Textures/thinRenderTargetTexture";
4
6
  /**
5
7
  * The output block of a smart filter.
6
8
  *
@@ -17,6 +19,11 @@ export declare class OutputBlock extends BaseBlock {
17
19
  * This takes a texture as input.
18
20
  */
19
21
  readonly input: import("..").ConnectionPoint<ConnectionPointType.Texture>;
22
+ /**
23
+ * If supplied, the Smart Filter will render into this texture. Otherwise, it renders
24
+ * into the the canvas or WebGL context the ThinEngine is using for rendering.
25
+ */
26
+ renderTargetTexture: Nullable<ThinRenderTargetTexture>;
20
27
  private _copyBlock;
21
28
  /**
22
29
  * Create a new output block.
@@ -1 +1 @@
1
- {"version":3,"file":"outputBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/outputBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAK3C;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC;;OAEG;IACH,OAAuB,SAAS,SAAiB;IAEjD;;;OAGG;IACH,SAAgB,KAAK,4DAA6D;IAElF,OAAO,CAAC,UAAU,CAAmB;IAErC;;;OAGG;gBACS,WAAW,EAAE,WAAW;IAMpC,OAAO,CAAC,aAAa;IASrB;;OAEG;IACa,iBAAiB,IAAI,IAAI;IAQzC;;OAEG;IACa,oBAAoB,IAAI,IAAI;IAQ5C;;;;OAIG;IACa,qCAAqC,CACjD,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO,GACrB,IAAI;CAoBV"}
1
+ {"version":3,"file":"outputBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/outputBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AAG1G;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC;;OAEG;IACH,OAAuB,SAAS,SAAiB;IAEjD;;;OAGG;IACH,SAAgB,KAAK,4DAA6D;IAElF;;;OAGG;IACI,mBAAmB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAQ;IAErE,OAAO,CAAC,UAAU,CAAmB;IAErC;;;OAGG;gBACS,WAAW,EAAE,WAAW;IAMpC,OAAO,CAAC,aAAa;IASrB;;OAEG;IACa,iBAAiB,IAAI,IAAI;IAQzC;;OAEG;IACa,oBAAoB,IAAI,IAAI;IAQ5C;;;;OAIG;IACa,qCAAqC,CACjD,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO,GACrB,IAAI;CAgBV"}
@@ -2,7 +2,7 @@ import { ConnectionPointType } from "../connection/connectionPointType.js";
2
2
  import { BaseBlock } from "./baseBlock.js";
3
3
  import { CopyBlock } from "./copyBlock.js";
4
4
  import { ShaderRuntime } from "../runtime/shaderRuntime.js";
5
- import { createCommand } from "../command/command.js";
5
+ import { registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
6
6
  /**
7
7
  * The output block of a smart filter.
8
8
  *
@@ -21,6 +21,11 @@ export class OutputBlock extends BaseBlock {
21
21
  * This takes a texture as input.
22
22
  */
23
23
  this.input = this._registerInput("input", ConnectionPointType.Texture);
24
+ /**
25
+ * If supplied, the Smart Filter will render into this texture. Otherwise, it renders
26
+ * into the the canvas or WebGL context the ThinEngine is using for rendering.
27
+ */
28
+ this.renderTargetTexture = null;
24
29
  this._copyBlock = null;
25
30
  }
26
31
  _getCopyBlock() {
@@ -61,9 +66,7 @@ export class OutputBlock extends BaseBlock {
61
66
  const shaderBlockRuntime = new ShaderRuntime(runtime.effectRenderer, copyBlock.getShaderProgram(), copyBlock.getShaderBinding());
62
67
  initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
63
68
  runtime.registerResource(shaderBlockRuntime);
64
- runtime.registerCommand(createCommand(`${this.getClassName()}.renderToCanvas`, this, () => {
65
- shaderBlockRuntime.renderToCanvas();
66
- }));
69
+ registerFinalRenderCommand(this.renderTargetTexture, runtime, this, shaderBlockRuntime);
67
70
  super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
68
71
  }
69
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"outputBlock.js","sourceRoot":"","sources":["../../src/blocks/outputBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IActC;;;OAGG;IACH,YAAY,WAAwB;QAChC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAbjC;;;WAGG;QACa,UAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAW9E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACa,iBAAiB;QAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACa,oBAAoB;QAChC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACa,qCAAqC,CACjD,kBAAsC,EACtC,WAAoB;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAE3C,MAAM,kBAAkB,GAAG,IAAI,aAAa,CACxC,OAAO,CAAC,cAAc,EACtB,SAAS,CAAC,gBAAgB,EAAE,EAC5B,SAAS,CAAC,gBAAgB,EAAE,CAC/B,CAAC;QACF,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAChF,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAE7C,OAAO,CAAC,eAAe,CACnB,aAAa,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE;YAC9D,kBAAkB,CAAC,cAAc,EAAE,CAAC;QACxC,CAAC,CAAC,CACL,CAAC;QAEF,KAAK,CAAC,qCAAqC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACjF,CAAC;;AAjFD;;GAEG;AACoB,qBAAS,GAAG,aAAa,AAAhB,CAAiB"}
1
+ {"version":3,"file":"outputBlock.js","sourceRoot":"","sources":["../../src/blocks/outputBlock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAoBtC;;;OAGG;IACH,YAAY,WAAwB;QAChC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAnBjC;;;WAGG;QACa,UAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAElF;;;WAGG;QACI,wBAAmB,GAAsC,IAAI,CAAC;QAWjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACa,iBAAiB;QAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACa,oBAAoB;QAChC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACa,qCAAqC,CACjD,kBAAsC,EACtC,WAAoB;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAE3C,MAAM,kBAAkB,GAAG,IAAI,aAAa,CACxC,OAAO,CAAC,cAAc,EACtB,SAAS,CAAC,gBAAgB,EAAE,EAC5B,SAAS,CAAC,gBAAgB,EAAE,CAC/B,CAAC;QACF,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAChF,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAE7C,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAExF,KAAK,CAAC,qCAAqC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACjF,CAAC;;AAnFD;;GAEG;AACoB,qBAAS,GAAG,aAAa,AAAhB,CAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"shaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"AACA,OAAO,2DAA2D,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD;;;;;;GAMG;AACH,8BAAsB,WAAY,SAAQ,gBAAgB;IACtD;;OAEG;IACH,OAAuB,SAAS,SAAiB;IAEjD;;;;OAIG;aACa,gBAAgB,IAAI,OAAO;IAE3C;;OAEG;IACH,OAAc,UAAU,EAAE,aAAa,CAAC;IAExC;;OAEG;IACH,SAAgB,MAAM,+CAA+D;IAErF,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IAEpC;;OAEG;IACH,IAAW,YAAY,IAOQ,MAAM,CALpC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAED;;;OAGG;IACa,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI;IASzG,SAAS,CAAC,iCAAiC,IAAI,eAAe;IAc9D;;;;;OAKG;gBACS,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,UAAQ;IAI/E;;;OAGG;IACI,gBAAgB;IAIvB;;;;OAIG;IACa,qCAAqC,CACjD,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO,GACrB,IAAI;CAgCV"}
1
+ {"version":3,"file":"shaderBlock.d.ts","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"AACA,OAAO,2DAA2D,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD;;;;;;GAMG;AACH,8BAAsB,WAAY,SAAQ,gBAAgB;IACtD;;OAEG;IACH,OAAuB,SAAS,SAAiB;IAEjD;;;;OAIG;aACa,gBAAgB,IAAI,OAAO;IAE3C;;OAEG;IACH,OAAc,UAAU,EAAE,aAAa,CAAC;IAExC;;OAEG;IACH,SAAgB,MAAM,+CAA+D;IAErF,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IAEpC;;OAEG;IACH,IAAW,YAAY,IAOQ,MAAM,CALpC;IAED;;OAEG;IACH,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAED;;;OAGG;IACa,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI;IASzG,SAAS,CAAC,iCAAiC,IAAI,eAAe;IAc9D;;;;;OAKG;gBACS,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,UAAQ;IAI/E;;;OAGG;IACI,gBAAgB;IAIvB;;;;OAIG;IACa,qCAAqC,CACjD,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO,GACrB,IAAI;CAgCV"}
@@ -4,6 +4,7 @@ import { ConnectionPointType } from "../connection/connectionPointType.js";
4
4
  import { createCommand } from "../command/command.js";
5
5
  import { DisableableBlock } from "./disableableBlock.js";
6
6
  import { undecorateSymbol } from "../utils/shaderCodeUtils.js";
7
+ import { getRenderTarget, registerFinalRenderCommand } from "../utils/renderTargetUtils.js";
7
8
  /**
8
9
  * This is the base class for all shader blocks.
9
10
  *
@@ -73,22 +74,18 @@ export class ShaderBlock extends DisableableBlock {
73
74
  * @param finalOutput - Defines if the block is the final output of the smart filter
74
75
  */
75
76
  generateCommandsAndGatherInitPromises(initializationData, finalOutput) {
77
+ var _a;
76
78
  const runtime = initializationData.runtime;
77
79
  const shaderBlockRuntime = new ShaderRuntime(runtime.effectRenderer, this.getShaderProgram(), this.getShaderBinding());
78
80
  initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
79
81
  runtime.registerResource(shaderBlockRuntime);
80
82
  if (finalOutput) {
81
- runtime.registerCommand(createCommand(`${this.getClassName()}.renderToCanvas`, this, () => {
82
- shaderBlockRuntime.renderToCanvas();
83
- }));
83
+ registerFinalRenderCommand(initializationData.outputBlock.renderTargetTexture, runtime, this, shaderBlockRuntime);
84
84
  }
85
85
  else {
86
- const rtt = this.output.runtimeData && this.output.runtimeData.value.renderTarget;
87
- if (!rtt) {
88
- throw new Error("ShaderBlock does not have a render target texture.");
89
- }
86
+ const renderTarget = getRenderTarget((_a = this.output.runtimeData) === null || _a === void 0 ? void 0 : _a.value, this.getClassName());
90
87
  runtime.registerCommand(createCommand(`${this.getClassName()}.render`, this, () => {
91
- shaderBlockRuntime.renderToTexture(rtt);
88
+ shaderBlockRuntime.renderToTexture(renderTarget);
92
89
  }));
93
90
  }
94
91
  super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
@@ -1 +1 @@
1
- {"version":3,"file":"shaderBlock.js","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shaderBlock.js","sourceRoot":"","sources":["../../src/blocks/shaderBlock.ts"],"names":[],"mappings":"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"}
@@ -17,16 +17,17 @@ export declare class RenderTargetGenerator {
17
17
  get numTargetsCreated(): number;
18
18
  /**
19
19
  * Sets the output textures for the ShaderBlocks of the smart filter.
20
- * @param smart - The smart filter to generate the render targets for.
20
+ * @param smartFilter - The smart filter to generate the render targets for.
21
21
  * @param initializationData - The initialization data to use.
22
22
  */
23
- setOutputTextures(smart: SmartFilter, initializationData: InitializationData): void;
23
+ setOutputTextures(smartFilter: SmartFilter, initializationData: InitializationData): void;
24
24
  private _findAvailableTexture;
25
25
  private _getTexture;
26
26
  private _releaseTexture;
27
27
  /**
28
28
  * Creates an offscreen texture to hold on the result of the block rendering.
29
29
  * @param runtime - The current runtime we create the texture for
30
+ * @param smartFilter - The smart filter the texture is created for
30
31
  * @param ratio - The ratio of the texture to create compared to the final output
31
32
  * @returns The render target texture
32
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"renderTargetGenerator.d.ts","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAqBtE;;GAEG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,kBAAkB,CAAC;IAE3B;;;OAGG;gBACS,QAAQ,UAAO;IAM3B;;OAEG;IACH,IAAW,iBAAiB,WAE3B;IAED;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB;IAqDnF,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,eAAe;IAoBvB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CA6BzB"}
1
+ {"version":3,"file":"renderTargetGenerator.d.ts","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAqBtE;;GAEG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,kBAAkB,CAAC;IAE3B;;;OAGG;gBACS,QAAQ,UAAO;IAM3B;;OAEG;IACH,IAAW,iBAAiB,WAE3B;IAED;;;;OAIG;IACI,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB;IAqDzF,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,eAAe;IAoBvB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CAyCzB"}
@@ -23,19 +23,19 @@ export class RenderTargetGenerator {
23
23
  }
24
24
  /**
25
25
  * Sets the output textures for the ShaderBlocks of the smart filter.
26
- * @param smart - The smart filter to generate the render targets for.
26
+ * @param smartFilter - The smart filter to generate the render targets for.
27
27
  * @param initializationData - The initialization data to use.
28
28
  */
29
- setOutputTextures(smart, initializationData) {
30
- smart.output.ownerBlock.visit(initializationData, (block, initializationData) => {
29
+ setOutputTextures(smartFilter, initializationData) {
30
+ smartFilter.output.ownerBlock.visit(initializationData, (block, initializationData) => {
31
31
  if (!(block instanceof ShaderBlock)) {
32
32
  return;
33
33
  }
34
34
  let refCountedTexture = null;
35
35
  // We assign a texture to the output of the block only if this is not the last block in the chain,
36
36
  // i.e. not the block connected to the smart output block (in which case the output of the block is to the canvas and not a texture).
37
- if (!block.output.endpoints.some((cp) => cp.ownerBlock === smart.output.ownerBlock)) {
38
- refCountedTexture = this._getTexture(initializationData.runtime, block.textureRatio);
37
+ if (!block.output.endpoints.some((cp) => cp.ownerBlock === smartFilter.output.ownerBlock)) {
38
+ refCountedTexture = this._getTexture(initializationData.runtime, block.textureRatio, smartFilter);
39
39
  if (!block.output.runtimeData) {
40
40
  const runtimeOutput = createStrongRef(refCountedTexture.texture);
41
41
  block.output.runtimeData = runtimeOutput;
@@ -81,11 +81,11 @@ export class RenderTargetGenerator {
81
81
  }
82
82
  return null;
83
83
  }
84
- _getTexture(runtime, ratio) {
84
+ _getTexture(runtime, ratio, smartFilter) {
85
85
  if (!this._optimize) {
86
86
  this._numTargetsCreated++;
87
87
  return {
88
- texture: this._createTexture(runtime, ratio),
88
+ texture: this._createTexture(runtime, smartFilter, ratio),
89
89
  refCount: 0,
90
90
  };
91
91
  }
@@ -97,7 +97,7 @@ export class RenderTargetGenerator {
97
97
  let refCountedTexture = this._findAvailableTexture(ratio);
98
98
  if (!refCountedTexture) {
99
99
  refCountedTexture = {
100
- texture: this._createTexture(runtime, ratio),
100
+ texture: this._createTexture(runtime, smartFilter, ratio),
101
101
  refCount: 0,
102
102
  };
103
103
  refCountedTextures.add(refCountedTexture);
@@ -124,10 +124,12 @@ export class RenderTargetGenerator {
124
124
  /**
125
125
  * Creates an offscreen texture to hold on the result of the block rendering.
126
126
  * @param runtime - The current runtime we create the texture for
127
+ * @param smartFilter - The smart filter the texture is created for
127
128
  * @param ratio - The ratio of the texture to create compared to the final output
128
129
  * @returns The render target texture
129
130
  */
130
- _createTexture(runtime, ratio) {
131
+ _createTexture(runtime, smartFilter, ratio) {
132
+ var _a;
131
133
  const engine = runtime.engine;
132
134
  // We are only rendering full screen post process without depth or stencil information
133
135
  const setup = {
@@ -136,12 +138,21 @@ export class RenderTargetGenerator {
136
138
  generateMipMaps: false,
137
139
  samplingMode: 2, // Babylon Constants.TEXTURE_LINEAR_LINEAR,
138
140
  };
139
- // The size of the output is by default the current rendering size of the engine
140
- const width = engine.getRenderWidth(true);
141
- const height = engine.getRenderHeight(true);
141
+ // Get the smartFilter output size - either from the output block's renderTargetTexture or the engine's render size
142
+ let outputWidth;
143
+ let outputHeight;
144
+ const renderTargetTextureSize = (_a = smartFilter.outputBlock.renderTargetTexture) === null || _a === void 0 ? void 0 : _a.getSize();
145
+ if (renderTargetTextureSize) {
146
+ outputWidth = renderTargetTextureSize.width;
147
+ outputHeight = renderTargetTextureSize.height;
148
+ }
149
+ else {
150
+ outputWidth = engine.getRenderWidth(true);
151
+ outputHeight = engine.getRenderHeight(true);
152
+ }
142
153
  const size = {
143
- width: Math.floor(width * ratio),
144
- height: Math.floor(height * ratio),
154
+ width: Math.floor(outputWidth * ratio),
155
+ height: Math.floor(outputHeight * ratio),
145
156
  };
146
157
  // Creates frame buffers for effects
147
158
  const finalRenderTarget = new ThinRenderTargetTexture(engine, size, setup);
@@ -1 +1 @@
1
- {"version":3,"file":"renderTargetGenerator.js","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AAKxG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAiB3E;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAK9B;;;OAGG;IACH,YAAY,QAAQ,GAAG,IAAI;QACvB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,iBAAiB,CAAC,KAAkB,EAAE,kBAAsC;QAC/E,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CACzB,kBAAkB,EAClB,CAAC,KAAgB,EAAE,kBAAsC,EAAE,EAAE;YACzD,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;gBAClC,OAAO;YACX,CAAC;YAED,IAAI,iBAAiB,GAAgC,IAAI,CAAC;YAE1D,kGAAkG;YAClG,qIAAqI;YACrI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClF,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;gBAErF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC5B,MAAM,aAAa,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBACjE,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACJ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC;gBAC/D,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;oBAC7B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBACjC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;4BAClC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gCACvB,iBAAkB,CAAC,QAAQ,EAAE,CAAC;4BAClC,CAAC;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;gBAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO,EAAE,CAAC;wBAC/E,SAAS;oBACb,CAAC;oBACD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC;oBACpD,IACI,cAAc,YAAY,WAAW;wBACrC,cAAc,CAAC,MAAM,CAAC,WAAW;wBACjC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EACzC,CAAC;wBACC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;oBAC/F,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC,CACJ,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAEO,qBAAqB,CAAC,KAAa;QACvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;YACjD,IAAI,iBAAiB,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnC,OAAO,iBAAiB,CAAC;YAC7B,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,OAAmC,EAAE,KAAa;QAClE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;gBACH,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC5C,QAAQ,EAAE,CAAC;aACd,CAAC;QACN,CAAC;QAED,IAAI,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACrB,iBAAiB,GAAG;gBAChB,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC5C,QAAQ,EAAE,CAAC;aACd,CAAC;YACF,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAEO,eAAe,CAAC,OAAoB,EAAE,KAAa;QACvD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yEAAyE,KAAK,GAAG,CAAC,CAAC;QACvG,CAAC;QAED,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;YACjD,IAAI,iBAAiB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;gBAC7B,OAAO;YACX,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,6DAA6D,KAAK,GAAG,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,OAAmC,EAAE,KAAa;QACrE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,sFAAsF;QACtF,MAAM,KAAK,GAAG;YACV,mBAAmB,EAAE,KAAK;YAC1B,qBAAqB,EAAE,KAAK;YAC5B,eAAe,EAAE,KAAK;YACtB,YAAY,EAAE,CAAC,EAAE,2CAA2C;SAC/D,CAAC;QAEF,gFAAgF;QAChF,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG;YACT,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;SACrC,CAAC;QAEF,oCAAoC;QACpC,MAAM,iBAAiB,GAAG,IAAI,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3E,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAE5C,6DAA6D;QAC7D,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5B,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC;QAE5B,OAAO,iBAAiB,CAAC;IAC7B,CAAC;CACJ"}
1
+ {"version":3,"file":"renderTargetGenerator.js","sourceRoot":"","sources":["../../src/runtime/renderTargetGenerator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAIrB,MAAM,0BAA0B,CAAC;AAGlC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA8C;IAEpF;;;OAGG;gBACgB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAetE;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAQ1E,cAAc;CAsE/B"}
1
+ {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAIrB,MAAM,0BAA0B,CAAC;AAGlC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA8C;IAEpF;;;OAGG;gBACgB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAetE;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAQ1E,cAAc;CAiF/B"}
@@ -17,7 +17,7 @@ export class SmartFilterDeserializer {
17
17
  this._blockDeserializersV1 = new Map();
18
18
  this._blockDeserializersV1 = blockDeserializers;
19
19
  // Add in the core block deserializers - they are not delay loaded, so they are wrapped in Promise.resolve()
20
- this._blockDeserializersV1.set(InputBlock.ClassName, (smartFilter, serializedBlock, engine) => Promise.resolve(inputBlockDeserializer(smartFilter, serializedBlock, engine)));
20
+ this._blockDeserializersV1.set(InputBlock.ClassName, (smartFilter, serializedBlock) => Promise.resolve(inputBlockDeserializer(smartFilter, serializedBlock)));
21
21
  this._blockDeserializersV1.set(OutputBlock.ClassName, (smartFilter) => Promise.resolve(smartFilter.output.ownerBlock));
22
22
  }
23
23
  /**
@@ -35,7 +35,9 @@ export class SmartFilterDeserializer {
35
35
  }
36
36
  async _deserializeV1(engine, serializedSmartFilter) {
37
37
  const smartFilter = new SmartFilter(serializedSmartFilter.name);
38
- const blockMap = new Map();
38
+ const blockIdMap = new Map();
39
+ // Only needed for smart filters saved before we started using uniqueIds for the maps, didn't warrant new version
40
+ const blockNameMap = new Map();
39
41
  // Deserialize the SmartFilter level data
40
42
  smartFilter.comments = serializedSmartFilter.comments;
41
43
  smartFilter.editorData = serializedSmartFilter.editorData;
@@ -56,14 +58,17 @@ export class SmartFilterDeserializer {
56
58
  // are higher than this one.
57
59
  UniqueIdGenerator.EnsureIdsGreaterThan(newBlock.uniqueId);
58
60
  // Save in the map
59
- blockMap.set(newBlock.name, newBlock);
61
+ blockIdMap.set(newBlock.uniqueId, newBlock);
62
+ blockNameMap.set(newBlock.name, newBlock);
60
63
  }));
61
64
  });
62
65
  await Promise.all(blockDeserializationWork);
63
66
  // Deserialize the connections
64
67
  serializedSmartFilter.connections.forEach((connection) => {
65
68
  // Find the source block and its connection point's connectTo function
66
- const sourceBlock = blockMap.get(connection.outputBlock);
69
+ const sourceBlock = typeof connection.outputBlock === "string"
70
+ ? blockNameMap.get(connection.outputBlock)
71
+ : blockIdMap.get(connection.outputBlock);
67
72
  if (!sourceBlock) {
68
73
  throw new Error(`Source block ${connection.outputBlock} not found`);
69
74
  }
@@ -73,7 +78,9 @@ export class SmartFilterDeserializer {
73
78
  }
74
79
  const sourceConnectToFunction = sourceConnectionPoint.connectTo.bind(sourceConnectionPoint);
75
80
  // Find the target block and its connection point
76
- const targetBlock = blockMap.get(connection.inputBlock);
81
+ const targetBlock = typeof connection.inputBlock === "string"
82
+ ? blockNameMap.get(connection.inputBlock)
83
+ : blockIdMap.get(connection.inputBlock);
77
84
  if (!targetBlock) {
78
85
  throw new Error(`Target block ${connection.inputBlock} not found`);
79
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartFilterDeserializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"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"}