@babylonjs/smart-filters 0.3.3-alpha → 0.3.5-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 (54) 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 +27 -12
  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 +9 -21
  34. package/dist/smartFilter.js.map +1 -1
  35. package/dist/utils/buildTools/shaderConverter.js +2 -2
  36. package/dist/utils/buildTools/shaderConverter.js.map +1 -1
  37. package/dist/utils/renderTargetUtils.d.ts +24 -0
  38. package/dist/utils/renderTargetUtils.d.ts.map +1 -0
  39. package/dist/utils/renderTargetUtils.js +38 -0
  40. package/dist/utils/renderTargetUtils.js.map +1 -0
  41. package/package.json +1 -1
  42. package/src/blocks/inputBlock.deserializer.ts +20 -21
  43. package/src/blocks/inputBlock.serialization.types.ts +16 -0
  44. package/src/blocks/inputBlock.serializer.ts +10 -1
  45. package/src/blocks/inputBlock.ts +25 -1
  46. package/src/blocks/outputBlock.ts +32 -18
  47. package/src/blocks/shaderBlock.ts +11 -10
  48. package/src/runtime/renderTargetGenerator.ts +31 -14
  49. package/src/serialization/smartFilterDeserializer.ts +17 -6
  50. package/src/serialization/smartFilterSerializer.ts +4 -4
  51. package/src/serialization/v1/serialization.types.ts +4 -4
  52. package/src/smartFilter.ts +12 -22
  53. package/src/utils/buildTools/shaderConverter.ts +2 -2
  54. 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;CA0BV"}
@@ -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,13 +21,18 @@ 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() {
27
32
  if (!this._copyBlock) {
28
- this._copyBlock = new CopyBlock(this.smartFilter, "copy");
29
- this._copyBlock.input.runtimeData = this.input.runtimeData;
33
+ this._copyBlock = new CopyBlock(this.smartFilter, "CopyToOutputBlock");
30
34
  }
35
+ this._copyBlock.input.runtimeData = this.input.runtimeData;
31
36
  return this._copyBlock;
32
37
  }
33
38
  /**
@@ -56,15 +61,25 @@ export class OutputBlock extends BaseBlock {
56
61
  * @param finalOutput - Defines if the block is the final output of the smart filter
57
62
  */
58
63
  generateCommandsAndGatherInitPromises(initializationData, finalOutput) {
59
- const copyBlock = this._getCopyBlock();
60
- const runtime = initializationData.runtime;
61
- const shaderBlockRuntime = new ShaderRuntime(runtime.effectRenderer, copyBlock.getShaderProgram(), copyBlock.getShaderBinding());
62
- initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
63
- runtime.registerResource(shaderBlockRuntime);
64
- runtime.registerCommand(createCommand(`${this.getClassName()}.renderToCanvas`, this, () => {
65
- shaderBlockRuntime.renderToCanvas();
66
- }));
67
- super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
64
+ var _a;
65
+ // In the case that this OutputBlock is directly connected to a texture InputBlock, we must
66
+ // insert a CopyBlock to copy the texture to the render target texture.
67
+ if ((_a = this.input.connectedTo) === null || _a === void 0 ? void 0 : _a.ownerBlock.isInput) {
68
+ const copyBlock = this._getCopyBlock();
69
+ const runtime = initializationData.runtime;
70
+ const shaderBlockRuntime = new ShaderRuntime(runtime.effectRenderer, copyBlock.getShaderProgram(), copyBlock.getShaderBinding());
71
+ initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
72
+ runtime.registerResource(shaderBlockRuntime);
73
+ registerFinalRenderCommand(this.renderTargetTexture, runtime, this, shaderBlockRuntime);
74
+ super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
75
+ }
76
+ else {
77
+ // We aren't connected to an input block, remove our copy block if we have one.
78
+ if (this._copyBlock) {
79
+ this.smartFilter.removeBlock(this._copyBlock);
80
+ this._copyBlock = null;
81
+ }
82
+ }
68
83
  }
69
84
  }
70
85
  /**
@@ -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,mBAAmB,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAE3D,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,2FAA2F;QAC3F,uEAAuE;QACvE,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAE3C,MAAM,kBAAkB,GAAG,IAAI,aAAa,CACxC,OAAO,CAAC,cAAc,EACtB,SAAS,CAAC,gBAAgB,EAAE,EAC5B,SAAS,CAAC,gBAAgB,EAAE,CAC/B,CAAC;YACF,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAChF,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;YAE7C,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAExF,KAAK,CAAC,qCAAqC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACJ,+EAA+E;YAC/E,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAC3B,CAAC;QACL,CAAC;IACL,CAAC;;AA7FD;;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":"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"}
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
  }