angular-three-postprocessing 1.3.0 → 1.5.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/esm2020/effects/lib/bloom/bloom.mjs +3 -3
  2. package/esm2020/effects/lib/brightness-contrast/brightness-contrast.mjs +3 -3
  3. package/esm2020/effects/lib/color-depth/color-depth.mjs +3 -3
  4. package/esm2020/effects/lib/depth/depth.mjs +3 -3
  5. package/esm2020/effects/lib/dot-screen/dot-screen.mjs +3 -3
  6. package/esm2020/effects/lib/hue-saturation/hue-saturation.mjs +3 -3
  7. package/esm2020/effects/lib/lut/lut.mjs +3 -3
  8. package/esm2020/effects/lib/noise/noise.mjs +3 -3
  9. package/esm2020/effects/lib/scanline/scanline.mjs +3 -3
  10. package/esm2020/effects/lib/sepia/sepia.mjs +3 -3
  11. package/esm2020/effects/lib/ssao/ssao.mjs +3 -3
  12. package/esm2020/effects/lib/tilt-shift/tilt-shift.mjs +3 -3
  13. package/esm2020/effects/lib/tone-mapping/tone-mapping.mjs +3 -3
  14. package/esm2020/effects/lib/vignette/vignette.mjs +3 -3
  15. package/esm2020/lib/effect-composer.mjs +27 -6
  16. package/esm2020/lib/effect.mjs +3 -3
  17. package/esm2020/selection/angular-three-postprocessing-selection.mjs +5 -0
  18. package/esm2020/selection/index.mjs +3 -0
  19. package/esm2020/selection/lib/select.mjs +68 -0
  20. package/esm2020/selection/lib/selection.mjs +43 -0
  21. package/fesm2015/angular-three-postprocessing-effects.mjs +42 -42
  22. package/fesm2015/angular-three-postprocessing-selection.mjs +114 -0
  23. package/fesm2015/angular-three-postprocessing-selection.mjs.map +1 -0
  24. package/fesm2015/angular-three-postprocessing.mjs +29 -8
  25. package/fesm2015/angular-three-postprocessing.mjs.map +1 -1
  26. package/fesm2020/angular-three-postprocessing-effects.mjs +42 -42
  27. package/fesm2020/angular-three-postprocessing-selection.mjs +114 -0
  28. package/fesm2020/angular-three-postprocessing-selection.mjs.map +1 -0
  29. package/fesm2020/angular-three-postprocessing.mjs +29 -8
  30. package/fesm2020/angular-three-postprocessing.mjs.map +1 -1
  31. package/package.json +12 -4
  32. package/plugin/package.json +2 -3
  33. package/selection/README.md +3 -0
  34. package/selection/index.d.ts +2 -0
  35. package/selection/lib/select.d.ts +14 -0
  36. package/selection/lib/selection.d.ts +18 -0
@@ -14,11 +14,11 @@ class NgtpBloom extends NgtpEffect {
14
14
  return BloomEffect;
15
15
  }
16
16
  }
17
- NgtpBloom.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpBloom, deps: null, target: i0.ɵɵFactoryTarget.Component });
18
- NgtpBloom.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpBloom, isStandalone: true, selector: "ngtp-bloom", inputs: { mipmapBlur: "mipmapBlur", luminanceThreshold: "luminanceThreshold", luminanceSmoothing: "luminanceSmoothing", intensity: "intensity", resolutionScale: "resolutionScale", resolutionX: "resolutionX", resolutionY: "resolutionY", width: "width", height: "height", kernelSize: "kernelSize" }, usesInheritance: true, ngImport: i0, template: `
17
+ NgtpBloom.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpBloom, deps: null, target: i0.ɵɵFactoryTarget.Component });
18
+ NgtpBloom.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpBloom, isStandalone: true, selector: "ngtp-bloom", inputs: { mipmapBlur: "mipmapBlur", luminanceThreshold: "luminanceThreshold", luminanceSmoothing: "luminanceSmoothing", intensity: "intensity", resolutionScale: "resolutionScale", resolutionX: "resolutionX", resolutionY: "resolutionY", width: "width", height: "height", kernelSize: "kernelSize" }, usesInheritance: true, ngImport: i0, template: `
19
19
  <ngt-primitive *args="[get('effect')]" ngtCompound />
20
20
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpBloom, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpBloom, decorators: [{
22
22
  type: Component,
23
23
  args: [{
24
24
  selector: 'ngtp-bloom',
@@ -48,11 +48,11 @@ class NgtpBrightnessContrast extends NgtpEffect {
48
48
  return BrightnessContrastEffect;
49
49
  }
50
50
  }
51
- NgtpBrightnessContrast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpBrightnessContrast, deps: null, target: i0.ɵɵFactoryTarget.Component });
52
- NgtpBrightnessContrast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpBrightnessContrast, isStandalone: true, selector: "ngtp-brightness-contrast", inputs: { brightness: "brightness", contrast: "contrast" }, usesInheritance: true, ngImport: i0, template: `
51
+ NgtpBrightnessContrast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpBrightnessContrast, deps: null, target: i0.ɵɵFactoryTarget.Component });
52
+ NgtpBrightnessContrast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpBrightnessContrast, isStandalone: true, selector: "ngtp-brightness-contrast", inputs: { brightness: "brightness", contrast: "contrast" }, usesInheritance: true, ngImport: i0, template: `
53
53
  <ngt-primitive *args="[get('effect')]" ngtCompound />
54
54
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpBrightnessContrast, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpBrightnessContrast, decorators: [{
56
56
  type: Component,
57
57
  args: [{
58
58
  selector: 'ngtp-brightness-contrast',
@@ -71,11 +71,11 @@ class NgtpColorDepth extends NgtpEffect {
71
71
  return ColorDepthEffect;
72
72
  }
73
73
  }
74
- NgtpColorDepth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpColorDepth, deps: null, target: i0.ɵɵFactoryTarget.Component });
75
- NgtpColorDepth.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpColorDepth, isStandalone: true, selector: "ngtp-color-depth", inputs: { bits: "bits" }, usesInheritance: true, ngImport: i0, template: `
74
+ NgtpColorDepth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpColorDepth, deps: null, target: i0.ɵɵFactoryTarget.Component });
75
+ NgtpColorDepth.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpColorDepth, isStandalone: true, selector: "ngtp-color-depth", inputs: { bits: "bits" }, usesInheritance: true, ngImport: i0, template: `
76
76
  <ngt-primitive *args="[get('effect')]" ngtCompound />
77
77
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpColorDepth, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpColorDepth, decorators: [{
79
79
  type: Component,
80
80
  args: [{
81
81
  selector: 'ngtp-color-depth',
@@ -94,11 +94,11 @@ class NgtpDepth extends NgtpEffect {
94
94
  return DepthEffect;
95
95
  }
96
96
  }
97
- NgtpDepth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpDepth, deps: null, target: i0.ɵɵFactoryTarget.Component });
98
- NgtpDepth.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpDepth, isStandalone: true, selector: "ngtp-depth", inputs: { inverted: "inverted" }, usesInheritance: true, ngImport: i0, template: `
97
+ NgtpDepth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpDepth, deps: null, target: i0.ɵɵFactoryTarget.Component });
98
+ NgtpDepth.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpDepth, isStandalone: true, selector: "ngtp-depth", inputs: { inverted: "inverted" }, usesInheritance: true, ngImport: i0, template: `
99
99
  <ngt-primitive *args="[get('effect')]" ngtCompound />
100
100
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpDepth, decorators: [{
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpDepth, decorators: [{
102
102
  type: Component,
103
103
  args: [{
104
104
  selector: 'ngtp-depth',
@@ -117,11 +117,11 @@ class NgtpDotScreen extends NgtpEffect {
117
117
  return DotScreenEffect;
118
118
  }
119
119
  }
120
- NgtpDotScreen.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpDotScreen, deps: null, target: i0.ɵɵFactoryTarget.Component });
121
- NgtpDotScreen.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpDotScreen, isStandalone: true, selector: "ngtp-dot-screen", inputs: { angle: "angle", scale: "scale" }, usesInheritance: true, ngImport: i0, template: `
120
+ NgtpDotScreen.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpDotScreen, deps: null, target: i0.ɵɵFactoryTarget.Component });
121
+ NgtpDotScreen.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpDotScreen, isStandalone: true, selector: "ngtp-dot-screen", inputs: { angle: "angle", scale: "scale" }, usesInheritance: true, ngImport: i0, template: `
122
122
  <ngt-primitive *args="[get('effect')]" ngtCompound />
123
123
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpDotScreen, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpDotScreen, decorators: [{
125
125
  type: Component,
126
126
  args: [{
127
127
  selector: 'ngtp-dot-screen',
@@ -140,11 +140,11 @@ class NgtpHueSaturation extends NgtpEffect {
140
140
  return HueSaturationEffect;
141
141
  }
142
142
  }
143
- NgtpHueSaturation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpHueSaturation, deps: null, target: i0.ɵɵFactoryTarget.Component });
144
- NgtpHueSaturation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpHueSaturation, isStandalone: true, selector: "ngtp-hue-saturation", inputs: { hue: "hue", saturation: "saturation" }, usesInheritance: true, ngImport: i0, template: `
143
+ NgtpHueSaturation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpHueSaturation, deps: null, target: i0.ɵɵFactoryTarget.Component });
144
+ NgtpHueSaturation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpHueSaturation, isStandalone: true, selector: "ngtp-hue-saturation", inputs: { hue: "hue", saturation: "saturation" }, usesInheritance: true, ngImport: i0, template: `
145
145
  <ngt-primitive *args="[get('effect')]" ngtCompound />
146
146
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpHueSaturation, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpHueSaturation, decorators: [{
148
148
  type: Component,
149
149
  args: [{
150
150
  selector: 'ngtp-hue-saturation',
@@ -189,11 +189,11 @@ class NgtpLUT extends NgtRxStore {
189
189
  });
190
190
  }
191
191
  }
192
- NgtpLUT.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpLUT, deps: null, target: i0.ɵɵFactoryTarget.Component });
193
- NgtpLUT.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpLUT, isStandalone: true, selector: "ngtp-lut", inputs: { blendFunction: "blendFunction", tetrahedralInterpolation: "tetrahedralInterpolation", lutRef: "lutRef", lut: "lut" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
192
+ NgtpLUT.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpLUT, deps: null, target: i0.ɵɵFactoryTarget.Component });
193
+ NgtpLUT.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpLUT, isStandalone: true, selector: "ngtp-lut", inputs: { blendFunction: "blendFunction", tetrahedralInterpolation: "tetrahedralInterpolation", lutRef: "lutRef", lut: "lut" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
194
194
  <ngt-primitive *args="[get('effect')]" [ref]="lutRef" />
195
195
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpLUT, decorators: [{
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpLUT, decorators: [{
197
197
  type: Component,
198
198
  args: [{
199
199
  selector: 'ngtp-lut',
@@ -220,11 +220,11 @@ class NgtpNoise extends NgtpEffect {
220
220
  return NoiseEffect;
221
221
  }
222
222
  }
223
- NgtpNoise.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpNoise, deps: null, target: i0.ɵɵFactoryTarget.Component });
224
- NgtpNoise.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpNoise, isStandalone: true, selector: "ngtp-noise", inputs: { premultiply: "premultiply" }, usesInheritance: true, ngImport: i0, template: `
223
+ NgtpNoise.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpNoise, deps: null, target: i0.ɵɵFactoryTarget.Component });
224
+ NgtpNoise.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpNoise, isStandalone: true, selector: "ngtp-noise", inputs: { premultiply: "premultiply" }, usesInheritance: true, ngImport: i0, template: `
225
225
  <ngt-primitive *args="[get('effect')]" ngtCompound />
226
226
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpNoise, decorators: [{
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpNoise, decorators: [{
228
228
  type: Component,
229
229
  args: [{
230
230
  selector: 'ngtp-noise',
@@ -247,11 +247,11 @@ class NgtpScanline extends NgtpEffect {
247
247
  return ScanlineEffect;
248
248
  }
249
249
  }
250
- NgtpScanline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpScanline, deps: null, target: i0.ɵɵFactoryTarget.Component });
251
- NgtpScanline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpScanline, isStandalone: true, selector: "ngtp-scanline", inputs: { density: "density" }, usesInheritance: true, ngImport: i0, template: `
250
+ NgtpScanline.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpScanline, deps: null, target: i0.ɵɵFactoryTarget.Component });
251
+ NgtpScanline.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpScanline, isStandalone: true, selector: "ngtp-scanline", inputs: { density: "density" }, usesInheritance: true, ngImport: i0, template: `
252
252
  <ngt-primitive *args="[get('effect')]" ngtCompound />
253
253
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
254
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpScanline, decorators: [{
254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpScanline, decorators: [{
255
255
  type: Component,
256
256
  args: [{
257
257
  selector: 'ngtp-scanline',
@@ -270,11 +270,11 @@ class NgtpSepia extends NgtpEffect {
270
270
  return SepiaEffect;
271
271
  }
272
272
  }
273
- NgtpSepia.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpSepia, deps: null, target: i0.ɵɵFactoryTarget.Component });
274
- NgtpSepia.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpSepia, isStandalone: true, selector: "ngtp-sepia", inputs: { intensity: "intensity" }, usesInheritance: true, ngImport: i0, template: `
273
+ NgtpSepia.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSepia, deps: null, target: i0.ɵɵFactoryTarget.Component });
274
+ NgtpSepia.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpSepia, isStandalone: true, selector: "ngtp-sepia", inputs: { intensity: "intensity" }, usesInheritance: true, ngImport: i0, template: `
275
275
  <ngt-primitive *args="[get('effect')]" ngtCompound />
276
276
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpSepia, decorators: [{
277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSepia, decorators: [{
278
278
  type: Component,
279
279
  args: [{
280
280
  selector: 'ngtp-sepia',
@@ -333,11 +333,11 @@ class NgtpSSAO extends NgtRxStore {
333
333
  })));
334
334
  }
335
335
  }
336
- NgtpSSAO.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpSSAO, deps: null, target: i0.ɵɵFactoryTarget.Component });
337
- NgtpSSAO.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpSSAO, isStandalone: true, selector: "ngtp-ssao", inputs: { blendFunction: "blendFunction", distanceScaling: "distanceScaling", depthAwareUpsampling: "depthAwareUpsampling", normalDepthBuffer: "normalDepthBuffer", samples: "samples", rings: "rings", worldDistanceThreshold: "worldDistanceThreshold", worldDistanceFalloff: "worldDistanceFalloff", worldProximityThreshold: "worldProximityThreshold", worldProximityFalloff: "worldProximityFalloff", distanceThreshold: "distanceThreshold", distanceFalloff: "distanceFalloff", rangeThreshold: "rangeThreshold", rangeFalloff: "rangeFalloff", minRadiusScale: "minRadiusScale", luminanceInfluence: "luminanceInfluence", radius: "radius", intensity: "intensity", bias: "bias", fade: "fade", color: "color", resolutionScale: "resolutionScale", resolutionX: "resolutionX", resolutionY: "resolutionY", width: "width", height: "height", ssaoRef: "ssaoRef" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
336
+ NgtpSSAO.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSSAO, deps: null, target: i0.ɵɵFactoryTarget.Component });
337
+ NgtpSSAO.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpSSAO, isStandalone: true, selector: "ngtp-ssao", inputs: { blendFunction: "blendFunction", distanceScaling: "distanceScaling", depthAwareUpsampling: "depthAwareUpsampling", normalDepthBuffer: "normalDepthBuffer", samples: "samples", rings: "rings", worldDistanceThreshold: "worldDistanceThreshold", worldDistanceFalloff: "worldDistanceFalloff", worldProximityThreshold: "worldProximityThreshold", worldProximityFalloff: "worldProximityFalloff", distanceThreshold: "distanceThreshold", distanceFalloff: "distanceFalloff", rangeThreshold: "rangeThreshold", rangeFalloff: "rangeFalloff", minRadiusScale: "minRadiusScale", luminanceInfluence: "luminanceInfluence", radius: "radius", intensity: "intensity", bias: "bias", fade: "fade", color: "color", resolutionScale: "resolutionScale", resolutionX: "resolutionX", resolutionY: "resolutionY", width: "width", height: "height", ssaoRef: "ssaoRef" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
338
338
  <ngt-primitive *args="[get('effect')]" [ref]="ssaoRef" />
339
339
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpSSAO, decorators: [{
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSSAO, decorators: [{
341
341
  type: Component,
342
342
  args: [{
343
343
  selector: 'ngtp-ssao',
@@ -389,11 +389,11 @@ class NgtpTiltShift extends NgtpEffect {
389
389
  return TiltShiftEffect;
390
390
  }
391
391
  }
392
- NgtpTiltShift.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpTiltShift, deps: null, target: i0.ɵɵFactoryTarget.Component });
393
- NgtpTiltShift.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpTiltShift, isStandalone: true, selector: "ngtp-tilt-shift", inputs: { offset: "offset", rotation: "rotation", focusArea: "focusArea", feather: "feather", bias: "bias", kernelSize: "kernelSize", resolutionScale: "resolutionScale", resolutionX: "resolutionX", resolutionY: "resolutionY" }, usesInheritance: true, ngImport: i0, template: `
392
+ NgtpTiltShift.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpTiltShift, deps: null, target: i0.ɵɵFactoryTarget.Component });
393
+ NgtpTiltShift.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpTiltShift, isStandalone: true, selector: "ngtp-tilt-shift", inputs: { offset: "offset", rotation: "rotation", focusArea: "focusArea", feather: "feather", bias: "bias", kernelSize: "kernelSize", resolutionScale: "resolutionScale", resolutionX: "resolutionX", resolutionY: "resolutionY" }, usesInheritance: true, ngImport: i0, template: `
394
394
  <ngt-primitive *args="[get('effect')]" ngtCompound />
395
395
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
396
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpTiltShift, decorators: [{
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpTiltShift, decorators: [{
397
397
  type: Component,
398
398
  args: [{
399
399
  selector: 'ngtp-tilt-shift',
@@ -422,11 +422,11 @@ class NgtpToneMapping extends NgtpEffect {
422
422
  return ToneMappingEffect;
423
423
  }
424
424
  }
425
- NgtpToneMapping.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpToneMapping, deps: null, target: i0.ɵɵFactoryTarget.Component });
426
- NgtpToneMapping.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpToneMapping, isStandalone: true, selector: "ngtp-tone-mapping", inputs: { adaptive: "adaptive", mode: "mode", resolution: "resolution", maxLuminance: "maxLuminance", whitePoint: "whitePoint", middleGrey: "middleGrey", minLuminance: "minLuminance", averageLuminance: "averageLuminance", adaptationRate: "adaptationRate" }, usesInheritance: true, ngImport: i0, template: `
425
+ NgtpToneMapping.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpToneMapping, deps: null, target: i0.ɵɵFactoryTarget.Component });
426
+ NgtpToneMapping.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpToneMapping, isStandalone: true, selector: "ngtp-tone-mapping", inputs: { adaptive: "adaptive", mode: "mode", resolution: "resolution", maxLuminance: "maxLuminance", whitePoint: "whitePoint", middleGrey: "middleGrey", minLuminance: "minLuminance", averageLuminance: "averageLuminance", adaptationRate: "adaptationRate" }, usesInheritance: true, ngImport: i0, template: `
427
427
  <ngt-primitive *args="[get('effect')]" ngtCompound />
428
428
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpToneMapping, decorators: [{
429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpToneMapping, decorators: [{
430
430
  type: Component,
431
431
  args: [{
432
432
  selector: 'ngtp-tone-mapping',
@@ -455,11 +455,11 @@ class NgtpVignette extends NgtpEffect {
455
455
  return VignetteEffect;
456
456
  }
457
457
  }
458
- NgtpVignette.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpVignette, deps: null, target: i0.ɵɵFactoryTarget.Component });
459
- NgtpVignette.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpVignette, isStandalone: true, selector: "ngtp-vignette", inputs: { technique: "technique", eskil: "eskil", offset: "offset", darkness: "darkness" }, usesInheritance: true, ngImport: i0, template: `
458
+ NgtpVignette.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpVignette, deps: null, target: i0.ɵɵFactoryTarget.Component });
459
+ NgtpVignette.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpVignette, isStandalone: true, selector: "ngtp-vignette", inputs: { technique: "technique", eskil: "eskil", offset: "offset", darkness: "darkness" }, usesInheritance: true, ngImport: i0, template: `
460
460
  <ngt-primitive *args="[get('effect')]" ngtCompound />
461
461
  `, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "[args]", inputs: ["args"] }] });
462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpVignette, decorators: [{
462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpVignette, decorators: [{
463
463
  type: Component,
464
464
  args: [{
465
465
  selector: 'ngtp-vignette',
@@ -0,0 +1,114 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Component, Input, inject, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
+ import { NgtRxStore, extend, injectNgtRef } from 'angular-three';
4
+ import { combineLatest } from 'rxjs';
5
+ import { Group } from 'three';
6
+
7
+ const NGTP_SELECTION_API = new InjectionToken('NgtpSelection API');
8
+ function ngtpSelectionApiFactory(selection) {
9
+ const api = {
10
+ get selected() {
11
+ return selection.get('selected');
12
+ },
13
+ select: selection.set.bind(selection),
14
+ get enabled() {
15
+ return selection.get('enabled');
16
+ },
17
+ };
18
+ return api;
19
+ }
20
+ class NgtpSelection extends NgtRxStore {
21
+ set enabled(enabled) {
22
+ this.set({ enabled });
23
+ }
24
+ initialize() {
25
+ super.initialize();
26
+ this.set({ selected: [], enabled: true });
27
+ }
28
+ }
29
+ NgtpSelection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSelection, deps: null, target: i0.ɵɵFactoryTarget.Component });
30
+ NgtpSelection.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpSelection, isStandalone: true, selector: "ngtp-selection", inputs: { enabled: "enabled" }, providers: [{ provide: NGTP_SELECTION_API, useFactory: ngtpSelectionApiFactory, deps: [NgtpSelection] }], usesInheritance: true, ngImport: i0, template: `
31
+ <ng-content />
32
+ `, isInline: true });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSelection, decorators: [{
34
+ type: Component,
35
+ args: [{
36
+ selector: 'ngtp-selection',
37
+ standalone: true,
38
+ template: `
39
+ <ng-content />
40
+ `,
41
+ providers: [{ provide: NGTP_SELECTION_API, useFactory: ngtpSelectionApiFactory, deps: [NgtpSelection] }],
42
+ }]
43
+ }], propDecorators: { enabled: [{
44
+ type: Input
45
+ }] } });
46
+
47
+ extend({ Group });
48
+ class NgtpSelect extends NgtRxStore {
49
+ constructor() {
50
+ super(...arguments);
51
+ this.groupRef = injectNgtRef();
52
+ this.selectionApi = inject(NGTP_SELECTION_API);
53
+ }
54
+ set enabled(enabled) {
55
+ this.set({ enabled });
56
+ }
57
+ initialize() {
58
+ super.initialize();
59
+ this.set({ enabled: false });
60
+ }
61
+ ngOnInit() {
62
+ this.setSelectEffect();
63
+ }
64
+ setSelectEffect() {
65
+ this.effect(combineLatest([this.select('enabled'), this.groupRef.children$()]), ([enabled]) => {
66
+ if (enabled) {
67
+ let changed = false;
68
+ const current = [];
69
+ this.groupRef.nativeElement.traverse((obj) => {
70
+ if (obj.type === 'Mesh')
71
+ current.push(obj);
72
+ if (this.selectionApi.selected.indexOf(obj) === -1)
73
+ changed = true;
74
+ });
75
+ if (changed) {
76
+ this.selectionApi.select((state) => ({ selected: [...state.selected, ...current] }));
77
+ return () => {
78
+ this.selectionApi.select((state) => ({
79
+ selected: state.selected.filter((selected) => !current.includes(selected)),
80
+ }));
81
+ };
82
+ }
83
+ }
84
+ });
85
+ }
86
+ }
87
+ NgtpSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSelect, deps: null, target: i0.ɵɵFactoryTarget.Component });
88
+ NgtpSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpSelect, isStandalone: true, selector: "ngtp-select", inputs: { enabled: "enabled" }, usesInheritance: true, ngImport: i0, template: `
89
+ <ngt-group ngtCompound [ref]="groupRef">
90
+ <ng-content />
91
+ </ngt-group>
92
+ `, isInline: true });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpSelect, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ selector: 'ngtp-select',
97
+ standalone: true,
98
+ template: `
99
+ <ngt-group ngtCompound [ref]="groupRef">
100
+ <ng-content />
101
+ </ngt-group>
102
+ `,
103
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
104
+ }]
105
+ }], propDecorators: { enabled: [{
106
+ type: Input
107
+ }] } });
108
+
109
+ /**
110
+ * Generated bundle index. Do not edit.
111
+ */
112
+
113
+ export { NGTP_SELECTION_API, NgtpSelect, NgtpSelection };
114
+ //# sourceMappingURL=angular-three-postprocessing-selection.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"angular-three-postprocessing-selection.mjs","sources":["../../../../libs/angular-three-postprocessing/selection/src/lib/selection.ts","../../../../libs/angular-three-postprocessing/selection/src/lib/select.ts","../../../../libs/angular-three-postprocessing/selection/src/angular-three-postprocessing-selection.ts"],"sourcesContent":["import { Component, InjectionToken, Input } from '@angular/core';\nimport { RxState } from '@rx-angular/state';\nimport { NgtRxStore } from 'angular-three';\n\nexport interface NgtpSelectionAPI {\n selected: THREE.Object3D[];\n select: RxState<{ selected: THREE.Object3D[] }>['set'];\n enabled: boolean;\n}\n\nexport const NGTP_SELECTION_API = new InjectionToken<NgtpSelectionAPI>('NgtpSelection API');\nfunction ngtpSelectionApiFactory(selection: NgtpSelection) {\n const api: NgtpSelectionAPI = {\n get selected() {\n return selection.get('selected');\n },\n select: selection.set.bind(selection),\n get enabled() {\n return selection.get('enabled');\n },\n };\n return api;\n}\n\n@Component({\n selector: 'ngtp-selection',\n standalone: true,\n template: `\n <ng-content />\n `,\n providers: [{ provide: NGTP_SELECTION_API, useFactory: ngtpSelectionApiFactory, deps: [NgtpSelection] }],\n})\nexport class NgtpSelection extends NgtRxStore {\n @Input() set enabled(enabled: boolean) {\n this.set({ enabled });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ selected: [], enabled: true });\n }\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, Input, OnInit } from '@angular/core';\nimport { extend, injectNgtRef, NgtRxStore } from 'angular-three';\nimport { combineLatest } from 'rxjs';\nimport { Group } from 'three';\nimport { NGTP_SELECTION_API } from './selection';\n\nextend({ Group });\n\n@Component({\n selector: 'ngtp-select',\n standalone: true,\n template: `\n <ngt-group ngtCompound [ref]=\"groupRef\">\n <ng-content />\n </ngt-group>\n `,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpSelect extends NgtRxStore implements OnInit {\n readonly groupRef = injectNgtRef<THREE.Group>();\n\n private readonly selectionApi = inject(NGTP_SELECTION_API);\n\n @Input() set enabled(enabled: boolean) {\n this.set({ enabled });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({ enabled: false });\n }\n\n ngOnInit() {\n this.setSelectEffect();\n }\n\n private setSelectEffect() {\n this.effect(combineLatest([this.select('enabled'), this.groupRef.children$()]), ([enabled]) => {\n if (enabled) {\n let changed = false;\n const current: THREE.Object3D[] = [];\n this.groupRef.nativeElement.traverse((obj) => {\n if (obj.type === 'Mesh') current.push(obj);\n if (this.selectionApi.selected.indexOf(obj) === -1) changed = true;\n });\n if (changed) {\n this.selectionApi.select((state) => ({ selected: [...state.selected, ...current] }));\n return () => {\n this.selectionApi.select((state) => ({\n selected: state.selected.filter((selected) => !current.includes(selected)),\n }));\n };\n }\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -46,9 +46,9 @@ class NgtpEffect extends NgtRxStore {
46
46
  });
47
47
  }
48
48
  }
49
- NgtpEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpEffect, deps: null, target: i0.ɵɵFactoryTarget.Directive });
50
- NgtpEffect.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: NgtpEffect, inputs: { blendFunction: "blendFunction", opacity: "opacity" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpEffect, decorators: [{
49
+ NgtpEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpEffect, deps: null, target: i0.ɵɵFactoryTarget.Directive });
50
+ NgtpEffect.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.5", type: NgtpEffect, inputs: { blendFunction: "blendFunction", opacity: "opacity" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpEffect, decorators: [{
52
52
  type: Directive
53
53
  }], propDecorators: { blendFunction: [{
54
54
  type: Input
@@ -229,16 +229,37 @@ class NgtpEffectComposer extends NgtRxStore {
229
229
  const enabled = this.get('enabled');
230
230
  const autoClear = this.get('autoClear');
231
231
  const gl = this.store.get('gl');
232
+ const size = this.store.get('size');
233
+ const camera = this.store.get('camera');
232
234
  if (composer && enabled) {
233
- gl.autoClear = autoClear;
234
- composer.render(delta);
235
+ if (!gl.xr.isPresenting) {
236
+ gl.autoClear = autoClear;
237
+ composer.render(delta);
238
+ return;
239
+ }
240
+ // manually handle XR
241
+ gl.xr.enabled = false;
242
+ // update camera with XRPose
243
+ gl.xr.updateCamera(camera);
244
+ // render stereo cameras
245
+ const { cameras } = gl.xr.getCamera();
246
+ cameras.forEach(({ viewport, matrixWorld, projectionMatrix }) => {
247
+ gl.setViewport(viewport);
248
+ camera.position.setFromMatrixPosition(matrixWorld);
249
+ camera.projectionMatrix.copy(projectionMatrix);
250
+ composer.render(delta);
251
+ });
252
+ // reset
253
+ gl.setViewport(0, 0, size.width, size.height);
254
+ gl.xr.updateCamera(camera);
255
+ gl.xr.enabled = true;
235
256
  }
236
257
  }, enabled ? renderPriority : 0));
237
258
  this.actions.setBeforeRender();
238
259
  }
239
260
  }
240
- NgtpEffectComposer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpEffectComposer, deps: null, target: i0.ɵɵFactoryTarget.Component });
241
- NgtpEffectComposer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: NgtpEffectComposer, isStandalone: true, selector: "ngtp-effect-composer", inputs: { composerRef: "composerRef", enabled: "enabled", depthBuffer: "depthBuffer", disableNormalPass: "disableNormalPass", stencilBuffer: "stencilBuffer", autoClear: "autoClear", resolutionScale: "resolutionScale", multisampling: "multisampling", frameBufferType: "frameBufferType", renderPriority: "renderPriority", camera: "camera", scene: "scene" }, providers: [
261
+ NgtpEffectComposer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpEffectComposer, deps: null, target: i0.ɵɵFactoryTarget.Component });
262
+ NgtpEffectComposer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.5", type: NgtpEffectComposer, isStandalone: true, selector: "ngtp-effect-composer", inputs: { composerRef: "composerRef", enabled: "enabled", depthBuffer: "depthBuffer", disableNormalPass: "disableNormalPass", stencilBuffer: "stencilBuffer", autoClear: "autoClear", resolutionScale: "resolutionScale", multisampling: "multisampling", frameBufferType: "frameBufferType", renderPriority: "renderPriority", camera: "camera", scene: "scene" }, providers: [
242
263
  { provide: NGTP_EFFECT_COMPOSER_API, useFactory: effectComposerApiFactory, deps: [NgtpEffectComposer] },
243
264
  RxActionFactory,
244
265
  ], usesInheritance: true, ngImport: i0, template: `
@@ -246,7 +267,7 @@ NgtpEffectComposer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
246
267
  <ng-content />
247
268
  </ngt-group>
248
269
  `, isInline: true });
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NgtpEffectComposer, decorators: [{
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.5", ngImport: i0, type: NgtpEffectComposer, decorators: [{
250
271
  type: Component,
251
272
  args: [{
252
273
  selector: 'ngtp-effect-composer',
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-postprocessing.mjs","sources":["../../../../libs/angular-three-postprocessing/src/lib/effect.ts","../../../../libs/angular-three-postprocessing/src/lib/effect-composer.ts","../../../../libs/angular-three-postprocessing/src/angular-three-postprocessing.ts"],"sourcesContent":["import { Directive, inject, Input, OnChanges, OnInit, reflectComponentType, SimpleChanges, Type } from '@angular/core';\nimport { NgtAnyRecord, NgtRxStore, NgtStore, startWithUndefined } from 'angular-three';\nimport { BlendFunction, Effect } from 'postprocessing';\nimport { combineLatest, Observable } from 'rxjs';\n\n@Directive()\nexport abstract class NgtpEffect<T extends Effect> extends NgtRxStore implements OnInit, OnChanges {\n @Input() set blendFunction(blendFunction: BlendFunction) {\n this.set({ blendFunction });\n }\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n abstract get effectConstructor(): new (...args: any[]) => T;\n\n protected defaultBlendMode = BlendFunction.NORMAL;\n protected readonly store = inject(NgtStore);\n\n ngOnChanges(changes: SimpleChanges) {\n this.set((s) => ({\n ...s,\n ...simpleChangesToStateObject(changes, ['blendFunction', 'opacity']),\n }));\n }\n\n ngOnInit() {\n this.connect('effect', componentInputsToCombinedStream(this), (props) => {\n delete props['__ngt_dummy__'];\n delete props['effect'];\n return new this.effectConstructor(props);\n });\n this.configureBlendMode();\n }\n\n private configureBlendMode() {\n this.hold(\n combineLatest([\n this.select('effect'),\n this.select('blendFunction').pipe(startWithUndefined()),\n this.select('opacity').pipe(startWithUndefined()),\n ]),\n ([effect, blendFunction, opacity]) => {\n const invalidate = this.store.get('invalidate');\n effect.blendMode.blendFunction =\n !blendFunction && blendFunction !== 0 ? this.defaultBlendMode : blendFunction;\n if (opacity !== undefined) effect.blendMode.opacity.value = opacity;\n invalidate();\n }\n );\n }\n}\n\nexport function simpleChangesToStateObject(changes: SimpleChanges, keysToDelete: string[] = []) {\n for (const key of keysToDelete) {\n if (changes[key]) delete changes[key];\n }\n\n return Object.entries(changes).reduce((obj, [key, change]) => {\n obj[key] = change.currentValue;\n return obj;\n }, {} as NgtAnyRecord);\n}\n\nexport function componentInputsToCombinedStream(\n component: NgtRxStore,\n filterFn: (input: { propName: string; templateName: string }) => boolean = () => true\n): Observable<NgtAnyRecord> {\n const inputs =\n reflectComponentType(component.constructor as Type<any>)\n ?.inputs.filter(filterFn)\n .map((input) => input.propName) || [];\n\n return combineLatest(\n inputs.reduce((combined, input) => {\n let input$ = component.select(input);\n if (component.get(input) === undefined) {\n input$ = input$.pipe(startWithUndefined());\n }\n combined[input] = input$;\n return combined;\n }, {} as Record<string, Observable<any>>)\n );\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, InjectionToken, Input, OnInit } from '@angular/core';\nimport { RxActionFactory } from '@rx-angular/state/actions';\nimport { extend, getLocalState, injectNgtRef, NgtRxStore, NgtStore, startWithUndefined } from 'angular-three';\nimport { DepthDownsamplingPass, EffectComposer, EffectPass, NormalPass, RenderPass } from 'postprocessing';\nimport { combineLatest, map } from 'rxjs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { isWebGL2Available } from 'three-stdlib';\n\nextend({ Group });\n\nexport interface NgtpEffectComposerApi {\n composer: EffectComposer;\n normalPass: NormalPass | null;\n depthPass: DepthDownsamplingPass | null;\n scene: THREE.Scene;\n camera: THREE.Camera;\n resolutionScale?: number;\n select: NgtpEffectComposer['select'];\n get: NgtpEffectComposer['get'];\n}\n\nexport const NGTP_EFFECT_COMPOSER_API = new InjectionToken<NgtpEffectComposerApi>('NgtpEffectComposer API');\n\nfunction effectComposerApiFactory(composer: NgtpEffectComposer) {\n const api = {} as NgtpEffectComposerApi;\n\n Object.defineProperties(api, {\n composer: { get: () => composer.get('entities')[0] },\n normalPass: { get: () => composer.get('entities')[1] },\n downSamplingPass: { get: () => composer.get('entities')[2] },\n resolutionScale: { get: () => composer.get('resolutionScale') },\n scene: { get: () => composer.get('activeScene') },\n camera: { get: () => composer.get('activeCamera') },\n select: { get: () => composer.select.bind(composer) },\n get: { get: () => composer.get.bind(composer) },\n });\n\n return api;\n}\n\n@Component({\n selector: 'ngtp-effect-composer',\n standalone: true,\n template: `\n <ngt-group [ref]=\"composerRef\">\n <ng-content />\n </ngt-group>\n `,\n providers: [\n { provide: NGTP_EFFECT_COMPOSER_API, useFactory: effectComposerApiFactory, deps: [NgtpEffectComposer] },\n RxActionFactory,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpEffectComposer extends NgtRxStore implements OnInit {\n @Input() composerRef = injectNgtRef<Group>();\n\n @Input() set enabled(enabled: boolean) {\n this.set({ enabled });\n }\n\n @Input() set depthBuffer(depthBuffer: boolean) {\n this.set({ depthBuffer });\n }\n\n @Input() set disableNormalPass(disableNormalPass: boolean) {\n this.set({ disableNormalPass });\n }\n\n @Input() set stencilBuffer(stencilBuffer: boolean) {\n this.set({ stencilBuffer });\n }\n\n @Input() set autoClear(autoClear: boolean) {\n this.set({ autoClear });\n }\n\n @Input() set resolutionScale(resolutionScale: number) {\n this.set({ resolutionScale });\n }\n\n @Input() set multisampling(multisampling: number) {\n this.set({ multisampling });\n }\n\n @Input() set frameBufferType(frameBufferType: THREE.TextureDataType) {\n this.set({ frameBufferType });\n }\n\n @Input() set renderPriority(renderPriority: number) {\n this.set({ renderPriority });\n }\n\n @Input() set camera(camera: THREE.Camera) {\n this.set({ camera });\n }\n\n @Input() set scene(scene: THREE.Scene) {\n this.set({ scene });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n enabled: true,\n renderPriority: 1,\n autoClear: true,\n multisampling: 0,\n frameBufferType: THREE.HalfFloatType,\n });\n }\n\n private readonly store = inject(NgtStore);\n private readonly actions = inject(RxActionFactory<{ setBeforeRender: void }>).create();\n\n ngOnInit() {\n this.connect(\n 'activeScene',\n combineLatest([this.store.select('scene'), this.select('scene').pipe(startWithUndefined())]).pipe(\n map(([defaultScene, scene]) => scene || defaultScene)\n )\n );\n\n this.connect(\n 'activeCamera',\n combineLatest([this.store.select('camera'), this.select('camera').pipe(startWithUndefined())]).pipe(\n map(([defaultCamera, camera]) => camera || defaultCamera)\n )\n );\n\n this.connect(\n 'entities',\n combineLatest([\n this.store.select('gl'),\n this.select('activeScene'),\n this.select('activeCamera'),\n this.select('multisampling'),\n this.select('frameBufferType'),\n this.select('depthBuffer').pipe(startWithUndefined()),\n this.select('stencilBuffer').pipe(startWithUndefined()),\n this.select('disableNormalPass').pipe(startWithUndefined()),\n this.select('resolutionScale').pipe(startWithUndefined()),\n ]).pipe(\n map(\n ([\n gl,\n scene,\n camera,\n multisampling,\n frameBufferType,\n depthBuffer,\n stencilBuffer,\n disableNormalPass,\n resolutionScale,\n ]) => {\n const webGL2Available = isWebGL2Available();\n // Initialize composer\n const effectComposer = new EffectComposer(gl, {\n depthBuffer,\n stencilBuffer,\n multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n frameBufferType,\n });\n\n // Add render pass\n effectComposer.addPass(new RenderPass(scene, camera));\n\n // Create normal pass\n let downSamplingPass = null;\n let normalPass = null;\n if (!disableNormalPass) {\n normalPass = new NormalPass(scene, camera);\n normalPass.enabled = false;\n effectComposer.addPass(normalPass);\n if (resolutionScale !== undefined && webGL2Available) {\n downSamplingPass = new DepthDownsamplingPass({\n normalBuffer: normalPass.texture,\n resolutionScale,\n });\n downSamplingPass.enabled = false;\n effectComposer.addPass(downSamplingPass);\n }\n }\n\n return [effectComposer, normalPass, downSamplingPass];\n }\n )\n )\n );\n\n this.setComposerSize();\n this.setEffectPassed();\n this.setBeforeRender();\n }\n\n private setComposerSize() {\n this.hold(\n combineLatest([this.select('entities'), this.store.select('size')]),\n ([[composer], size]) => void (composer as EffectComposer).setSize(size.width, size.height)\n );\n }\n\n private setEffectPassed() {\n this.effect(\n combineLatest([\n this.select('entities'),\n this.select('activeCamera'),\n this.composerRef.children$('nonObjects'),\n ]),\n ([[composer, normalPass, downSamplingPass], camera, effects]) => {\n let effectPass: EffectPass;\n if (\n this.composerRef.nativeElement &&\n Object.keys(getLocalState(this.composerRef.nativeElement)).length &&\n composer\n ) {\n effectPass = new EffectPass(camera, ...effects);\n effectPass.renderToScreen = true;\n composer.addPass(effectPass);\n if (normalPass) normalPass.enabled = true;\n if (downSamplingPass) downSamplingPass.enabled = true;\n }\n\n return () => {\n if (effectPass) composer?.removePass(effectPass);\n if (normalPass) normalPass.enabled = false;\n if (downSamplingPass) downSamplingPass.enabled = false;\n };\n }\n );\n }\n\n private setBeforeRender() {\n const renderPriority = this.get('renderPriority');\n const enabled = this.get('enabled');\n this.effect(this.actions.setBeforeRender$, () =>\n this.store.get('internal').subscribe(\n ({ delta }) => {\n const [composer] = this.get('entities') || [];\n const enabled = this.get('enabled');\n const autoClear = this.get('autoClear');\n const gl = this.store.get('gl');\n if (composer && enabled) {\n gl.autoClear = autoClear;\n composer.render(delta);\n }\n },\n enabled ? renderPriority : 0\n )\n );\n this.actions.setBeforeRender();\n }\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.mjs","sources":["../../../../libs/angular-three-postprocessing/src/lib/effect.ts","../../../../libs/angular-three-postprocessing/src/lib/effect-composer.ts","../../../../libs/angular-three-postprocessing/src/angular-three-postprocessing.ts"],"sourcesContent":["import { Directive, inject, Input, OnChanges, OnInit, reflectComponentType, SimpleChanges, Type } from '@angular/core';\nimport { NgtAnyRecord, NgtRxStore, NgtStore, startWithUndefined } from 'angular-three';\nimport { BlendFunction, Effect } from 'postprocessing';\nimport { combineLatest, Observable } from 'rxjs';\n\n@Directive()\nexport abstract class NgtpEffect<T extends Effect> extends NgtRxStore implements OnInit, OnChanges {\n @Input() set blendFunction(blendFunction: BlendFunction) {\n this.set({ blendFunction });\n }\n\n @Input() set opacity(opacity: number) {\n this.set({ opacity });\n }\n\n abstract get effectConstructor(): new (...args: any[]) => T;\n\n protected defaultBlendMode = BlendFunction.NORMAL;\n protected readonly store = inject(NgtStore);\n\n ngOnChanges(changes: SimpleChanges) {\n this.set((s) => ({\n ...s,\n ...simpleChangesToStateObject(changes, ['blendFunction', 'opacity']),\n }));\n }\n\n ngOnInit() {\n this.connect('effect', componentInputsToCombinedStream(this), (props) => {\n delete props['__ngt_dummy__'];\n delete props['effect'];\n return new this.effectConstructor(props);\n });\n this.configureBlendMode();\n }\n\n private configureBlendMode() {\n this.hold(\n combineLatest([\n this.select('effect'),\n this.select('blendFunction').pipe(startWithUndefined()),\n this.select('opacity').pipe(startWithUndefined()),\n ]),\n ([effect, blendFunction, opacity]) => {\n const invalidate = this.store.get('invalidate');\n effect.blendMode.blendFunction =\n !blendFunction && blendFunction !== 0 ? this.defaultBlendMode : blendFunction;\n if (opacity !== undefined) effect.blendMode.opacity.value = opacity;\n invalidate();\n }\n );\n }\n}\n\nexport function simpleChangesToStateObject(changes: SimpleChanges, keysToDelete: string[] = []) {\n for (const key of keysToDelete) {\n if (changes[key]) delete changes[key];\n }\n\n return Object.entries(changes).reduce((obj, [key, change]) => {\n obj[key] = change.currentValue;\n return obj;\n }, {} as NgtAnyRecord);\n}\n\nexport function componentInputsToCombinedStream(\n component: NgtRxStore,\n filterFn: (input: { propName: string; templateName: string }) => boolean = () => true\n): Observable<NgtAnyRecord> {\n const inputs =\n reflectComponentType(component.constructor as Type<any>)\n ?.inputs.filter(filterFn)\n .map((input) => input.propName) || [];\n\n return combineLatest(\n inputs.reduce((combined, input) => {\n let input$ = component.select(input);\n if (component.get(input) === undefined) {\n input$ = input$.pipe(startWithUndefined());\n }\n combined[input] = input$;\n return combined;\n }, {} as Record<string, Observable<any>>)\n );\n}\n","import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, InjectionToken, Input, OnInit } from '@angular/core';\nimport { RxActionFactory } from '@rx-angular/state/actions';\nimport { extend, getLocalState, injectNgtRef, NgtRxStore, NgtStore, startWithUndefined } from 'angular-three';\nimport { DepthDownsamplingPass, EffectComposer, EffectPass, NormalPass, RenderPass } from 'postprocessing';\nimport { combineLatest, map } from 'rxjs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { isWebGL2Available } from 'three-stdlib';\n\nextend({ Group });\n\nexport interface NgtpEffectComposerApi {\n composer: EffectComposer;\n normalPass: NormalPass | null;\n depthPass: DepthDownsamplingPass | null;\n scene: THREE.Scene;\n camera: THREE.Camera;\n resolutionScale?: number;\n select: NgtpEffectComposer['select'];\n get: NgtpEffectComposer['get'];\n}\n\nexport const NGTP_EFFECT_COMPOSER_API = new InjectionToken<NgtpEffectComposerApi>('NgtpEffectComposer API');\n\nfunction effectComposerApiFactory(composer: NgtpEffectComposer) {\n const api = {} as NgtpEffectComposerApi;\n\n Object.defineProperties(api, {\n composer: { get: () => composer.get('entities')[0] },\n normalPass: { get: () => composer.get('entities')[1] },\n downSamplingPass: { get: () => composer.get('entities')[2] },\n resolutionScale: { get: () => composer.get('resolutionScale') },\n scene: { get: () => composer.get('activeScene') },\n camera: { get: () => composer.get('activeCamera') },\n select: { get: () => composer.select.bind(composer) },\n get: { get: () => composer.get.bind(composer) },\n });\n\n return api;\n}\n\n@Component({\n selector: 'ngtp-effect-composer',\n standalone: true,\n template: `\n <ngt-group [ref]=\"composerRef\">\n <ng-content />\n </ngt-group>\n `,\n providers: [\n { provide: NGTP_EFFECT_COMPOSER_API, useFactory: effectComposerApiFactory, deps: [NgtpEffectComposer] },\n RxActionFactory,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtpEffectComposer extends NgtRxStore implements OnInit {\n @Input() composerRef = injectNgtRef<Group>();\n\n @Input() set enabled(enabled: boolean) {\n this.set({ enabled });\n }\n\n @Input() set depthBuffer(depthBuffer: boolean) {\n this.set({ depthBuffer });\n }\n\n @Input() set disableNormalPass(disableNormalPass: boolean) {\n this.set({ disableNormalPass });\n }\n\n @Input() set stencilBuffer(stencilBuffer: boolean) {\n this.set({ stencilBuffer });\n }\n\n @Input() set autoClear(autoClear: boolean) {\n this.set({ autoClear });\n }\n\n @Input() set resolutionScale(resolutionScale: number) {\n this.set({ resolutionScale });\n }\n\n @Input() set multisampling(multisampling: number) {\n this.set({ multisampling });\n }\n\n @Input() set frameBufferType(frameBufferType: THREE.TextureDataType) {\n this.set({ frameBufferType });\n }\n\n @Input() set renderPriority(renderPriority: number) {\n this.set({ renderPriority });\n }\n\n @Input() set camera(camera: THREE.Camera) {\n this.set({ camera });\n }\n\n @Input() set scene(scene: THREE.Scene) {\n this.set({ scene });\n }\n\n override initialize(): void {\n super.initialize();\n this.set({\n enabled: true,\n renderPriority: 1,\n autoClear: true,\n multisampling: 0,\n frameBufferType: THREE.HalfFloatType,\n });\n }\n\n private readonly store = inject(NgtStore);\n private readonly actions = inject(RxActionFactory<{ setBeforeRender: void }>).create();\n\n ngOnInit() {\n this.connect(\n 'activeScene',\n combineLatest([this.store.select('scene'), this.select('scene').pipe(startWithUndefined())]).pipe(\n map(([defaultScene, scene]) => scene || defaultScene)\n )\n );\n\n this.connect(\n 'activeCamera',\n combineLatest([this.store.select('camera'), this.select('camera').pipe(startWithUndefined())]).pipe(\n map(([defaultCamera, camera]) => camera || defaultCamera)\n )\n );\n\n this.connect(\n 'entities',\n combineLatest([\n this.store.select('gl'),\n this.select('activeScene'),\n this.select('activeCamera'),\n this.select('multisampling'),\n this.select('frameBufferType'),\n this.select('depthBuffer').pipe(startWithUndefined()),\n this.select('stencilBuffer').pipe(startWithUndefined()),\n this.select('disableNormalPass').pipe(startWithUndefined()),\n this.select('resolutionScale').pipe(startWithUndefined()),\n ]).pipe(\n map(\n ([\n gl,\n scene,\n camera,\n multisampling,\n frameBufferType,\n depthBuffer,\n stencilBuffer,\n disableNormalPass,\n resolutionScale,\n ]) => {\n const webGL2Available = isWebGL2Available();\n // Initialize composer\n const effectComposer = new EffectComposer(gl, {\n depthBuffer,\n stencilBuffer,\n multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,\n frameBufferType,\n });\n\n // Add render pass\n effectComposer.addPass(new RenderPass(scene, camera));\n\n // Create normal pass\n let downSamplingPass = null;\n let normalPass = null;\n if (!disableNormalPass) {\n normalPass = new NormalPass(scene, camera);\n normalPass.enabled = false;\n effectComposer.addPass(normalPass);\n if (resolutionScale !== undefined && webGL2Available) {\n downSamplingPass = new DepthDownsamplingPass({\n normalBuffer: normalPass.texture,\n resolutionScale,\n });\n downSamplingPass.enabled = false;\n effectComposer.addPass(downSamplingPass);\n }\n }\n\n return [effectComposer, normalPass, downSamplingPass];\n }\n )\n )\n );\n\n this.setComposerSize();\n this.setEffectPassed();\n this.setBeforeRender();\n }\n\n private setComposerSize() {\n this.hold(\n combineLatest([this.select('entities'), this.store.select('size')]),\n ([[composer], size]) => void (composer as EffectComposer).setSize(size.width, size.height)\n );\n }\n\n private setEffectPassed() {\n this.effect(\n combineLatest([\n this.select('entities'),\n this.select('activeCamera'),\n this.composerRef.children$('nonObjects'),\n ]),\n ([[composer, normalPass, downSamplingPass], camera, effects]) => {\n let effectPass: EffectPass;\n if (\n this.composerRef.nativeElement &&\n Object.keys(getLocalState(this.composerRef.nativeElement)).length &&\n composer\n ) {\n effectPass = new EffectPass(camera, ...effects);\n effectPass.renderToScreen = true;\n composer.addPass(effectPass);\n if (normalPass) normalPass.enabled = true;\n if (downSamplingPass) downSamplingPass.enabled = true;\n }\n\n return () => {\n if (effectPass) composer?.removePass(effectPass);\n if (normalPass) normalPass.enabled = false;\n if (downSamplingPass) downSamplingPass.enabled = false;\n };\n }\n );\n }\n\n private setBeforeRender() {\n const renderPriority = this.get('renderPriority');\n const enabled = this.get('enabled');\n this.effect(this.actions.setBeforeRender$, () =>\n this.store.get('internal').subscribe(\n ({ delta }) => {\n const [composer] = this.get('entities') || [];\n const enabled = this.get('enabled');\n const autoClear = this.get('autoClear');\n const gl = this.store.get('gl');\n const size = this.store.get('size');\n const camera = this.store.get('camera');\n if (composer && enabled) {\n if (!gl.xr.isPresenting) {\n gl.autoClear = autoClear;\n composer.render(delta);\n return;\n }\n\n // manually handle XR\n gl.xr.enabled = false;\n // update camera with XRPose\n gl.xr.updateCamera(camera as THREE.PerspectiveCamera);\n\n // render stereo cameras\n const { cameras } = gl.xr.getCamera();\n cameras.forEach(({ viewport, matrixWorld, projectionMatrix }) => {\n gl.setViewport(viewport);\n camera.position.setFromMatrixPosition(matrixWorld);\n camera.projectionMatrix.copy(projectionMatrix);\n\n composer.render(delta);\n });\n\n // reset\n gl.setViewport(0, 0, size.width, size.height);\n gl.xr.updateCamera(camera as THREE.PerspectiveCamera);\n gl.xr.enabled = true;\n }\n },\n enabled ? renderPriority : 0\n )\n );\n this.actions.setBeforeRender();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}