@babylonjs/smart-filters 0.6.2-alpha → 0.7.0-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 (68) hide show
  1. package/dist/blocks/aggregateBlock.d.ts +5 -3
  2. package/dist/blocks/aggregateBlock.d.ts.map +1 -1
  3. package/dist/blocks/aggregateBlock.js +23 -11
  4. package/dist/blocks/aggregateBlock.js.map +1 -1
  5. package/dist/blocks/customAggregateBlock.d.ts +31 -0
  6. package/dist/blocks/customAggregateBlock.d.ts.map +1 -0
  7. package/dist/blocks/customAggregateBlock.js +55 -0
  8. package/dist/blocks/customAggregateBlock.js.map +1 -0
  9. package/dist/blocks/customShaderBlock.d.ts +3 -2
  10. package/dist/blocks/customShaderBlock.d.ts.map +1 -1
  11. package/dist/blocks/customShaderBlock.js +46 -10
  12. package/dist/blocks/customShaderBlock.js.map +1 -1
  13. package/dist/connection/connectionPoint.js +1 -1
  14. package/dist/connection/connectionPoint.js.map +1 -1
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/serialization/importCustomBlockDefinition.d.ts +15 -0
  20. package/dist/serialization/importCustomBlockDefinition.d.ts.map +1 -0
  21. package/dist/serialization/{importCustomShaderBlockDefinition.js → importCustomBlockDefinition.js} +25 -13
  22. package/dist/serialization/importCustomBlockDefinition.js.map +1 -0
  23. package/dist/serialization/index.d.ts +1 -0
  24. package/dist/serialization/index.d.ts.map +1 -1
  25. package/dist/serialization/index.js +1 -0
  26. package/dist/serialization/index.js.map +1 -1
  27. package/dist/serialization/serializedBlockDefinition.d.ts +9 -4
  28. package/dist/serialization/serializedBlockDefinition.d.ts.map +1 -1
  29. package/dist/serialization/serializedShaderBlockDefinition.d.ts +7 -0
  30. package/dist/serialization/serializedShaderBlockDefinition.d.ts.map +1 -0
  31. package/dist/serialization/serializedShaderBlockDefinition.js +2 -0
  32. package/dist/serialization/serializedShaderBlockDefinition.js.map +1 -0
  33. package/dist/serialization/smartFilterDeserializer.d.ts +1 -1
  34. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -1
  35. package/dist/serialization/smartFilterDeserializer.js +1 -1
  36. package/dist/serialization/smartFilterDeserializer.js.map +1 -1
  37. package/dist/serialization/smartFilterSerializer.d.ts.map +1 -1
  38. package/dist/serialization/smartFilterSerializer.js +4 -1
  39. package/dist/serialization/smartFilterSerializer.js.map +1 -1
  40. package/dist/serialization/v1/{blockSerialization.types.d.ts → shaderBlockSerialization.types.d.ts} +15 -3
  41. package/dist/serialization/v1/shaderBlockSerialization.types.d.ts.map +1 -0
  42. package/dist/serialization/v1/{blockSerialization.types.js → shaderBlockSerialization.types.js} +1 -1
  43. package/dist/serialization/v1/shaderBlockSerialization.types.js.map +1 -0
  44. package/dist/serialization/v1/smartFilterSerialization.types.d.ts +4 -1
  45. package/dist/serialization/v1/smartFilterSerialization.types.d.ts.map +1 -1
  46. package/dist/utils/buildTools/shaderConverter.d.ts +5 -0
  47. package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -1
  48. package/dist/utils/buildTools/shaderConverter.js.map +1 -1
  49. package/package.json +1 -1
  50. package/src/blocks/aggregateBlock.ts +27 -13
  51. package/src/blocks/customAggregateBlock.ts +85 -0
  52. package/src/blocks/customShaderBlock.ts +84 -19
  53. package/src/connection/connectionPoint.ts +1 -1
  54. package/src/index.ts +2 -1
  55. package/src/serialization/{importCustomShaderBlockDefinition.ts → importCustomBlockDefinition.ts} +26 -12
  56. package/src/serialization/index.ts +1 -0
  57. package/src/serialization/serializedBlockDefinition.ts +9 -4
  58. package/src/serialization/serializedShaderBlockDefinition.ts +7 -0
  59. package/src/serialization/smartFilterDeserializer.ts +3 -2
  60. package/src/serialization/smartFilterSerializer.ts +4 -1
  61. package/src/serialization/v1/{blockSerialization.types.ts → shaderBlockSerialization.types.ts} +17 -2
  62. package/src/serialization/v1/smartFilterSerialization.types.ts +6 -1
  63. package/src/utils/buildTools/shaderConverter.ts +6 -0
  64. package/dist/serialization/importCustomShaderBlockDefinition.d.ts +0 -11
  65. package/dist/serialization/importCustomShaderBlockDefinition.d.ts.map +0 -1
  66. package/dist/serialization/importCustomShaderBlockDefinition.js.map +0 -1
  67. package/dist/serialization/v1/blockSerialization.types.d.ts.map +0 -1
  68. package/dist/serialization/v1/blockSerialization.types.js.map +0 -1
@@ -6,7 +6,7 @@ import type { Nullable } from "@babylonjs/core/types";
6
6
  /**
7
7
  * A function that creates a block instance of the given class block type, or return null if it cannot.
8
8
  */
9
- export type BlockFactory = (smartFilter: SmartFilter, engine: ThinEngine, serializedBlock: ISerializedBlockV1) => Promise<Nullable<BaseBlock>>;
9
+ export type BlockFactory = (smartFilter: SmartFilter, engine: ThinEngine, serializedBlock: ISerializedBlockV1, smartFilterDeserializer: SmartFilterDeserializer) => Promise<Nullable<BaseBlock>>;
10
10
  /**
11
11
  * Deserializes serialized SmartFilters. The caller passes in a map of block deserializers it wants to use,
12
12
  * which allows the caller to provide custom deserializers for blocks beyond the core blocks.
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAElB,2BAA2B,EAE9B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACvB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,kBAAkB,KAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAElC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAA8B;IAE7E;;;;OAIG;gBACgB,YAAY,EAAE,YAAY,EAAE,4BAA4B,CAAC,EAAE,2BAA2B;IAKzG;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAe1E,cAAc;YAoFd,mBAAmB;CAyDpC"}
1
+ {"version":3,"file":"smartFilterDeserializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterDeserializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,KAAK,EACR,kBAAkB,EAElB,2BAA2B,EAE9B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CACvB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,kBAAkB,EACnC,uBAAuB,EAAE,uBAAuB,KAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAElC;;;;GAIG;AACH,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAA8B;IAE7E;;;;OAIG;gBACgB,YAAY,EAAE,YAAY,EAAE,4BAA4B,CAAC,EAAE,2BAA2B;IAKzG;;;;;OAKG;IACU,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAe1E,cAAc;YAoFd,mBAAmB;CAyDpC"}
@@ -111,7 +111,7 @@ export class SmartFilterDeserializer {
111
111
  break;
112
112
  default: {
113
113
  // If it's not an input or output block, use the provided block factory
114
- newBlock = await this._blockFactory(smartFilter, engine, serializedBlock);
114
+ newBlock = await this._blockFactory(smartFilter, engine, serializedBlock, this);
115
115
  if (!newBlock) {
116
116
  blockTypesWhichCouldNotBeDeserialized.push(serializedBlock.blockType);
117
117
  return;
@@ -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":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAOrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAalE;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIhC;;;;OAIG;IACH,YAAmB,YAA0B,EAAE,4BAA0D;QACrG,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,6BAA6B,GAAG,4BAA4B,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,MAAkB,EAAE,eAAoB;QAC7D,MAAM,qBAAqB,GAA0B,eAAe,CAAC;QAErE,uFAAuF;QACvF,IAAK,qBAA6B,CAAC,OAAO,IAAI,qBAAqB,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC9F,qBAAqB,CAAC,aAAa,GAAI,qBAA6B,CAAC,OAAO,CAAC;YAC7E,OAAQ,qBAA6B,CAAC,OAAO,CAAC;QAClD,CAAC;QAED,QAAQ,qBAAqB,CAAC,aAAa,EAAE,CAAC;YAC1C,KAAK,CAAC;gBACF,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CACxB,MAAkB,EAClB,qBAA8C;QAE9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEhD,iHAAiH;QACjH,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;QAElD,yCAAyC;QACzC,WAAW,CAAC,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,CAAC;QACtD,WAAW,CAAC,UAAU,GAAG,qBAAqB,CAAC,UAAU,CAAC;QAE1D,yBAAyB;QACzB,MAAM,wBAAwB,GAAoB,EAAE,CAAC;QACrD,MAAM,2CAA2C,GAAa,EAAE,CAAC;QACjE,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,eAAmC,EAAE,EAAE;YACzE,wBAAwB,CAAC,IAAI,CACzB,IAAI,CAAC,mBAAmB,CACpB,WAAW,EACX,eAAe,EACf,MAAM,EACN,2CAA2C,EAC3C,UAAU,EACV,YAAY,CACf,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAE5C,qEAAqE;QACrE,IAAI,2CAA2C,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACX,0DAA0D,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrH,CAAC;QACN,CAAC;QAED,8BAA8B;QAC9B,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAmC,EAAE,EAAE;YAC9E,sEAAsE;YACtE,MAAM,WAAW,GACb,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ;gBACtC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;gBAC1C,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAEjD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,CAAC,WAAW,YAAY,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAClD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,qBAAqB,CAC/D,CAAC;YACF,IAAI,CAAC,qBAAqB,IAAI,OAAO,qBAAqB,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBAClF,MAAM,IAAI,KAAK,CACX,SAAS,UAAU,CAAC,WAAW,4CAA4C,UAAU,CAAC,qBAAqB,EAAE,CAChH,CAAC;YACN,CAAC;YACD,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAE5F,iDAAiD;YACjD,MAAM,WAAW,GACb,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ;gBACrC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;gBACzC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,CAAC,UAAU,YAAY,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,oBAAoB,CAC5D,CAAC;YACF,IAAI,CAAC,qBAAqB,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CACX,SAAS,UAAU,CAAC,UAAU,2CAA2C,UAAU,CAAC,oBAAoB,EAAE,CAC7G,CAAC;YACN,CAAC;YAED,wBAAwB;YACxB,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC7B,WAAwB,EACxB,eAAmC,EACnC,MAAkB,EAClB,qCAA+C,EAC/C,UAAkC,EAClC,YAAoC;QAEpC,IAAI,QAAQ,GAAwB,IAAI,CAAC;QAEzC,kGAAkG;QAClG,mFAAmF;QACnF,IAAK,eAAuB,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;YACnE,eAAe,CAAC,SAAS,GAAI,eAAuB,CAAC,SAAS,CAAC;QACnE,CAAC;QAED,gCAAgC;QAChC,QAAQ,eAAe,CAAC,SAAS,EAAE,CAAC;YAChC,KAAK,UAAU,CAAC,SAAS;gBACrB,CAAC;oBACG,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;wBACrC,QAAQ,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;oBAC9F,CAAC;oBACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBACpB,QAAQ,GAAG,sBAAsB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;oBACpE,CAAC;gBACL,CAAC;gBACD,MAAM;YACV,KAAK,WAAW,CAAC,SAAS;gBACtB,CAAC;oBACG,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC7C,CAAC;gBACD,MAAM;YACV,OAAO,CAAC,CAAC,CAAC;gBACN,uEAAuE;gBACvE,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;gBAChF,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,qCAAqC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBACtE,OAAO;gBACX,CAAC;YACL,CAAC;QACL,CAAC;QAED,0EAA0E;QAC1E,+FAA+F;QAC/F,sEAAsE;QACtE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;QAC7C,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;QAE7C,yGAAyG;QACzG,4BAA4B;QAC5B,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE1D,kBAAkB;QAClB,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5C,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterSerializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,OAAO,KAAK,EACR,kBAAkB,EAIlB,uBAAuB,EAC1B,MAAM,qCAAqC,CAAC;AAkB7C;;;;GAIG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;;;OAIG;gBACgB,+BAA+B,EAAE,MAAM,EAAE,EAAE,0BAA0B,EAAE,kBAAkB,EAAE;IAW9G;;;;OAIG;IACI,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,uBAAuB;CAyDtE"}
1
+ {"version":3,"file":"smartFilterSerializer.d.ts","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,OAAO,KAAK,EACR,kBAAkB,EAIlB,uBAAuB,EAC1B,MAAM,qCAAqC,CAAC;AAmB7C;;;;GAIG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;;;OAIG;gBACgB,+BAA+B,EAAE,MAAM,EAAE,EAAE,0BAA0B,EAAE,kBAAkB,EAAE;IAW9G;;;;OAIG;IACI,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,uBAAuB;CA2DtE"}
@@ -2,6 +2,7 @@ import { inputBlockSerializer } from "../blocks/inputBlock.serializer.js";
2
2
  import { defaultBlockSerializer } from "./v1/defaultBlockSerializer.js";
3
3
  import { OutputBlock } from "../blocks/outputBlock.js";
4
4
  import { CustomShaderBlock } from "../blocks/customShaderBlock.js";
5
+ import { CustomAggregateBlock } from "../blocks/customAggregateBlock.js";
5
6
  /**
6
7
  * Determines if two serialized connection points are equivalent to each other
7
8
  * @param a - The first connection point to compare
@@ -43,7 +44,8 @@ export class SmartFilterSerializer {
43
44
  const connections = [];
44
45
  const blocks = smartFilter.attachedBlocks.map((block) => {
45
46
  // Serialize the block itself
46
- const serializeFn = block.getClassName() === CustomShaderBlock.ClassName
47
+ const blockClassName = block.getClassName();
48
+ const serializeFn = blockClassName === CustomShaderBlock.ClassName || blockClassName === CustomAggregateBlock.ClassName
47
49
  ? defaultBlockSerializer
48
50
  : this._blockSerializers.get(block.blockType);
49
51
  if (!serializeFn) {
@@ -82,6 +84,7 @@ export class SmartFilterSerializer {
82
84
  return serializedBlock;
83
85
  });
84
86
  return {
87
+ format: "smartFilter",
85
88
  formatVersion: 1,
86
89
  name: smartFilter.name,
87
90
  comments: smartFilter.comments,
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterSerializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartFilterSerializer.js","sourceRoot":"","sources":["../../src/serialization/smartFilterSerializer.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,15 @@
6
6
  import type { AllConnectionPointTypes, ConnectionPointValue } from "../../connection/connectionPointType";
7
7
  import type { ShaderProgram } from "../../utils/shaderCodeUtils";
8
8
  /**
9
- * The V1 definition of a serialized block. A block definition is loaded by a CustomShaderBlock and defines how a
9
+ * The V1 definition of a serialized shader block. This block definition is loaded by a CustomShaderBlock and defines how a
10
10
  * blockType works. This should not be confused with an ISerializedBockV1, which is a serialized instance of a block in a
11
11
  * serialized SmartFilter graph. It is referenced by blockType in a serialized SmartFilter.
12
12
  */
13
- export type SerializedBlockDefinitionV1 = {
13
+ export type SerializedShaderBlockDefinitionV1 = {
14
+ /**
15
+ * Which type of serialized data this is.
16
+ */
17
+ format: "shaderBlockDefinition";
14
18
  /**
15
19
  * The version of the block definition format (format of the serialized data, not the version of the block definition itself).
16
20
  */
@@ -35,6 +39,10 @@ export type SerializedBlockDefinitionV1 = {
35
39
  */
36
40
  disableOptimization: boolean;
37
41
  };
42
+ /**
43
+ * Possible V1 auto bind values for input connection points.
44
+ */
45
+ export type InputAutoBindV1 = "outputResolution";
38
46
  /**
39
47
  * A V1 input connection point of a serialized block definition.
40
48
  */
@@ -51,5 +59,9 @@ export type SerializedInputConnectionPointV1<U extends AllConnectionPointTypes =
51
59
  * The optional default value of the connection point.
52
60
  */
53
61
  defaultValue?: ConnectionPointValue<U>;
62
+ /**
63
+ * If supplied, the input will be automatically bound to this value, instead of creating an input connection point.
64
+ */
65
+ autoBind?: InputAutoBindV1;
54
66
  };
55
- //# sourceMappingURL=blockSerialization.types.d.ts.map
67
+ //# sourceMappingURL=shaderBlockSerialization.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderBlockSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/shaderBlockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,iCAAiC,GAAG;IAC5C;;OAEG;IACH,MAAM,EAAE,uBAAuB,CAAC;IAEhC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,gCAAgC,EAAE,CAAC;IAE1D;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,gCAAgC,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAAI;IACxG;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC9B,CAAC"}
@@ -4,4 +4,4 @@
4
4
  * ----------------------------------------------------------------------------
5
5
  */
6
6
  export {};
7
- //# sourceMappingURL=blockSerialization.types.js.map
7
+ //# sourceMappingURL=shaderBlockSerialization.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderBlockSerialization.types.js","sourceRoot":"","sources":["../../../src/serialization/v1/shaderBlockSerialization.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -3,6 +3,7 @@ import type { BaseBlock } from "../../blocks/baseBlock.js";
3
3
  import type { SmartFilter } from "../../smartFilter.js";
4
4
  import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine";
5
5
  import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSystem/interfaces/nodeLocationInfo.js";
6
+ import type { SmartFilterDeserializer } from "../smartFilterDeserializer.js";
6
7
  /**
7
8
  * ----------------------------------------------------------------------------
8
9
  * Serialized Data Types
@@ -12,6 +13,8 @@ import type { IEditorData } from "@babylonjs/shared-ui-components/nodeGraphSyste
12
13
  * V1 Serialized Smart Filter
13
14
  */
14
15
  export type SerializedSmartFilterV1 = {
16
+ /** Which type of serialized data this is. */
17
+ format: "smartFilter";
15
18
  /** The format version of the serialized data (not the version of the SmartFilter itself).*/
16
19
  formatVersion: 1;
17
20
  /** The SmartFilter name */
@@ -80,7 +83,7 @@ export interface IBlockSerializerV1 {
80
83
  /**
81
84
  * A function that deserializes a V1 block in a SmartFilter
82
85
  */
83
- export type DeserializeBlockV1 = (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine) => Promise<BaseBlock>;
86
+ export type DeserializeBlockV1 = (smartFilter: SmartFilter, serializedBlock: ISerializedBlockV1, engine: ThinEngine, smartFilterDeserializer: SmartFilterDeserializer) => Promise<BaseBlock>;
84
87
  /**
85
88
  * A function that optionally deserializes a block from a V1 serialized block object, returning null if it cannot
86
89
  */
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilterSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/smartFilterSerialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAElH;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,4FAA4F;IAC5F,aAAa,EAAE,CAAC,CAAC;IAEjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,yGAAyG;IACzG,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,SAAS,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC7B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACtC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"smartFilterSerialization.types.d.ts","sourceRoot":"","sources":["../../../src/serialization/v1/smartFilterSerialization.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAClH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE7E;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IAClC,6CAA6C;IAC7C,MAAM,EAAE,aAAa,CAAC;IAEtB,4FAA4F;IAC5F,aAAa,EAAE,CAAC,CAAC;IAEjB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,0CAA0C;IAC1C,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAElC,4BAA4B;IAC5B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAE7B,iCAAiC;IACjC,WAAW,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,qGAAqG;IACrG,QAAQ,EAAE,MAAM,CAAC;IAEjB,yGAAyG;IACzG,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,qCAAqC;IACrC,IAAI,EAAE,GAAG,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,oBAAoB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,SAAS,EAAE,gBAAgB,CAAC;CAC/B;AAED;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC7B,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,EAClB,uBAAuB,EAAE,uBAAuB,KAC/C,OAAO,CAAC,SAAS,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,CACtC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,kBAAkB,EACnC,MAAM,EAAE,UAAU,KACjB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC"}
@@ -7,6 +7,11 @@ export type UniformMetadataProperties = {
7
7
  * If supplied, the default value to use for the corresponding input connection point
8
8
  */
9
9
  default?: any;
10
+ /**
11
+ * If supplied, the input will be automatically bound to this value, instead of creating an input connection point
12
+ * @see InputAutoBindV1 for possible values.
13
+ */
14
+ autoBind?: string;
10
15
  };
11
16
  /**
12
17
  * Describes a uniform in a shader
@@ -1 +1 @@
1
- {"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAIrE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE,yBAAyB,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,CAsG9E;AAiMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7D"}
1
+ {"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAIrE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE,yBAAyB,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB,CAsG9E;AAiMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@babylonjs/smart-filters",
3
- "version": "0.6.2-alpha",
3
+ "version": "0.7.0-alpha",
4
4
  "description": "Babylon.js Smart Filter core",
5
5
  "author": {
6
6
  "name": "Sebastien VANDENBERGHE"
@@ -1,4 +1,5 @@
1
- import type { ConnectionPoint } from "../connection/connectionPoint";
1
+ import type { Nullable } from "@babylonjs/core/types";
2
+ import type { ConnectionPoint, RuntimeData } from "../connection/connectionPoint";
2
3
  import type { ConnectionPointType } from "../connection/connectionPointType";
3
4
 
4
5
  import { BaseBlock } from "../blocks/baseBlock.js";
@@ -25,7 +26,7 @@ export abstract class AggregateBlock extends BaseBlock {
25
26
  /**
26
27
  * The list of relationships between the internal graph inputs and the outside ones.
27
28
  */
28
- private readonly _aggregatedInputs: [ConnectionPoint, ConnectionPoint][] = [];
29
+ private readonly _aggregatedInputs: [ConnectionPoint[], ConnectionPoint][] = [];
29
30
 
30
31
  /**
31
32
  * Do not override prepareForRuntime for aggregate blocks. It is not supported.
@@ -49,11 +50,13 @@ export abstract class AggregateBlock extends BaseBlock {
49
50
  }
50
51
 
51
52
  // Rewire input connections
52
- for (const [internalConnectionPoint, externalConnectionPoint] of this._aggregatedInputs) {
53
+ for (const [internalConnectionPoints, externalConnectionPoint] of this._aggregatedInputs) {
53
54
  const connectedToExternalConnectionPoint = externalConnectionPoint.connectedTo;
54
55
  if (connectedToExternalConnectionPoint) {
55
56
  connectedToExternalConnectionPoint.disconnectFrom(externalConnectionPoint);
56
- connectedToExternalConnectionPoint.connectTo(internalConnectionPoint);
57
+ for (const internalConnectionPoint of internalConnectionPoints) {
58
+ connectedToExternalConnectionPoint.connectTo(internalConnectionPoint);
59
+ }
57
60
  }
58
61
  }
59
62
 
@@ -85,11 +88,15 @@ export abstract class AggregateBlock extends BaseBlock {
85
88
  }
86
89
  }
87
90
 
88
- for (const [internalConnectionPoint, externalConnectionPoint] of this._aggregatedInputs) {
89
- const connectedToInternalConnectionPoint = internalConnectionPoint.connectedTo;
90
- if (connectedToInternalConnectionPoint) {
91
- connectedToInternalConnectionPoint.disconnectFrom(internalConnectionPoint);
92
- connectedToInternalConnectionPoint.connectTo(externalConnectionPoint);
91
+ for (const [internalConnectionPoints, externalConnectionPoint] of this._aggregatedInputs) {
92
+ if (internalConnectionPoints[0]) {
93
+ const connectedToInternalConnectionPoint = internalConnectionPoints[0].connectedTo;
94
+ if (connectedToInternalConnectionPoint) {
95
+ for (const internalConnectionPoint of internalConnectionPoints) {
96
+ connectedToInternalConnectionPoint.disconnectFrom(internalConnectionPoint);
97
+ }
98
+ connectedToInternalConnectionPoint.connectTo(externalConnectionPoint);
99
+ }
93
100
  }
94
101
  }
95
102
  }
@@ -97,16 +104,23 @@ export abstract class AggregateBlock extends BaseBlock {
97
104
  /**
98
105
  * Registers an input connection from the internal graph as an input of the aggregated graph.
99
106
  * @param name - The name of the exposed input connection point
100
- * @param internalConnectionPoint - The input connection point in the inner graph to expose as an input on the aggregate block
107
+ * @param internalConnectionPoints - The input connection points in the inner graph to wire up to the new subfilter input
108
+ * @param defaultValue - The default value to use for the input connection point
101
109
  * @returns the connection point referencing the input block
102
110
  */
103
111
  protected _registerSubfilterInput<U extends ConnectionPointType>(
104
112
  name: string,
105
- internalConnectionPoint: ConnectionPoint<U>
113
+ internalConnectionPoints: ConnectionPoint<U>[],
114
+ defaultValue: Nullable<RuntimeData<U>> = null
106
115
  ): ConnectionPoint<U> {
107
- const externalInputConnectionPoint = this._registerInput(name, internalConnectionPoint.type);
116
+ const type = internalConnectionPoints[0]?.type;
117
+ if (type === undefined) {
118
+ throw new Error("Cannot register an input connection point with no internal connection points");
119
+ }
120
+ const externalInputConnectionPoint = this._registerInput(name, type, defaultValue);
121
+
122
+ this._aggregatedInputs.push([internalConnectionPoints, externalInputConnectionPoint]);
108
123
 
109
- this._aggregatedInputs.push([internalConnectionPoint, externalInputConnectionPoint]);
110
124
  return externalInputConnectionPoint;
111
125
  }
112
126
 
@@ -0,0 +1,85 @@
1
+ import type { ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
2
+ import type { SmartFilterDeserializer, SerializedBlockDefinition } from "../serialization/index.js";
3
+ import type { SmartFilter } from "../smartFilter.js";
4
+ import { AggregateBlock } from "./aggregateBlock.js";
5
+ import type { BaseBlock } from "./baseBlock.js";
6
+
7
+ /**
8
+ * Loads a serialized SmartFilter into a block which can be used in another SmartFilter.
9
+ */
10
+ export class CustomAggregateBlock extends AggregateBlock {
11
+ /**
12
+ * Creates a new CustomAggregateBlock
13
+ * @param smartFilter - The SmartFilter to create the block for
14
+ * @param engine - The ThinEngine to use
15
+ * @param name - The friendly name of the block
16
+ * @param serializedSmartFilter - The serialized SmartFilter to load into the block
17
+ * @param smartFilterDeserializer - The deserializer to use
18
+ * @returns A promise that resolves to the new CustomAggregateBlock
19
+ */
20
+ public static async Create(
21
+ smartFilter: SmartFilter,
22
+ engine: ThinEngine,
23
+ name: string,
24
+ serializedSmartFilter: SerializedBlockDefinition,
25
+ smartFilterDeserializer: SmartFilterDeserializer
26
+ ): Promise<BaseBlock> {
27
+ const innerSmartFilter = await smartFilterDeserializer.deserialize(engine, serializedSmartFilter);
28
+ return new CustomAggregateBlock(smartFilter, name, serializedSmartFilter.blockType, innerSmartFilter, false);
29
+ }
30
+
31
+ /**
32
+ * The class name of the block.
33
+ */
34
+ public static override ClassName = "CustomAggregateBlock";
35
+
36
+ private readonly _blockType: string;
37
+
38
+ /**
39
+ * The type of the block - used when serializing / deserializing the block, and in the editor.
40
+ */
41
+ public override get blockType(): string {
42
+ return this._blockType;
43
+ }
44
+
45
+ private constructor(
46
+ smartFilter: SmartFilter,
47
+ name: string,
48
+ blockType: string,
49
+ innerSmartFilter: SmartFilter,
50
+ disableOptimization: boolean
51
+ ) {
52
+ super(smartFilter, name, disableOptimization);
53
+
54
+ this._blockType = blockType;
55
+
56
+ const attachedBlocks = innerSmartFilter.attachedBlocks;
57
+ for (let index = 0; index < attachedBlocks.length; index++) {
58
+ const block = attachedBlocks[index];
59
+ if (block && block.isInput && block.outputs[0]) {
60
+ // If this input block is connected to anything (has any endpoints), create an input connection point for it
61
+ if (block.outputs[0].endpoints.length > 0) {
62
+ this._registerSubfilterInput(
63
+ block.name,
64
+ block.outputs[0].endpoints.slice(),
65
+ block.outputs[0].runtimeData ?? null
66
+ );
67
+ }
68
+
69
+ // Remove this input block from the smart filter graph - this will reset the runtimeData to the
70
+ // default for that connection point (which may be null)
71
+ innerSmartFilter.removeBlock(block);
72
+ index--;
73
+ }
74
+ }
75
+
76
+ if (!innerSmartFilter.output.connectedTo) {
77
+ throw new Error("The inner smart filter must have an output connected to something");
78
+ }
79
+
80
+ this._registerSubfilterOutput("output", innerSmartFilter.output.connectedTo);
81
+
82
+ // Disconnect the inner smart filter output from the inner smart filter
83
+ innerSmartFilter.output.connectedTo.disconnectFrom(innerSmartFilter.output);
84
+ }
85
+ }
@@ -2,18 +2,19 @@ import type { Effect } from "@babylonjs/core/Materials/effect";
2
2
  import { ConnectionPointType } from "../connection/connectionPointType.js";
3
3
  import { ShaderBinding } from "../runtime/shaderRuntime.js";
4
4
  import { createStrongRef } from "../runtime/strongRef.js";
5
- import type { SerializedBlockDefinition } from "../serialization/serializedBlockDefinition";
6
- import type { SerializedInputConnectionPointV1 } from "../serialization/v1/blockSerialization.types";
5
+ import type { SerializedShaderBlockDefinition } from "../serialization/serializedShaderBlockDefinition.js";
6
+ import type { SerializedInputConnectionPointV1 } from "../serialization/v1/shaderBlockSerialization.types.js";
7
7
  import type { SmartFilter } from "../smartFilter";
8
8
  import type { ShaderProgram } from "../utils/shaderCodeUtils";
9
9
  import { ShaderBlock } from "./shaderBlock.js";
10
10
  import type { RuntimeData } from "../connection/connectionPoint";
11
+ import type { Nullable } from "@babylonjs/core/types.js";
11
12
 
12
13
  /**
13
14
  * The binding for a CustomShaderBlock
14
15
  */
15
16
  class CustomShaderBlockBinding extends ShaderBinding {
16
- private readonly _bindSteps: ((effect: Effect) => void)[] = [];
17
+ private readonly _bindSteps: ((effect: Effect, width: number, height: number) => void)[] = [];
17
18
 
18
19
  /**
19
20
  * Creates a new shader binding instance for the CustomShaderBlock block.
@@ -50,9 +51,15 @@ class CustomShaderBlockBinding extends ShaderBinding {
50
51
  });
51
52
  break;
52
53
  case ConnectionPointType.Vector2:
53
- this._bindSteps.push((effect) => {
54
- effect.setVector2(this.getRemappedName(input.name), input.runtimeData.value);
55
- });
54
+ if (input.autoBind === "outputResolution") {
55
+ this._bindSteps.push((effect, width, height) => {
56
+ effect.setFloat2(this.getRemappedName(input.name), width, height);
57
+ });
58
+ } else {
59
+ this._bindSteps.push((effect) => {
60
+ effect.setVector2(this.getRemappedName(input.name), input.runtimeData.value);
61
+ });
62
+ }
56
63
  break;
57
64
  }
58
65
  }
@@ -61,10 +68,12 @@ class CustomShaderBlockBinding extends ShaderBinding {
61
68
  /**
62
69
  * Binds all the required data to the shader when rendering.
63
70
  * @param effect - The effect to bind the data to
71
+ * @param width - defines the width of the output
72
+ * @param height - defines the height of the output
64
73
  */
65
- public override bind(effect: Effect): void {
74
+ public override bind(effect: Effect, width: number, height: number): void {
66
75
  for (let i = 0; i < this._bindSteps.length; i++) {
67
- this._bindSteps[i]!(effect);
76
+ this._bindSteps[i]!(effect, width, height);
68
77
  }
69
78
  }
70
79
  }
@@ -83,7 +92,7 @@ export class CustomShaderBlock extends ShaderBlock {
83
92
  public static Create(
84
93
  smartFilter: SmartFilter,
85
94
  name: string,
86
- blockDefinition: SerializedBlockDefinition
95
+ blockDefinition: SerializedShaderBlockDefinition
87
96
  ): CustomShaderBlock {
88
97
  // When a new version of SerializedBlockDefinition is created, this function should be updated to handle the new properties.
89
98
 
@@ -104,6 +113,7 @@ export class CustomShaderBlock extends ShaderBlock {
104
113
 
105
114
  private readonly _shaderProgram: ShaderProgram;
106
115
  private readonly _blockType: string;
116
+ private _autoBoundInputs: Nullable<SerializedInputConnectionPointV1[]> = null;
107
117
 
108
118
  /**
109
119
  * The type of the block - used when serializing / deserializing the block, and in the editor.
@@ -155,14 +165,23 @@ export class CustomShaderBlock extends ShaderBlock {
155
165
  private _registerSerializedInputConnectionPointV1<U extends ConnectionPointType>(
156
166
  connectionPoint: SerializedInputConnectionPointV1<U>
157
167
  ): void {
158
- if (connectionPoint.defaultValue !== undefined) {
159
- this._registerOptionalInput(
160
- connectionPoint.name,
161
- connectionPoint.type,
162
- createStrongRef(connectionPoint.defaultValue)
163
- );
168
+ if (connectionPoint.autoBind) {
169
+ // Auto bound inputs are not registered as input connection points
170
+ if (this._autoBoundInputs === null) {
171
+ this._autoBoundInputs = [];
172
+ }
173
+ this._autoBoundInputs.push(connectionPoint);
164
174
  } else {
165
- this._registerInput(connectionPoint.name, connectionPoint.type);
175
+ // If not auto bound, register as an input connection point
176
+ if (connectionPoint.defaultValue !== undefined) {
177
+ this._registerOptionalInput(
178
+ connectionPoint.name,
179
+ connectionPoint.type,
180
+ createStrongRef(connectionPoint.defaultValue)
181
+ );
182
+ } else {
183
+ this._registerInput(connectionPoint.name, connectionPoint.type);
184
+ }
166
185
  }
167
186
  }
168
187
 
@@ -173,15 +192,35 @@ export class CustomShaderBlock extends ShaderBlock {
173
192
  public override getShaderBinding(): ShaderBinding {
174
193
  const inputs = this.inputs;
175
194
 
176
- const inputsWithRuntimeData = inputs.map((input) => {
195
+ const inputsToBind: AnyInputWithRuntimeData[] = inputs.map((input) => {
177
196
  return {
178
197
  name: input.name,
179
198
  type: input.type,
180
199
  runtimeData: this._confirmRuntimeDataSupplied(input),
200
+ autoBind: undefined,
181
201
  };
182
202
  });
183
203
 
184
- return new CustomShaderBlockBinding(inputsWithRuntimeData);
204
+ if (this._autoBoundInputs) {
205
+ for (const autoBoundInput of this._autoBoundInputs) {
206
+ if (
207
+ autoBoundInput.autoBind === "outputResolution" &&
208
+ autoBoundInput.type == ConnectionPointType.Vector2
209
+ ) {
210
+ inputsToBind.push({
211
+ name: autoBoundInput.name,
212
+ type: autoBoundInput.type,
213
+ autoBind: autoBoundInput.autoBind,
214
+ });
215
+ } else {
216
+ throw new Error(
217
+ `Auto bound input ${autoBoundInput.name} has an unsupported type or auto bind value`
218
+ );
219
+ }
220
+ }
221
+ }
222
+
223
+ return new CustomShaderBlockBinding(inputsToBind);
185
224
  }
186
225
  }
187
226
 
@@ -203,6 +242,31 @@ type InputWithRuntimeData<U extends ConnectionPointType> = {
203
242
  * The runtime data for the input connection point
204
243
  */
205
244
  runtimeData: RuntimeData<U>;
245
+
246
+ /**
247
+ * Since this is an input connection point, it will not be auto bound
248
+ */
249
+ autoBind: undefined;
250
+ };
251
+
252
+ /**
253
+ * Represents an input which is auto-bound to the output resolution instead of an input connection point
254
+ */
255
+ type AutoBindOutputResolution = {
256
+ /**
257
+ * The name of the input
258
+ */
259
+ name: string;
260
+
261
+ /**
262
+ * The type of the input
263
+ */
264
+ type: ConnectionPointType.Vector2;
265
+
266
+ /**
267
+ * The auto bind value for the input connection point
268
+ */
269
+ autoBind: "outputResolution";
206
270
  };
207
271
 
208
272
  /**
@@ -214,4 +278,5 @@ type AnyInputWithRuntimeData =
214
278
  | InputWithRuntimeData<ConnectionPointType.Color4>
215
279
  | InputWithRuntimeData<ConnectionPointType.Float>
216
280
  | InputWithRuntimeData<ConnectionPointType.Texture>
217
- | InputWithRuntimeData<ConnectionPointType.Vector2>;
281
+ | InputWithRuntimeData<ConnectionPointType.Vector2>
282
+ | AutoBindOutputResolution;
@@ -185,7 +185,7 @@ export class ConnectionPoint<U extends ConnectionPointType = ConnectionPointType
185
185
 
186
186
  // Connections are double-linked - remove the reference back to this connection point from the one we just disconnected from
187
187
  endpoint._connectedTo = null;
188
- endpoint.runtimeData = null;
188
+ endpoint.runtimeData = endpoint.defaultRuntimeData;
189
189
  }
190
190
 
191
191
  /**
package/src/index.ts CHANGED
@@ -21,6 +21,7 @@ export { InputBlock, type InputBlockEditorData } from "./blocks/inputBlock.js";
21
21
  export { type AnyInputBlock } from "./blocks/inputBlock.js";
22
22
  export { ShaderBlock } from "./blocks/shaderBlock.js";
23
23
  export { CustomShaderBlock } from "./blocks/customShaderBlock.js";
24
+ export { CustomAggregateBlock } from "./blocks/customAggregateBlock.js";
24
25
  export { DisableableShaderBlock, BlockDisableStrategy as DisableStrategy } from "./blocks/disableableShaderBlock.js";
25
26
  export { AggregateBlock } from "./blocks/aggregateBlock.js";
26
27
  export { DisableableShaderBinding, ShaderBinding, ShaderRuntime } from "./runtime/shaderRuntime.js";
@@ -37,4 +38,4 @@ export { SmartFilterOptimizer } from "./optimization/smartFilterOptimizer.js";
37
38
  export * from "./utils/textureLoaders.js";
38
39
  export * from "./serialization/index.js";
39
40
  export * from "./editorUtils/editableInPropertyPage.js";
40
- export * from "./serialization/importCustomShaderBlockDefinition.js";
41
+ export * from "./serialization/importCustomBlockDefinition.js";