angular-three-postprocessing 2.12.0 → 2.13.0

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 (36) hide show
  1. package/esm2022/lib/effect-composer.mjs +20 -11
  2. package/esm2022/lib/effect.mjs +1 -2
  3. package/esm2022/lib/effects/ascii.mjs +7 -3
  4. package/esm2022/lib/effects/bloom.mjs +3 -3
  5. package/esm2022/lib/effects/brightness-contrast.mjs +3 -3
  6. package/esm2022/lib/effects/chromatic-abberation.mjs +3 -3
  7. package/esm2022/lib/effects/color-depth.mjs +3 -3
  8. package/esm2022/lib/effects/depth.mjs +3 -3
  9. package/esm2022/lib/effects/dot-screen.mjs +3 -3
  10. package/esm2022/lib/effects/fxaa.mjs +3 -3
  11. package/esm2022/lib/effects/glitch.mjs +5 -5
  12. package/esm2022/lib/effects/god-rays.mjs +5 -1
  13. package/esm2022/lib/effects/grid.mjs +5 -1
  14. package/esm2022/lib/effects/hue-saturation.mjs +3 -3
  15. package/esm2022/lib/effects/lens-flare.mjs +5 -1
  16. package/esm2022/lib/effects/lut.mjs +5 -1
  17. package/esm2022/lib/effects/noise.mjs +3 -3
  18. package/esm2022/lib/effects/pixelation.mjs +7 -3
  19. package/esm2022/lib/effects/scanline.mjs +3 -3
  20. package/esm2022/lib/effects/sepia.mjs +3 -3
  21. package/esm2022/lib/effects/shock-wave.mjs +3 -3
  22. package/esm2022/lib/effects/smaa.mjs +3 -3
  23. package/esm2022/lib/effects/tilt-shift-2.mjs +3 -3
  24. package/esm2022/lib/effects/tilt-shift.mjs +3 -3
  25. package/esm2022/lib/effects/vignette.mjs +3 -3
  26. package/esm2022/lib/effects/water.mjs +3 -3
  27. package/esm2022/n8ao/lib/n8ao.mjs +5 -1
  28. package/fesm2022/angular-three-postprocessing-n8ao.mjs +4 -0
  29. package/fesm2022/angular-three-postprocessing-n8ao.mjs.map +1 -1
  30. package/fesm2022/angular-three-postprocessing.mjs +67 -35
  31. package/fesm2022/angular-three-postprocessing.mjs.map +1 -1
  32. package/lib/effect-composer.d.ts +12 -15
  33. package/lib/effect.d.ts +0 -4
  34. package/lib/effects/ascii.d.ts +1 -0
  35. package/lib/effects/pixelation.d.ts +1 -0
  36. package/package.json +1 -1
@@ -46,6 +46,10 @@ export class NgtpN8AO {
46
46
  effect(() => {
47
47
  this.setQualityEffect();
48
48
  });
49
+ effect((onCleanup) => {
50
+ const effect = this.effect();
51
+ onCleanup(() => effect.dispose());
52
+ });
49
53
  }
50
54
  setQualityEffect() {
51
55
  const effect = this.effect();
@@ -75,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
75
79
  changeDetection: ChangeDetectionStrategy.OnPush,
76
80
  }]
77
81
  }], ctorParameters: () => [] });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibjhhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvbjhhby9zcmMvbGliL244YW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQTJCdkQsTUFBTSxjQUFjLEdBQW9CO0lBQ3ZDLFNBQVMsRUFBRSxFQUFFO0lBQ2IsUUFBUSxFQUFFLEdBQUc7SUFDYixPQUFPLEVBQUUsR0FBRztJQUNaLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLGVBQWUsRUFBRSxHQUFHO0lBQ3BCLFNBQVMsRUFBRSxDQUFDO0lBQ1osaUJBQWlCLEVBQUUsR0FBRztJQUN0QixVQUFVLEVBQUUsQ0FBQztJQUNiLFVBQVUsRUFBRSxHQUFHO0lBQ2YsY0FBYyxFQUFFLEdBQUc7SUFDbkIsS0FBSyxFQUFFLE9BQU87SUFDZCxlQUFlLEVBQUUsSUFBSTtJQUNyQixzQkFBc0IsRUFBRSxLQUFLO0lBQzdCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsT0FBTyxFQUFFLEtBQUs7SUFDZCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsVUFBVSxFQUFFLEtBQUs7Q0FDakIsQ0FBQztBQVlGLE1BQU0sT0FBTyxRQUFRO0lBWXBCO1FBWEEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRSxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFeEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEYsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFHRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFFeEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxNQUFNLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0FuQ1csUUFBUTttR0FBUixRQUFRLCtNQVBWOztFQUVULDREQUNTLE9BQU87OzRGQUlMLFFBQVE7a0JBVnBCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7O0VBRVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWV4cGVjdC1lcnJvciAtIG44YW8gaXMgbm90IHR5cGVkXG5pbXBvcnQgeyBOOEFPUG9zdFBhc3MgfSBmcm9tICduOGFvJztcblxuaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhcHBseVByb3BzLCBOZ3RBcmdzLCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RwRWZmZWN0Q29tcG9zZXIgfSBmcm9tICdhbmd1bGFyLXRocmVlLXBvc3Rwcm9jZXNzaW5nJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IENvbG9yUmVwcmVzZW50YXRpb24gfSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0cE44QU9PcHRpb25zIHtcblx0YW9SYWRpdXM6IG51bWJlcjtcblx0YW9Ub25lczogbnVtYmVyO1xuXHRkaXN0YW5jZUZhbGxvZmY6IG51bWJlcjtcblx0aW50ZW5zaXR5OiBudW1iZXI7XG5cdGJpYXNPZmZzZXQ6IG51bWJlcjtcblx0Ymlhc011bHRpcGxpZXI6IG51bWJlcjtcblx0YW9TYW1wbGVzOiBudW1iZXI7XG5cdGRlbm9pc2VTYW1wbGVzOiBudW1iZXI7XG5cdGRlbm9pc2VSYWRpdXM6IG51bWJlcjtcblx0Y29sb3I6IENvbG9yUmVwcmVzZW50YXRpb247XG5cdGhhbGZSZXM6IGJvb2xlYW47XG5cdGRlcHRoQXdhcmVVcHNhbXBsaW5nOiBib29sZWFuO1xuXHRzY3JlZW5TcGFjZVJhZGl1czogYm9vbGVhbjtcblx0cmVuZGVyTW9kZTogMCB8IDEgfCAyIHwgMyB8IDQ7XG5cdGRlbm9pc2VJdGVyYXRpb25zOiBudW1iZXI7XG5cdHRyYW5zcGFyZW5jeUF3YXJlOiBib29sZWFuO1xuXHRnYW1tYUNvcnJlY3Rpb246IGJvb2xlYW47XG5cdGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6IGJvb2xlYW47XG5cdGNvbG9yTXVsdGlwbHk6IGJvb2xlYW47XG5cdGFjY3VtdWxhdGU6IGJvb2xlYW47XG5cdHF1YWxpdHk/OiAncGVyZm9ybWFuY2UnIHwgJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJyB8ICd1bHRyYSc7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RwTjhBT09wdGlvbnMgPSB7XG5cdGFvU2FtcGxlczogMTYsXG5cdGFvUmFkaXVzOiA1LjAsXG5cdGFvVG9uZXM6IDAuMCxcblx0ZGVub2lzZVNhbXBsZXM6IDgsXG5cdGRlbm9pc2VSYWRpdXM6IDEyLFxuXHRkaXN0YW5jZUZhbGxvZmY6IDEuMCxcblx0aW50ZW5zaXR5OiA1LFxuXHRkZW5vaXNlSXRlcmF0aW9uczogMi4wLFxuXHRyZW5kZXJNb2RlOiAwLFxuXHRiaWFzT2Zmc2V0OiAwLjAsXG5cdGJpYXNNdWx0aXBsaWVyOiAwLjAsXG5cdGNvbG9yOiAnYmxhY2snLFxuXHRnYW1tYUNvcnJlY3Rpb246IHRydWUsXG5cdGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6IGZhbHNlLFxuXHRzY3JlZW5TcGFjZVJhZGl1czogZmFsc2UsXG5cdGhhbGZSZXM6IGZhbHNlLFxuXHRkZXB0aEF3YXJlVXBzYW1wbGluZzogdHJ1ZSxcblx0Y29sb3JNdWx0aXBseTogdHJ1ZSxcblx0dHJhbnNwYXJlbmN5QXdhcmU6IGZhbHNlLFxuXHRhY2N1bXVsYXRlOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHAtbjhhbycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1wcmltaXRpdmUgKmFyZ3M9XCJbZWZmZWN0KCldXCIgLz5cblx0YCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RwTjhBTyB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRwcml2YXRlIHF1YWxpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3F1YWxpdHknKTtcblxuXHRwcml2YXRlIGVmZmVjdENvbXBvc2VyID0gaW5qZWN0KE5ndHBFZmZlY3RDb21wb3Nlcik7XG5cblx0ZWZmZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtzY2VuZSwgY2FtZXJhXSA9IFt0aGlzLmVmZmVjdENvbXBvc2VyLnNjZW5lKCksIHRoaXMuZWZmZWN0Q29tcG9zZXIuY2FtZXJhKCldO1xuXHRcdHJldHVybiBuZXcgTjhBT1Bvc3RQYXNzKHNjZW5lLCBjYW1lcmEpO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgbjhhb0VmZmVjdCA9IHRoaXMuZWZmZWN0KCk7XG5cdFx0XHRpZiAoIW44YW9FZmZlY3QpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgeyBxdWFsaXR5OiBfLCAuLi5jb25maWd1cmF0aW9ucyB9ID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0XHRhcHBseVByb3BzKG44YW9FZmZlY3QuY29uZmlndXJhdGlvbiwgY29uZmlndXJhdGlvbnMpO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHRoaXMuc2V0UXVhbGl0eUVmZmVjdCgpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRRdWFsaXR5RWZmZWN0KCkge1xuXHRcdGNvbnN0IGVmZmVjdCA9IHRoaXMuZWZmZWN0KCk7XG5cdFx0aWYgKCFlZmZlY3QpIHJldHVybjtcblxuXHRcdGNvbnN0IHF1YWxpdHkgPSB0aGlzLnF1YWxpdHkoKTtcblx0XHRpZiAoIXF1YWxpdHkpIHJldHVybjtcblxuXHRcdGNvbnN0IHRpdGxlQ2FzZVF1YWxpdHkgPSBxdWFsaXR5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcXVhbGl0eS5zbGljZSgxKTtcblx0XHRlZmZlY3Quc2V0UXVhbGl0eSh0aXRsZUNhc2VRdWFsaXR5KTtcblx0fVxufVxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibjhhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcG9zdHByb2Nlc3Npbmcvbjhhby9zcmMvbGliL244YW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQXVDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQTJCdkQsTUFBTSxjQUFjLEdBQW9CO0lBQ3ZDLFNBQVMsRUFBRSxFQUFFO0lBQ2IsUUFBUSxFQUFFLEdBQUc7SUFDYixPQUFPLEVBQUUsR0FBRztJQUNaLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLGFBQWEsRUFBRSxFQUFFO0lBQ2pCLGVBQWUsRUFBRSxHQUFHO0lBQ3BCLFNBQVMsRUFBRSxDQUFDO0lBQ1osaUJBQWlCLEVBQUUsR0FBRztJQUN0QixVQUFVLEVBQUUsQ0FBQztJQUNiLFVBQVUsRUFBRSxHQUFHO0lBQ2YsY0FBYyxFQUFFLEdBQUc7SUFDbkIsS0FBSyxFQUFFLE9BQU87SUFDZCxlQUFlLEVBQUUsSUFBSTtJQUNyQixzQkFBc0IsRUFBRSxLQUFLO0lBQzdCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsT0FBTyxFQUFFLEtBQUs7SUFDZCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGFBQWEsRUFBRSxJQUFJO0lBQ25CLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsVUFBVSxFQUFFLEtBQUs7Q0FDakIsQ0FBQztBQVlGLE1BQU0sT0FBTyxRQUFRO0lBWXBCO1FBWEEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRSxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFeEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVwRCxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0QixNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEYsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFHRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFFeEIsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQjtRQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXBCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFFckIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7K0dBeENXLFFBQVE7bUdBQVIsUUFBUSwrTUFQVjs7RUFFVCw0REFDUyxPQUFPOzs0RkFJTCxRQUFRO2tCQVZwQixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOztFQUVUO29CQUNELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1leHBlY3QtZXJyb3IgLSBuOGFvIGlzIG5vdCB0eXBlZFxuaW1wb3J0IHsgTjhBT1Bvc3RQYXNzIH0gZnJvbSAnbjhhbyc7XG5cbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlQcm9wcywgTmd0QXJncywgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0cEVmZmVjdENvbXBvc2VyIH0gZnJvbSAnYW5ndWxhci10aHJlZS1wb3N0cHJvY2Vzc2luZyc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBDb2xvclJlcHJlc2VudGF0aW9uIH0gZnJvbSAndGhyZWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHBOOEFPT3B0aW9ucyB7XG5cdGFvUmFkaXVzOiBudW1iZXI7XG5cdGFvVG9uZXM6IG51bWJlcjtcblx0ZGlzdGFuY2VGYWxsb2ZmOiBudW1iZXI7XG5cdGludGVuc2l0eTogbnVtYmVyO1xuXHRiaWFzT2Zmc2V0OiBudW1iZXI7XG5cdGJpYXNNdWx0aXBsaWVyOiBudW1iZXI7XG5cdGFvU2FtcGxlczogbnVtYmVyO1xuXHRkZW5vaXNlU2FtcGxlczogbnVtYmVyO1xuXHRkZW5vaXNlUmFkaXVzOiBudW1iZXI7XG5cdGNvbG9yOiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHRoYWxmUmVzOiBib29sZWFuO1xuXHRkZXB0aEF3YXJlVXBzYW1wbGluZzogYm9vbGVhbjtcblx0c2NyZWVuU3BhY2VSYWRpdXM6IGJvb2xlYW47XG5cdHJlbmRlck1vZGU6IDAgfCAxIHwgMiB8IDMgfCA0O1xuXHRkZW5vaXNlSXRlcmF0aW9uczogbnVtYmVyO1xuXHR0cmFuc3BhcmVuY3lBd2FyZTogYm9vbGVhbjtcblx0Z2FtbWFDb3JyZWN0aW9uOiBib29sZWFuO1xuXHRsb2dhcml0aG1pY0RlcHRoQnVmZmVyOiBib29sZWFuO1xuXHRjb2xvck11bHRpcGx5OiBib29sZWFuO1xuXHRhY2N1bXVsYXRlOiBib29sZWFuO1xuXHRxdWFsaXR5PzogJ3BlcmZvcm1hbmNlJyB8ICdsb3cnIHwgJ21lZGl1bScgfCAnaGlnaCcgfCAndWx0cmEnO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0cE44QU9PcHRpb25zID0ge1xuXHRhb1NhbXBsZXM6IDE2LFxuXHRhb1JhZGl1czogNS4wLFxuXHRhb1RvbmVzOiAwLjAsXG5cdGRlbm9pc2VTYW1wbGVzOiA4LFxuXHRkZW5vaXNlUmFkaXVzOiAxMixcblx0ZGlzdGFuY2VGYWxsb2ZmOiAxLjAsXG5cdGludGVuc2l0eTogNSxcblx0ZGVub2lzZUl0ZXJhdGlvbnM6IDIuMCxcblx0cmVuZGVyTW9kZTogMCxcblx0Ymlhc09mZnNldDogMC4wLFxuXHRiaWFzTXVsdGlwbGllcjogMC4wLFxuXHRjb2xvcjogJ2JsYWNrJyxcblx0Z2FtbWFDb3JyZWN0aW9uOiB0cnVlLFxuXHRsb2dhcml0aG1pY0RlcHRoQnVmZmVyOiBmYWxzZSxcblx0c2NyZWVuU3BhY2VSYWRpdXM6IGZhbHNlLFxuXHRoYWxmUmVzOiBmYWxzZSxcblx0ZGVwdGhBd2FyZVVwc2FtcGxpbmc6IHRydWUsXG5cdGNvbG9yTXVsdGlwbHk6IHRydWUsXG5cdHRyYW5zcGFyZW5jeUF3YXJlOiBmYWxzZSxcblx0YWNjdW11bGF0ZTogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RwLW44YW8nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW2VmZmVjdCgpXVwiIC8+XG5cdGAsXG5cdGltcG9ydHM6IFtOZ3RBcmdzXSxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0cE44QU8ge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0cHJpdmF0ZSBxdWFsaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdxdWFsaXR5Jyk7XG5cblx0cHJpdmF0ZSBlZmZlY3RDb21wb3NlciA9IGluamVjdChOZ3RwRWZmZWN0Q29tcG9zZXIpO1xuXG5cdGVmZmVjdCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbc2NlbmUsIGNhbWVyYV0gPSBbdGhpcy5lZmZlY3RDb21wb3Nlci5zY2VuZSgpLCB0aGlzLmVmZmVjdENvbXBvc2VyLmNhbWVyYSgpXTtcblx0XHRyZXR1cm4gbmV3IE44QU9Qb3N0UGFzcyhzY2VuZSwgY2FtZXJhKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IG44YW9FZmZlY3QgPSB0aGlzLmVmZmVjdCgpO1xuXHRcdFx0aWYgKCFuOGFvRWZmZWN0KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IHsgcXVhbGl0eTogXywgLi4uY29uZmlndXJhdGlvbnMgfSA9IHRoaXMub3B0aW9ucygpO1xuXHRcdFx0YXBwbHlQcm9wcyhuOGFvRWZmZWN0LmNvbmZpZ3VyYXRpb24sIGNvbmZpZ3VyYXRpb25zKTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNldFF1YWxpdHlFZmZlY3QoKTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBlZmZlY3QgPSB0aGlzLmVmZmVjdCgpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IGVmZmVjdC5kaXNwb3NlKCkpO1xuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXRRdWFsaXR5RWZmZWN0KCkge1xuXHRcdGNvbnN0IGVmZmVjdCA9IHRoaXMuZWZmZWN0KCk7XG5cdFx0aWYgKCFlZmZlY3QpIHJldHVybjtcblxuXHRcdGNvbnN0IHF1YWxpdHkgPSB0aGlzLnF1YWxpdHkoKTtcblx0XHRpZiAoIXF1YWxpdHkpIHJldHVybjtcblxuXHRcdGNvbnN0IHRpdGxlQ2FzZVF1YWxpdHkgPSBxdWFsaXR5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcXVhbGl0eS5zbGljZSgxKTtcblx0XHRlZmZlY3Quc2V0UXVhbGl0eSh0aXRsZUNhc2VRdWFsaXR5KTtcblx0fVxufVxuIl19
@@ -47,6 +47,10 @@ class NgtpN8AO {
47
47
  effect(() => {
48
48
  this.setQualityEffect();
49
49
  });
50
+ effect((onCleanup) => {
51
+ const effect = this.effect();
52
+ onCleanup(() => effect.dispose());
53
+ });
50
54
  }
51
55
  setQualityEffect() {
52
56
  const effect = this.effect();
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-postprocessing-n8ao.mjs","sources":["../../../../libs/postprocessing/n8ao/src/lib/n8ao.ts","../../../../libs/postprocessing/n8ao/src/angular-three-postprocessing-n8ao.ts"],"sourcesContent":["// @ts-expect-error - n8ao is not typed\nimport { N8AOPostPass } from 'n8ao';\n\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { applyProps, NgtArgs, pick } from 'angular-three';\nimport { NgtpEffectComposer } from 'angular-three-postprocessing';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation } from 'three';\n\nexport interface NgtpN8AOOptions {\n\taoRadius: number;\n\taoTones: number;\n\tdistanceFalloff: number;\n\tintensity: number;\n\tbiasOffset: number;\n\tbiasMultiplier: number;\n\taoSamples: number;\n\tdenoiseSamples: number;\n\tdenoiseRadius: number;\n\tcolor: ColorRepresentation;\n\thalfRes: boolean;\n\tdepthAwareUpsampling: boolean;\n\tscreenSpaceRadius: boolean;\n\trenderMode: 0 | 1 | 2 | 3 | 4;\n\tdenoiseIterations: number;\n\ttransparencyAware: boolean;\n\tgammaCorrection: boolean;\n\tlogarithmicDepthBuffer: boolean;\n\tcolorMultiply: boolean;\n\taccumulate: boolean;\n\tquality?: 'performance' | 'low' | 'medium' | 'high' | 'ultra';\n}\n\nconst defaultOptions: NgtpN8AOOptions = {\n\taoSamples: 16,\n\taoRadius: 5.0,\n\taoTones: 0.0,\n\tdenoiseSamples: 8,\n\tdenoiseRadius: 12,\n\tdistanceFalloff: 1.0,\n\tintensity: 5,\n\tdenoiseIterations: 2.0,\n\trenderMode: 0,\n\tbiasOffset: 0.0,\n\tbiasMultiplier: 0.0,\n\tcolor: 'black',\n\tgammaCorrection: true,\n\tlogarithmicDepthBuffer: false,\n\tscreenSpaceRadius: false,\n\thalfRes: false,\n\tdepthAwareUpsampling: true,\n\tcolorMultiply: true,\n\ttransparencyAware: false,\n\taccumulate: false,\n};\n\n@Component({\n\tselector: 'ngtp-n8ao',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpN8AO {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate quality = pick(this.options, 'quality');\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\teffect = computed(() => {\n\t\tconst [scene, camera] = [this.effectComposer.scene(), this.effectComposer.camera()];\n\t\treturn new N8AOPostPass(scene, camera);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst n8aoEffect = this.effect();\n\t\t\tif (!n8aoEffect) return;\n\n\t\t\tconst { quality: _, ...configurations } = this.options();\n\t\t\tapplyProps(n8aoEffect.configuration, configurations);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.setQualityEffect();\n\t\t});\n\t}\n\n\tprivate setQualityEffect() {\n\t\tconst effect = this.effect();\n\t\tif (!effect) return;\n\n\t\tconst quality = this.quality();\n\t\tif (!quality) return;\n\n\t\tconst titleCaseQuality = quality.charAt(0).toUpperCase() + quality.slice(1);\n\t\teffect.setQuality(titleCaseQuality);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-postprocessing-n8ao.mjs","sources":["../../../../libs/postprocessing/n8ao/src/lib/n8ao.ts","../../../../libs/postprocessing/n8ao/src/angular-three-postprocessing-n8ao.ts"],"sourcesContent":["// @ts-expect-error - n8ao is not typed\nimport { N8AOPostPass } from 'n8ao';\n\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { applyProps, NgtArgs, pick } from 'angular-three';\nimport { NgtpEffectComposer } from 'angular-three-postprocessing';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { ColorRepresentation } from 'three';\n\nexport interface NgtpN8AOOptions {\n\taoRadius: number;\n\taoTones: number;\n\tdistanceFalloff: number;\n\tintensity: number;\n\tbiasOffset: number;\n\tbiasMultiplier: number;\n\taoSamples: number;\n\tdenoiseSamples: number;\n\tdenoiseRadius: number;\n\tcolor: ColorRepresentation;\n\thalfRes: boolean;\n\tdepthAwareUpsampling: boolean;\n\tscreenSpaceRadius: boolean;\n\trenderMode: 0 | 1 | 2 | 3 | 4;\n\tdenoiseIterations: number;\n\ttransparencyAware: boolean;\n\tgammaCorrection: boolean;\n\tlogarithmicDepthBuffer: boolean;\n\tcolorMultiply: boolean;\n\taccumulate: boolean;\n\tquality?: 'performance' | 'low' | 'medium' | 'high' | 'ultra';\n}\n\nconst defaultOptions: NgtpN8AOOptions = {\n\taoSamples: 16,\n\taoRadius: 5.0,\n\taoTones: 0.0,\n\tdenoiseSamples: 8,\n\tdenoiseRadius: 12,\n\tdistanceFalloff: 1.0,\n\tintensity: 5,\n\tdenoiseIterations: 2.0,\n\trenderMode: 0,\n\tbiasOffset: 0.0,\n\tbiasMultiplier: 0.0,\n\tcolor: 'black',\n\tgammaCorrection: true,\n\tlogarithmicDepthBuffer: false,\n\tscreenSpaceRadius: false,\n\thalfRes: false,\n\tdepthAwareUpsampling: true,\n\tcolorMultiply: true,\n\ttransparencyAware: false,\n\taccumulate: false,\n};\n\n@Component({\n\tselector: 'ngtp-n8ao',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[effect()]\" />\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtpN8AO {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate quality = pick(this.options, 'quality');\n\n\tprivate effectComposer = inject(NgtpEffectComposer);\n\n\teffect = computed(() => {\n\t\tconst [scene, camera] = [this.effectComposer.scene(), this.effectComposer.camera()];\n\t\treturn new N8AOPostPass(scene, camera);\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst n8aoEffect = this.effect();\n\t\t\tif (!n8aoEffect) return;\n\n\t\t\tconst { quality: _, ...configurations } = this.options();\n\t\t\tapplyProps(n8aoEffect.configuration, configurations);\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.setQualityEffect();\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst effect = this.effect();\n\t\t\tonCleanup(() => effect.dispose());\n\t\t});\n\t}\n\n\tprivate setQualityEffect() {\n\t\tconst effect = this.effect();\n\t\tif (!effect) return;\n\n\t\tconst quality = this.quality();\n\t\tif (!quality) return;\n\n\t\tconst titleCaseQuality = quality.charAt(0).toUpperCase() + quality.slice(1);\n\t\teffect.setQuality(titleCaseQuality);\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;AAyCA,MAAM,cAAc,GAAoB;AACvC,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,OAAO,EAAE,GAAG;AACZ,IAAA,cAAc,EAAE,CAAC;AACjB,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,eAAe,EAAE,GAAG;AACpB,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,iBAAiB,EAAE,GAAG;AACtB,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,UAAU,EAAE,GAAG;AACf,IAAA,cAAc,EAAE,GAAG;AACnB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,sBAAsB,EAAE,KAAK;AAC7B,IAAA,iBAAiB,EAAE,KAAK;AACxB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,oBAAoB,EAAE,IAAI;AAC1B,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,iBAAiB,EAAE,KAAK;AACxB,IAAA,UAAU,EAAE,KAAK;CACjB,CAAC;MAYW,QAAQ,CAAA;AAYpB,IAAA,WAAA,GAAA;AAXA,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAEpE,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAExC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEpD,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;YACtB,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;AACpF,YAAA,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;QAGF,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,UAAU;gBAAE,OAAO;AAExB,YAAA,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AACzD,YAAA,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAK;YACX,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACpB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACH;IAEO,gBAAgB,GAAA;AACvB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM;YAAE,OAAO;AAEpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO;YAAE,OAAO;AAErB,QAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAA,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;KACpC;+GAxCW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAPV,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,CAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,OAAO,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAIL,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;AAET,CAAA,CAAA;oBACD,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,iBAAA,CAAA;;;ACzED;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, input, Directive, Injector, computed, viewChild, effect, afterNextRender, untracked } from '@angular/core';
2
+ import { inject, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, input, Directive, Injector, computed, viewChild, effect, untracked } from '@angular/core';
3
3
  import { injectStore, pick, extend, getLocalState, injectBeforeRender, NgtArgs, vector2, is, NgtSelection, omit, resolveRef } from 'angular-three';
4
4
  import { createNoopInjectionToken } from 'ngxtension/create-injection-token';
5
5
  import { mergeInputs } from 'ngxtension/inject-inputs';
@@ -52,7 +52,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
52
52
  type: Directive,
53
53
  args: [{ standalone: true }]
54
54
  }] });
55
- const NgtpEffectHostDirective = { directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] };
56
55
 
57
56
  const defaultOptions$4 = {
58
57
  enabled: true,
@@ -77,11 +76,19 @@ class NgtpEffectComposer {
77
76
  this.stencilBuffer = pick(this.options, 'stencilBuffer');
78
77
  this.multisampling = pick(this.options, 'multisampling');
79
78
  this.frameBufferType = pick(this.options, 'frameBufferType');
80
- this.scene = computed(() => this.options().scene ?? this.defaultScene());
81
- this.camera = computed(() => this.options().camera ?? this.defaultCamera());
82
79
  this.enableNormalPass = pick(this.options, 'enableNormalPass');
83
80
  this.resolutionScale = pick(this.options, 'resolutionScale');
81
+ this.enabled = pick(this.options, 'enabled');
82
+ this.renderPriority = pick(this.options, 'renderPriority');
83
+ this.scene = computed(() => this.options().scene ?? this.defaultScene());
84
+ this.camera = computed(() => this.options().camera ?? this.defaultCamera());
84
85
  this.groupRef = viewChild.required('group');
86
+ this.priority = computed(() => {
87
+ const enabled = this.enabled();
88
+ if (!enabled)
89
+ return 0;
90
+ return this.renderPriority();
91
+ });
85
92
  this.composerData = computed(() => {
86
93
  const webGL2Available = isWebGL2Available();
87
94
  const [gl, scene, camera, depthBuffer, stencilBuffer, multisampling, frameBufferType, enableNormalPass, resolutionScale,] = [
@@ -137,13 +144,13 @@ class NgtpEffectComposer {
137
144
  });
138
145
  effect((onCleanup) => {
139
146
  const [group, { composer, normalPass, downSamplingPass }, camera] = [
140
- this.groupRef(),
147
+ this.groupRef().nativeElement,
141
148
  this.composerData(),
142
149
  this.camera(),
143
150
  ];
144
151
  const passes = [];
145
- if (group.nativeElement && composer) {
146
- const localState = getLocalState(group.nativeElement);
152
+ if (composer) {
153
+ const localState = getLocalState(group);
147
154
  if (!localState)
148
155
  return;
149
156
  const children = localState.nonObjects();
@@ -184,9 +191,9 @@ class NgtpEffectComposer {
184
191
  downSamplingPass.enabled = false;
185
192
  });
186
193
  });
187
- // NOTE: register beforeRender afterNextRender to ensure input is ready
188
- afterNextRender(() => {
189
- injectBeforeRender(({ delta }) => {
194
+ effect((onCleanup) => {
195
+ const priority = this.priority();
196
+ const sub = injectBeforeRender(({ delta }) => {
190
197
  const [{ composer }, { enabled, autoClear, stencilBuffer }, gl] = [
191
198
  this.composerData(),
192
199
  this.options(),
@@ -200,7 +207,8 @@ class NgtpEffectComposer {
200
207
  composer.render(delta);
201
208
  gl.autoClear = currentAutoClear;
202
209
  }
203
- }, { injector: this.injector, priority: this.options().enabled ? this.options().renderPriority : 0 });
210
+ }, { injector: this.injector, priority });
211
+ onCleanup(() => sub());
204
212
  });
205
213
  }
206
214
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpEffectComposer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -319,6 +327,10 @@ class NgtpASCII {
319
327
  constructor() {
320
328
  this.options = input(defaultOptions$3, { transform: mergeInputs(defaultOptions$3) });
321
329
  this.effect = computed(() => new ASCIIEffect(this.options()));
330
+ effect((onCleanup) => {
331
+ const effect = this.effect();
332
+ onCleanup(() => effect.dispose());
333
+ });
322
334
  }
323
335
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpASCII, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
324
336
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpASCII, isStandalone: true, selector: "ngtp-ascii", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
@@ -337,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
337
349
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
338
350
  changeDetection: ChangeDetectionStrategy.OnPush,
339
351
  }]
340
- }] });
352
+ }], ctorParameters: () => [] });
341
353
 
342
354
  extend({ BloomEffect });
343
355
  class NgtpBloom {
@@ -367,7 +379,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
367
379
  imports: [NgtArgs, NgtpEffectBlendMode],
368
380
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
369
381
  changeDetection: ChangeDetectionStrategy.OnPush,
370
- hostDirectives: [NgtpEffectHostDirective],
382
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
371
383
  providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],
372
384
  }]
373
385
  }] });
@@ -400,7 +412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
400
412
  imports: [NgtArgs, NgtpEffectBlendMode],
401
413
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
402
414
  changeDetection: ChangeDetectionStrategy.OnPush,
403
- hostDirectives: [NgtpEffectHostDirective],
415
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
404
416
  }]
405
417
  }] });
406
418
 
@@ -432,7 +444,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
432
444
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
433
445
  changeDetection: ChangeDetectionStrategy.OnPush,
434
446
  imports: [NgtArgs, NgtpEffectBlendMode],
435
- hostDirectives: [NgtpEffectHostDirective],
447
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
436
448
  }]
437
449
  }] });
438
450
 
@@ -492,7 +504,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
492
504
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
493
505
  changeDetection: ChangeDetectionStrategy.OnPush,
494
506
  imports: [NgtArgs, NgtpEffectBlendMode],
495
- hostDirectives: [NgtpEffectHostDirective],
507
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
496
508
  }]
497
509
  }] });
498
510
 
@@ -524,7 +536,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
524
536
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
525
537
  changeDetection: ChangeDetectionStrategy.OnPush,
526
538
  imports: [NgtArgs, NgtpEffectBlendMode],
527
- hostDirectives: [NgtpEffectHostDirective],
539
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
528
540
  }]
529
541
  }] });
530
542
 
@@ -600,7 +612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
600
612
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
601
613
  changeDetection: ChangeDetectionStrategy.OnPush,
602
614
  imports: [NgtArgs, NgtpEffectBlendMode],
603
- hostDirectives: [NgtpEffectHostDirective],
615
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
604
616
  }]
605
617
  }] });
606
618
 
@@ -632,7 +644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
632
644
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
633
645
  changeDetection: ChangeDetectionStrategy.OnPush,
634
646
  imports: [NgtArgs, NgtpEffectBlendMode],
635
- hostDirectives: [NgtpEffectHostDirective],
647
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
636
648
  }]
637
649
  }] });
638
650
 
@@ -661,15 +673,15 @@ class NgtpGlitch {
661
673
  strength,
662
674
  });
663
675
  });
664
- effect((onCleanup) => {
665
- const effect = this.effect();
666
- onCleanup(() => effect.dispose());
667
- });
668
676
  effect(() => {
669
677
  const [glitchEffect, invalidate, mode, active] = [this.effect(), this.invalidate(), this.mode(), this.active()];
670
678
  glitchEffect.mode = active ? mode || GlitchMode.SPORADIC : GlitchMode.DISABLED;
671
679
  invalidate();
672
680
  });
681
+ effect((onCleanup) => {
682
+ const effect = this.effect();
683
+ onCleanup(() => effect.dispose());
684
+ });
673
685
  }
674
686
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpGlitch, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
675
687
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpGlitch, isStandalone: true, selector: "ngtp-glitch", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
@@ -702,6 +714,10 @@ class NgtpGodRays {
702
714
  const [sun, godRaysEffect] = [this.options().sun, this.effect()];
703
715
  godRaysEffect.lightSource = is.ref(sun) ? sun.nativeElement : sun;
704
716
  });
717
+ effect((onCleanup) => {
718
+ const effect = this.effect();
719
+ onCleanup(() => effect.dispose());
720
+ });
705
721
  }
706
722
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpGodRays, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
707
723
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpGodRays, isStandalone: true, selector: "ngtp-god-rays", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
@@ -736,6 +752,10 @@ class NgtpGrid {
736
752
  effect.setSize(size.width, size.height);
737
753
  }
738
754
  });
755
+ effect((onCleanup) => {
756
+ const effect = this.effect();
757
+ onCleanup(() => effect.dispose());
758
+ });
739
759
  }
740
760
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpGrid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
741
761
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpGrid, isStandalone: true, selector: "ngtp-grid", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
@@ -784,7 +804,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
784
804
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
785
805
  changeDetection: ChangeDetectionStrategy.OnPush,
786
806
  imports: [NgtArgs, NgtpEffectBlendMode],
787
- hostDirectives: [NgtpEffectHostDirective],
807
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
788
808
  }]
789
809
  }] });
790
810
 
@@ -898,6 +918,10 @@ class NgtpLensFlare {
898
918
  iResolution.value.y = viewport.height;
899
919
  }
900
920
  });
921
+ effect((onCleanup) => {
922
+ const effect = this.effect();
923
+ onCleanup(() => effect.dispose());
924
+ });
901
925
  injectBeforeRender(({ delta }) => {
902
926
  const [effect] = [this.effect()];
903
927
  if (!effect)
@@ -993,6 +1017,10 @@ class NgtpLUT {
993
1017
  effect.lut = lut;
994
1018
  invalidate();
995
1019
  });
1020
+ effect((onCleanup) => {
1021
+ const effect = this.effect();
1022
+ onCleanup(() => effect.dispose());
1023
+ });
996
1024
  }
997
1025
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpLUT, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
998
1026
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpLUT, isStandalone: true, selector: "ngtp-lut", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
@@ -1041,7 +1069,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1041
1069
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1042
1070
  changeDetection: ChangeDetectionStrategy.OnPush,
1043
1071
  imports: [NgtArgs, NgtpEffectBlendMode],
1044
- hostDirectives: [NgtpEffectHostDirective],
1072
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1045
1073
  providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.COLOR_DODGE })],
1046
1074
  }]
1047
1075
  }] });
@@ -1191,6 +1219,10 @@ class NgtpPixelation {
1191
1219
  this.options = input({ granularity: 5 }, { transform: mergeInputs({ granularity: 5 }) });
1192
1220
  this.granularity = pick(this.options, 'granularity');
1193
1221
  this.effect = computed(() => new PixelationEffect(this.granularity()));
1222
+ effect((onCleanup) => {
1223
+ const effect = this.effect();
1224
+ onCleanup(() => effect.dispose());
1225
+ });
1194
1226
  }
1195
1227
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtpPixelation, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1196
1228
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", type: NgtpPixelation, isStandalone: true, selector: "ngtp-pixelation", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
@@ -1209,7 +1241,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1209
1241
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1210
1242
  imports: [NgtArgs],
1211
1243
  }]
1212
- }] });
1244
+ }], ctorParameters: () => [] });
1213
1245
 
1214
1246
  extend({ ScanlineEffect });
1215
1247
  const defaultOptions = {
@@ -1242,7 +1274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1242
1274
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1243
1275
  changeDetection: ChangeDetectionStrategy.OnPush,
1244
1276
  imports: [NgtArgs, NgtpEffectBlendMode],
1245
- hostDirectives: [NgtpEffectHostDirective],
1277
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1246
1278
  providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.OVERLAY })],
1247
1279
  }]
1248
1280
  }] });
@@ -1275,7 +1307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1275
1307
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1276
1308
  changeDetection: ChangeDetectionStrategy.OnPush,
1277
1309
  imports: [NgtArgs, NgtpEffectBlendMode],
1278
- hostDirectives: [NgtpEffectHostDirective],
1310
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1279
1311
  }]
1280
1312
  }] });
1281
1313
 
@@ -1307,7 +1339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1307
1339
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1308
1340
  changeDetection: ChangeDetectionStrategy.OnPush,
1309
1341
  imports: [NgtArgs, NgtpEffectBlendMode],
1310
- hostDirectives: [NgtpEffectHostDirective],
1342
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1311
1343
  }]
1312
1344
  }] });
1313
1345
 
@@ -1339,7 +1371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1339
1371
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1340
1372
  changeDetection: ChangeDetectionStrategy.OnPush,
1341
1373
  imports: [NgtArgs, NgtpEffectBlendMode],
1342
- hostDirectives: [NgtpEffectHostDirective],
1374
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1343
1375
  }]
1344
1376
  }] });
1345
1377
 
@@ -1371,7 +1403,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1371
1403
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1372
1404
  changeDetection: ChangeDetectionStrategy.OnPush,
1373
1405
  imports: [NgtArgs, NgtpEffectBlendMode],
1374
- hostDirectives: [NgtpEffectHostDirective],
1406
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1375
1407
  providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.ADD })],
1376
1408
  }]
1377
1409
  }] });
@@ -1485,7 +1517,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1485
1517
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1486
1518
  changeDetection: ChangeDetectionStrategy.OnPush,
1487
1519
  imports: [NgtArgs, NgtpEffectBlendMode],
1488
- hostDirectives: [NgtpEffectHostDirective],
1520
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1489
1521
  providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],
1490
1522
  }]
1491
1523
  }] });
@@ -1595,7 +1627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1595
1627
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1596
1628
  changeDetection: ChangeDetectionStrategy.OnPush,
1597
1629
  imports: [NgtArgs, NgtpEffectBlendMode],
1598
- hostDirectives: [NgtpEffectHostDirective],
1630
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1599
1631
  }]
1600
1632
  }] });
1601
1633
 
@@ -1651,7 +1683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1651
1683
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
1652
1684
  changeDetection: ChangeDetectionStrategy.OnPush,
1653
1685
  imports: [NgtArgs, NgtpEffectBlendMode],
1654
- hostDirectives: [NgtpEffectHostDirective],
1686
+ hostDirectives: [{ directive: NgtpEffect, inputs: ['blendFunction', 'opacity'] }],
1655
1687
  providers: [provideDefaultEffectOptions({ blendFunction: BlendFunction.NORMAL })],
1656
1688
  }]
1657
1689
  }] });
@@ -1660,5 +1692,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
1660
1692
  * Generated bundle index. Do not edit.
1661
1693
  */
1662
1694
 
1663
- export { ASCIIEffect, LensFlareEffect, NgtpASCII, NgtpBloom, NgtpBrightnessContrast, NgtpChromaticAberration, NgtpColorAverage, NgtpColorDepth, NgtpDepth, NgtpDepthOfField, NgtpDotScreen, NgtpEffect, NgtpEffectBlendMode, NgtpEffectComposer, NgtpEffectHostDirective, NgtpFXAA, NgtpGlitch, NgtpGodRays, NgtpGrid, NgtpHueSaturation, NgtpLUT, NgtpLensFlare, NgtpNoise, NgtpOutline, NgtpPixelation, NgtpSMAA, NgtpScanline, NgtpSepia, NgtpShockWave, NgtpTiltShift, NgtpTiltShift2, NgtpToneMapping, NgtpVignette, NgtpWater, TiltShift2Effect, WaterEffect, injectDefaultEffectOptions, provideDefaultEffectOptions };
1695
+ export { ASCIIEffect, LensFlareEffect, NgtpASCII, NgtpBloom, NgtpBrightnessContrast, NgtpChromaticAberration, NgtpColorAverage, NgtpColorDepth, NgtpDepth, NgtpDepthOfField, NgtpDotScreen, NgtpEffect, NgtpEffectBlendMode, NgtpEffectComposer, NgtpFXAA, NgtpGlitch, NgtpGodRays, NgtpGrid, NgtpHueSaturation, NgtpLUT, NgtpLensFlare, NgtpNoise, NgtpOutline, NgtpPixelation, NgtpSMAA, NgtpScanline, NgtpSepia, NgtpShockWave, NgtpTiltShift, NgtpTiltShift2, NgtpToneMapping, NgtpVignette, NgtpWater, TiltShift2Effect, WaterEffect, injectDefaultEffectOptions, provideDefaultEffectOptions };
1664
1696
  //# sourceMappingURL=angular-three-postprocessing.mjs.map