@babylonjs/smart-filters 0.3.4-alpha → 0.3.6-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.
@@ -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;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AAG1G;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC;;OAEG;IACH,OAAuB,SAAS,SAAiB;IAEjD;;;OAGG;IACH,SAAgB,KAAK,4DAA6D;IAElF;;;OAGG;IACI,mBAAmB,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAQ;IAErE,OAAO,CAAC,UAAU,CAAmB;IAErC;;;OAGG;gBACS,WAAW,EAAE,WAAW;IAMpC,OAAO,CAAC,aAAa;IASrB;;OAEG;IACa,iBAAiB,IAAI,IAAI;IAQzC;;OAEG;IACa,oBAAoB,IAAI,IAAI;IAQ5C;;;;OAIG;IACa,qCAAqC,CACjD,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,OAAO,GACrB,IAAI;CAgBV"}
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"}
@@ -30,9 +30,9 @@ export class OutputBlock extends BaseBlock {
30
30
  }
31
31
  _getCopyBlock() {
32
32
  if (!this._copyBlock) {
33
- this._copyBlock = new CopyBlock(this.smartFilter, "copy");
34
- this._copyBlock.input.runtimeData = this.input.runtimeData;
33
+ this._copyBlock = new CopyBlock(this.smartFilter, "CopyToOutputBlock");
35
34
  }
35
+ this._copyBlock.input.runtimeData = this.input.runtimeData;
36
36
  return this._copyBlock;
37
37
  }
38
38
  /**
@@ -61,13 +61,25 @@ export class OutputBlock extends BaseBlock {
61
61
  * @param finalOutput - Defines if the block is the final output of the smart filter
62
62
  */
63
63
  generateCommandsAndGatherInitPromises(initializationData, finalOutput) {
64
- const copyBlock = this._getCopyBlock();
65
- const runtime = initializationData.runtime;
66
- const shaderBlockRuntime = new ShaderRuntime(runtime.effectRenderer, copyBlock.getShaderProgram(), copyBlock.getShaderBinding());
67
- initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
68
- runtime.registerResource(shaderBlockRuntime);
69
- registerFinalRenderCommand(this.renderTargetTexture, runtime, this, shaderBlockRuntime);
70
- 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
+ }
71
83
  }
72
84
  }
73
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;AAG5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,SAAS;IAoBtC;;;OAGG;IACH,YAAY,WAAwB;QAChC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAnBjC;;;WAGG;QACa,UAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAElF;;;WAGG;QACI,wBAAmB,GAAsC,IAAI,CAAC;QAWjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACa,iBAAiB;QAC7B,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACa,oBAAoB;QAChC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACpD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACa,qCAAqC,CACjD,kBAAsC,EACtC,WAAoB;QAEpB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAE3C,MAAM,kBAAkB,GAAG,IAAI,aAAa,CACxC,OAAO,CAAC,cAAc,EACtB,SAAS,CAAC,gBAAgB,EAAE,EAC5B,SAAS,CAAC,gBAAgB,EAAE,CAC/B,CAAC;QACF,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAChF,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAE7C,0BAA0B,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAExF,KAAK,CAAC,qCAAqC,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;IACjF,CAAC;;AAnFD;;GAEG;AACoB,qBAAS,GAAG,aAAa,AAAhB,CAAiB"}
1
+ {"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":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6EAA6E,CAAC;AAO/G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,SAAgB,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAErE;;OAEG;IACH,SAAgB,WAAW,EAAE,WAAW,CAAC;IAEzC;;OAEG;IACI,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEzC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAQ;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAQxB;;OAEG;IACH,IAAW,cAAc,IAAI,aAAa,CAAC,SAAS,CAAC,CAEpD;IAED;;OAEG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;OAKG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAe5C;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAc1C,OAAO,CAAC,sCAAsC;IAwB9C;;;;;OAKG;IACU,kBAAkB,CAC3B,MAAM,EAAE,UAAU,EAClB,qBAAqB,CAAC,EAAE,qBAAqB,GAC9C,OAAO,CAAC,kBAAkB,CAAC;IAiC9B;;;;OAIG;IACI,2BAA2B,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;CAoB7D"}
1
+ {"version":3,"file":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6EAA6E,CAAC;AAO/G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,SAAgB,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAErE;;OAEG;IACH,SAAgB,WAAW,EAAE,WAAW,CAAC;IAEzC;;OAEG;IACI,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEzC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAQ;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAQxB;;OAEG;IACH,IAAW,cAAc,IAAI,aAAa,CAAC,SAAS,CAAC,CAEpD;IAED;;OAEG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;OAKG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAe5C;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAc1C,OAAO,CAAC,sCAAsC;IAW9C;;;;;OAKG;IACU,kBAAkB,CAC3B,MAAM,EAAE,UAAU,EAClB,qBAAqB,CAAC,EAAE,qBAAqB,GAC9C,OAAO,CAAC,kBAAkB,CAAC;IAiC9B;;;;OAIG;IACI,2BAA2B,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;CAoB7D"}
@@ -82,20 +82,8 @@ export class SmartFilter {
82
82
  _generateCommandsAndGatherInitPromises(initializationData) {
83
83
  const outputBlock = this.outputBlock;
84
84
  outputBlock.visit(initializationData, (block, initializationData) => {
85
- var _a, _b;
86
- // If the block is the output block,
87
- if (block === outputBlock) {
88
- // We only need to do something if the connected block is an input block.
89
- // Indeed, any other block linked to the output block would directly render to the canvas
90
- // as an optimization.
91
- // In case the output block is not linked to an input block, we do not need extra commands
92
- // or resources to create a render pass.
93
- if ((_a = outputBlock.input.connectedTo) === null || _a === void 0 ? void 0 : _a.ownerBlock.isInput) {
94
- block.generateCommandsAndGatherInitPromises(initializationData, true);
95
- }
96
- return;
97
- }
98
- block.generateCommandsAndGatherInitPromises(initializationData, ((_b = outputBlock.input.connectedTo) === null || _b === void 0 ? void 0 : _b.ownerBlock) === block);
85
+ var _a;
86
+ block.generateCommandsAndGatherInitPromises(initializationData, ((_a = outputBlock.input.connectedTo) === null || _a === void 0 ? void 0 : _a.ownerBlock) === block);
99
87
  });
100
88
  }
101
89
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.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.3.4-alpha",
3
+ "version": "0.3.6-alpha",
4
4
  "description": "Babylon.js Smart Filter core",
5
5
  "author": {
6
6
  "name": "Sebastien VANDENBERGHE"
@@ -45,9 +45,9 @@ export class OutputBlock extends BaseBlock {
45
45
 
46
46
  private _getCopyBlock(): CopyBlock {
47
47
  if (!this._copyBlock) {
48
- this._copyBlock = new CopyBlock(this.smartFilter, "copy");
49
- this._copyBlock.input.runtimeData = this.input.runtimeData;
48
+ this._copyBlock = new CopyBlock(this.smartFilter, "CopyToOutputBlock");
50
49
  }
50
+ this._copyBlock.input.runtimeData = this.input.runtimeData;
51
51
 
52
52
  return this._copyBlock;
53
53
  }
@@ -83,19 +83,29 @@ export class OutputBlock extends BaseBlock {
83
83
  initializationData: InitializationData,
84
84
  finalOutput: boolean
85
85
  ): void {
86
- const copyBlock = this._getCopyBlock();
87
- const runtime = initializationData.runtime;
86
+ // In the case that this OutputBlock is directly connected to a texture InputBlock, we must
87
+ // insert a CopyBlock to copy the texture to the render target texture.
88
+ if (this.input.connectedTo?.ownerBlock.isInput) {
89
+ const copyBlock = this._getCopyBlock();
90
+ const runtime = initializationData.runtime;
88
91
 
89
- const shaderBlockRuntime = new ShaderRuntime(
90
- runtime.effectRenderer,
91
- copyBlock.getShaderProgram(),
92
- copyBlock.getShaderBinding()
93
- );
94
- initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
95
- runtime.registerResource(shaderBlockRuntime);
92
+ const shaderBlockRuntime = new ShaderRuntime(
93
+ runtime.effectRenderer,
94
+ copyBlock.getShaderProgram(),
95
+ copyBlock.getShaderBinding()
96
+ );
97
+ initializationData.initializationPromises.push(shaderBlockRuntime.onReadyAsync);
98
+ runtime.registerResource(shaderBlockRuntime);
96
99
 
97
- registerFinalRenderCommand(this.renderTargetTexture, runtime, this, shaderBlockRuntime);
100
+ registerFinalRenderCommand(this.renderTargetTexture, runtime, this, shaderBlockRuntime);
98
101
 
99
- super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
102
+ super.generateCommandsAndGatherInitPromises(initializationData, finalOutput);
103
+ } else {
104
+ // We aren't connected to an input block, remove our copy block if we have one.
105
+ if (this._copyBlock) {
106
+ this.smartFilter.removeBlock(this._copyBlock);
107
+ this._copyBlock = null;
108
+ }
109
+ }
100
110
  }
101
111
  }
@@ -142,19 +142,6 @@ export class SmartFilter {
142
142
  const outputBlock = this.outputBlock;
143
143
 
144
144
  outputBlock.visit(initializationData, (block: BaseBlock, initializationData: InitializationData) => {
145
- // If the block is the output block,
146
- if (block === outputBlock) {
147
- // We only need to do something if the connected block is an input block.
148
- // Indeed, any other block linked to the output block would directly render to the canvas
149
- // as an optimization.
150
- // In case the output block is not linked to an input block, we do not need extra commands
151
- // or resources to create a render pass.
152
- if (outputBlock.input.connectedTo?.ownerBlock.isInput) {
153
- block.generateCommandsAndGatherInitPromises(initializationData, true);
154
- }
155
- return;
156
- }
157
-
158
145
  block.generateCommandsAndGatherInitPromises(
159
146
  initializationData,
160
147
  outputBlock.input.connectedTo?.ownerBlock === block