@react-three/postprocessing 2.5.0 → 2.5.3

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.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Downloads](https://img.shields.io/npm/dt/@react-three/postprocessing.svg?style=flat&colorA=000000&colorB=000000)](https://www.npmjs.com/package/@react-three/postprocessing)
5
5
  [![Discord Shield](https://img.shields.io/discord/740090768164651008?style=flat&colorA=000000&colorB=000000&label=discord&logo=discord&logoColor=ffffff)](https://discord.gg/ZZjjNvJ)
6
6
 
7
- `react-postprocessing` is a [postprocessing](https://github.com/vanruesc/postprocessing) wrapper for [@react-three/fiber](https://github.com/pmndrs/@react-three/fiber). This is not (yet) meant for complex orchestration of effects, but can save you [hundreds of LOC](https://twitter.com/0xca0a/status/1289501594698960897) for a straight forward effects-chain.
7
+ `react-postprocessing` is a [postprocessing](https://github.com/pmndrs/postprocessing) wrapper for [@react-three/fiber](https://github.com/pmndrs/@react-three/fiber). This is not (yet) meant for complex orchestration of effects, but can save you [hundreds of LOC](https://twitter.com/0xca0a/status/1289501594698960897) for a straight forward effects-chain.
8
8
 
9
9
  ```bash
10
10
  npm install @react-three/postprocessing
@@ -20,7 +20,7 @@ npm install @react-three/postprocessing
20
20
 
21
21
  #### Why postprocessing and not three/examples/jsm/postprocessing?
22
22
 
23
- From [https://github.com/vanruesc/postprocessing](https://github.com/vanruesc/postprocessing#performance)
23
+ From [https://github.com/pmndrs/postprocessing](https://github.com/pmndrs/postprocessing#performance)
24
24
 
25
25
  > This library provides an EffectPass which automatically organizes and merges any given combination of effects. This minimizes the amount of render operations and makes it possible to combine many effects without the performance penalties of traditional pass chaining. Additionally, every effect can choose its own blend function.
26
26
  >
package/dist/index.cjs CHANGED
@@ -10,7 +10,6 @@ var fiber = require('@react-three/fiber');
10
10
  var _extends = require('@babel/runtime/helpers/extends');
11
11
  var _construct = require('@babel/runtime/helpers/construct');
12
12
  var threeStdlib = require('three-stdlib');
13
- var mergeRefs = require('react-merge-refs');
14
13
  var screenSpaceReflections = require('screen-space-reflections');
15
14
 
16
15
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -19,9 +18,8 @@ var _objectWithoutPropertiesLoose__default = /*#__PURE__*/_interopDefaultLegacy(
19
18
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
19
  var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
21
20
  var _construct__default = /*#__PURE__*/_interopDefaultLegacy(_construct);
22
- var mergeRefs__default = /*#__PURE__*/_interopDefaultLegacy(mergeRefs);
23
21
 
24
- var _excluded$8 = ["blendFunction", "opacity"];
22
+ var _excluded$9 = ["blendFunction", "opacity"];
25
23
 
26
24
  var isRef = function isRef(ref) {
27
25
  return !!ref.current;
@@ -38,7 +36,7 @@ var wrapEffect = function wrapEffect(effectImpl, defaultBlendMode) {
38
36
  return /*#__PURE__*/React.forwardRef(function Wrap(_ref, ref) {
39
37
  var blendFunction = _ref.blendFunction,
40
38
  opacity = _ref.opacity,
41
- props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$8);
39
+ props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$9);
42
40
 
43
41
  var invalidate = fiber.useThree(function (state) {
44
42
  return state.invalidate;
@@ -225,11 +223,11 @@ var EffectComposer = /*#__PURE__*/React__default["default"].memo( /*#__PURE__*/R
225
223
  }, children));
226
224
  }));
227
225
 
228
- var _excluded$7 = ["target", "depthTexture"];
226
+ var _excluded$8 = ["target", "depthTexture"];
229
227
  var DepthOfField = /*#__PURE__*/React.forwardRef(function DepthOfField(_ref, ref) {
230
228
  var target = _ref.target,
231
229
  depthTexture = _ref.depthTexture,
232
- props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$7);
230
+ props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$8);
233
231
 
234
232
  var invalidate = fiber.useThree(function (state) {
235
233
  return state.invalidate;
@@ -259,11 +257,11 @@ var DepthOfField = /*#__PURE__*/React.forwardRef(function DepthOfField(_ref, ref
259
257
 
260
258
  var DotScreen = wrapEffect(postprocessing.DotScreenEffect);
261
259
 
262
- var _excluded$6 = ["active"];
260
+ var _excluded$7 = ["active"];
263
261
  var Glitch = /*#__PURE__*/React.forwardRef(function Glitch(_ref, ref) {
264
262
  var _ref$active = _ref.active,
265
263
  active = _ref$active === void 0 ? true : _ref$active,
266
- props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$6);
264
+ props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$7);
267
265
 
268
266
  var invalidate = fiber.useThree(function (state) {
269
267
  return state.invalidate;
@@ -303,10 +301,10 @@ var GodRays = /*#__PURE__*/React.forwardRef(function GodRays(props, ref) {
303
301
  });
304
302
  });
305
303
 
306
- var _excluded$5 = ["size"];
304
+ var _excluded$6 = ["size"];
307
305
  var Grid = /*#__PURE__*/React.forwardRef(function Grid(_ref, ref) {
308
306
  var size = _ref.size,
309
- props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$5);
307
+ props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$6);
310
308
 
311
309
  var invalidate = fiber.useThree(function (state) {
312
310
  return state.invalidate;
@@ -329,7 +327,7 @@ var HueSaturation = wrapEffect(postprocessing.HueSaturationEffect);
329
327
 
330
328
  var Noise = wrapEffect(postprocessing.NoiseEffect, postprocessing.BlendFunction.COLOR_DODGE);
331
329
 
332
- var _excluded$4 = ["enabled", "children"];
330
+ var _excluded$5 = ["enabled", "children"];
333
331
  var selectionContext = /*#__PURE__*/React.createContext(null);
334
332
  function Selection(_ref) {
335
333
  var children = _ref.children,
@@ -355,7 +353,7 @@ function Select(_ref2) {
355
353
  var _ref2$enabled = _ref2.enabled,
356
354
  enabled = _ref2$enabled === void 0 ? false : _ref2$enabled,
357
355
  children = _ref2.children,
358
- props = _objectWithoutPropertiesLoose__default["default"](_ref2, _excluded$4);
356
+ props = _objectWithoutPropertiesLoose__default["default"](_ref2, _excluded$5);
359
357
 
360
358
  var group = React.useRef(null);
361
359
  var api = React.useContext(selectionContext);
@@ -387,7 +385,7 @@ function Select(_ref2) {
387
385
  }, props), children);
388
386
  }
389
387
 
390
- var _excluded$3 = ["selection", "selectionLayer", "blendFunction", "patternTexture", "edgeStrength", "pulseSpeed", "visibleEdgeColor", "hiddenEdgeColor", "width", "height", "kernelSize", "blur", "xRay"];
388
+ var _excluded$4 = ["selection", "selectionLayer", "blendFunction", "patternTexture", "edgeStrength", "pulseSpeed", "visibleEdgeColor", "hiddenEdgeColor", "width", "height", "kernelSize", "blur", "xRay"];
391
389
  var Outline = /*#__PURE__*/React.forwardRef(function Outline(_ref, forwardRef) {
392
390
  var _ref$selection = _ref.selection,
393
391
  selection = _ref$selection === void 0 ? [] : _ref$selection,
@@ -403,8 +401,8 @@ var Outline = /*#__PURE__*/React.forwardRef(function Outline(_ref, forwardRef) {
403
401
  height = _ref.height,
404
402
  kernelSize = _ref.kernelSize,
405
403
  blur = _ref.blur,
406
- xRay = _ref.xRay;
407
- _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$3);
404
+ xRay = _ref.xRay,
405
+ props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$4);
408
406
 
409
407
  var invalidate = fiber.useThree(function (state) {
410
408
  return state.invalidate;
@@ -415,7 +413,7 @@ var Outline = /*#__PURE__*/React.forwardRef(function Outline(_ref, forwardRef) {
415
413
  camera = _useContext.camera;
416
414
 
417
415
  var effect = React.useMemo(function () {
418
- return new postprocessing.OutlineEffect(scene, camera, {
416
+ return new postprocessing.OutlineEffect(scene, camera, _extends__default["default"]({
419
417
  blendFunction: blendFunction,
420
418
  patternTexture: patternTexture,
421
419
  edgeStrength: edgeStrength,
@@ -427,7 +425,7 @@ var Outline = /*#__PURE__*/React.forwardRef(function Outline(_ref, forwardRef) {
427
425
  kernelSize: kernelSize,
428
426
  blur: blur,
429
427
  xRay: xRay
430
- });
428
+ }, props));
431
429
  }, [blendFunction, blur, camera, edgeStrength, height, hiddenEdgeColor, kernelSize, patternTexture, pulseSpeed, scene, visibleEdgeColor, width, xRay]);
432
430
  var api = React.useContext(selectionContext);
433
431
  React.useEffect(function () {
@@ -446,27 +444,23 @@ var Outline = /*#__PURE__*/React.forwardRef(function Outline(_ref, forwardRef) {
446
444
  effect.selectionLayer = selectionLayer;
447
445
  invalidate();
448
446
  }, [effect, selectionLayer]);
449
- var ref = React.useRef();
447
+ React.useRef();
450
448
  React.useEffect(function () {
451
449
  if (api && api.enabled) {
452
450
  var _api$selected;
453
451
 
454
- var _effect = ref.current;
455
-
456
452
  if ((_api$selected = api.selected) != null && _api$selected.length) {
457
- _effect.selection.set(api.selected);
458
-
453
+ effect.selection.set(api.selected);
459
454
  invalidate();
460
455
  return function () {
461
- _effect.selection.clear();
462
-
456
+ effect.selection.clear();
463
457
  invalidate();
464
458
  };
465
459
  }
466
460
  }
467
461
  }, [api]);
468
462
  return /*#__PURE__*/React__default["default"].createElement("primitive", {
469
- ref: mergeRefs__default["default"]([ref, forwardRef]),
463
+ ref: forwardRef,
470
464
  object: effect
471
465
  });
472
466
  });
@@ -488,6 +482,8 @@ var Pixelation = /*#__PURE__*/React.forwardRef(function Pixelation(_ref, ref) {
488
482
 
489
483
  var Scanline = wrapEffect(postprocessing.ScanlineEffect, postprocessing.BlendFunction.OVERLAY);
490
484
 
485
+ var _excluded$3 = ["selection", "selectionLayer", "lights", "luminanceThreshold", "luminanceSmoothing", "intensity", "width", "height", "kernelSize", "mipmapBlur"];
486
+
491
487
  var addLight = function addLight(light, effect) {
492
488
  return light.layers.enable(effect.selection.layer);
493
489
  };
@@ -508,7 +504,9 @@ var SelectiveBloom = /*#__PURE__*/React.forwardRef(function SelectiveBloom(_ref,
508
504
  intensity = _ref.intensity,
509
505
  width = _ref.width,
510
506
  height = _ref.height,
511
- kernelSize = _ref.kernelSize;
507
+ kernelSize = _ref.kernelSize,
508
+ mipmapBlur = _ref.mipmapBlur,
509
+ props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$3);
512
510
 
513
511
  if (lights.length === 0) {
514
512
  console.warn('SelectiveBloom requires lights to work.');
@@ -523,16 +521,17 @@ var SelectiveBloom = /*#__PURE__*/React.forwardRef(function SelectiveBloom(_ref,
523
521
  camera = _useContext.camera;
524
522
 
525
523
  var effect = React.useMemo(function () {
526
- return new postprocessing.SelectiveBloomEffect(scene, camera, {
524
+ return new postprocessing.SelectiveBloomEffect(scene, camera, _extends__default["default"]({
527
525
  blendFunction: postprocessing.BlendFunction.SCREEN,
528
526
  luminanceThreshold: luminanceThreshold,
529
527
  luminanceSmoothing: luminanceSmoothing,
530
528
  intensity: intensity,
531
529
  width: width,
532
530
  height: height,
533
- kernelSize: kernelSize
534
- });
535
- }, [camera, height, intensity, kernelSize, luminanceSmoothing, luminanceThreshold, scene, width]);
531
+ kernelSize: kernelSize,
532
+ mipmapBlur: mipmapBlur
533
+ }, props));
534
+ }, [camera, height, intensity, kernelSize, luminanceSmoothing, luminanceThreshold, scene, width, height, mipmapBlur]);
536
535
  var api = React.useContext(selectionContext);
537
536
  React.useEffect(function () {
538
537
  // Do not allow array selection if declarative selection is active
@@ -564,27 +563,23 @@ var SelectiveBloom = /*#__PURE__*/React.forwardRef(function SelectiveBloom(_ref,
564
563
  };
565
564
  }
566
565
  }, [effect, lights, selectionLayer]);
567
- var ref = React.useRef();
566
+ React.useRef();
568
567
  React.useEffect(function () {
569
568
  if (api && api.enabled) {
570
569
  var _api$selected;
571
570
 
572
- var _effect = ref.current;
573
-
574
571
  if ((_api$selected = api.selected) != null && _api$selected.length) {
575
- _effect.selection.set(api.selected);
576
-
572
+ effect.selection.set(api.selected);
577
573
  invalidate();
578
574
  return function () {
579
- _effect.selection.clear();
580
-
575
+ effect.selection.clear();
581
576
  invalidate();
582
577
  };
583
578
  }
584
579
  }
585
580
  }, [api]);
586
581
  return /*#__PURE__*/React__default["default"].createElement("primitive", {
587
- ref: mergeRefs__default["default"]([ref, forwardRef]),
582
+ ref: forwardRef,
588
583
  object: effect,
589
584
  dispose: null
590
585
  });
@@ -729,6 +724,21 @@ var SSR = /*#__PURE__*/React.forwardRef(function SSR(_ref, ref) {
729
724
  });
730
725
  invalidate();
731
726
  }, [props]);
727
+ var api = React.useContext(selectionContext);
728
+ React.useEffect(function () {
729
+ if (api && api.enabled) {
730
+ var _api$selected;
731
+
732
+ if ((_api$selected = api.selected) != null && _api$selected.length) {
733
+ effect.selection.set(api.selected);
734
+ invalidate();
735
+ return function () {
736
+ effect.selection.clear();
737
+ invalidate();
738
+ };
739
+ }
740
+ }
741
+ }, [api]);
732
742
  return /*#__PURE__*/React__default["default"].createElement("primitive", {
733
743
  ref: ref,
734
744
  object: effect
package/dist/index.js CHANGED
@@ -3,7 +3,6 @@ import React, { forwardRef, useMemo, useLayoutEffect, createContext, useEffect,
3
3
  import { Vector2, HalfFloatType, Vector3, TextureLoader, sRGBEncoding, RepeatWrapping } from 'three';
4
4
  import { useThree, useFrame, useLoader } from '@react-three/fiber';
5
5
  import { isWebGL2Available } from 'three-stdlib';
6
- import mergeRefs from 'react-merge-refs';
7
6
  import _extends from '@babel/runtime/helpers/esm/extends';
8
7
  import { SSREffect } from 'screen-space-reflections';
9
8
 
@@ -347,7 +346,8 @@ const Outline = /*#__PURE__*/forwardRef(function Outline(_ref, forwardRef) {
347
346
  height,
348
347
  kernelSize,
349
348
  blur,
350
- xRay
349
+ xRay,
350
+ ...props
351
351
  }), [blendFunction, blur, camera, edgeStrength, height, hiddenEdgeColor, kernelSize, patternTexture, pulseSpeed, scene, visibleEdgeColor, width, xRay]);
352
352
  const api = useContext(selectionContext);
353
353
  useEffect(() => {
@@ -366,13 +366,11 @@ const Outline = /*#__PURE__*/forwardRef(function Outline(_ref, forwardRef) {
366
366
  effect.selectionLayer = selectionLayer;
367
367
  invalidate();
368
368
  }, [effect, selectionLayer]);
369
- const ref = useRef();
369
+ useRef();
370
370
  useEffect(() => {
371
371
  if (api && api.enabled) {
372
372
  var _api$selected;
373
373
 
374
- const effect = ref.current;
375
-
376
374
  if ((_api$selected = api.selected) != null && _api$selected.length) {
377
375
  effect.selection.set(api.selected);
378
376
  invalidate();
@@ -384,7 +382,7 @@ const Outline = /*#__PURE__*/forwardRef(function Outline(_ref, forwardRef) {
384
382
  }
385
383
  }, [api]);
386
384
  return /*#__PURE__*/React.createElement("primitive", {
387
- ref: mergeRefs([ref, forwardRef]),
385
+ ref: forwardRef,
388
386
  object: effect
389
387
  });
390
388
  });
@@ -419,7 +417,9 @@ const SelectiveBloom = /*#__PURE__*/forwardRef(function SelectiveBloom(_ref, for
419
417
  intensity,
420
418
  width,
421
419
  height,
422
- kernelSize
420
+ kernelSize,
421
+ mipmapBlur,
422
+ ...props
423
423
  } = _ref;
424
424
 
425
425
  if (lights.length === 0) {
@@ -438,8 +438,10 @@ const SelectiveBloom = /*#__PURE__*/forwardRef(function SelectiveBloom(_ref, for
438
438
  intensity,
439
439
  width,
440
440
  height,
441
- kernelSize
442
- }), [camera, height, intensity, kernelSize, luminanceSmoothing, luminanceThreshold, scene, width]);
441
+ kernelSize,
442
+ mipmapBlur,
443
+ ...props
444
+ }), [camera, height, intensity, kernelSize, luminanceSmoothing, luminanceThreshold, scene, width, height, mipmapBlur]);
443
445
  const api = useContext(selectionContext);
444
446
  useEffect(() => {
445
447
  // Do not allow array selection if declarative selection is active
@@ -467,13 +469,11 @@ const SelectiveBloom = /*#__PURE__*/forwardRef(function SelectiveBloom(_ref, for
467
469
  };
468
470
  }
469
471
  }, [effect, lights, selectionLayer]);
470
- const ref = useRef();
472
+ useRef();
471
473
  useEffect(() => {
472
474
  if (api && api.enabled) {
473
475
  var _api$selected;
474
476
 
475
- const effect = ref.current;
476
-
477
477
  if ((_api$selected = api.selected) != null && _api$selected.length) {
478
478
  effect.selection.set(api.selected);
479
479
  invalidate();
@@ -485,7 +485,7 @@ const SelectiveBloom = /*#__PURE__*/forwardRef(function SelectiveBloom(_ref, for
485
485
  }
486
486
  }, [api]);
487
487
  return /*#__PURE__*/React.createElement("primitive", {
488
- ref: mergeRefs([ref, forwardRef]),
488
+ ref: forwardRef,
489
489
  object: effect,
490
490
  dispose: null
491
491
  });
@@ -617,6 +617,21 @@ const SSR = /*#__PURE__*/forwardRef(function SSR(_ref, ref) {
617
617
  Object.keys(props).forEach(key => effect[key] = props[key]);
618
618
  invalidate();
619
619
  }, [props]);
620
+ const api = useContext(selectionContext);
621
+ useEffect(() => {
622
+ if (api && api.enabled) {
623
+ var _api$selected;
624
+
625
+ if ((_api$selected = api.selected) != null && _api$selected.length) {
626
+ effect.selection.set(api.selected);
627
+ invalidate();
628
+ return () => {
629
+ effect.selection.clear();
630
+ invalidate();
631
+ };
632
+ }
633
+ }
634
+ }, [api]);
620
635
  return /*#__PURE__*/React.createElement("primitive", {
621
636
  ref: ref,
622
637
  object: effect
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/postprocessing",
3
- "version": "2.5.0",
3
+ "version": "2.5.3",
4
4
  "description": "postprocessing wrapper for React and @react-three/fiber",
5
5
  "keywords": [
6
6
  "postprocessing",
@@ -41,7 +41,7 @@
41
41
  "dependencies": {
42
42
  "postprocessing": "^6.28.4",
43
43
  "react-merge-refs": "^1.1.0",
44
- "screen-space-reflections": "^2.0.4",
44
+ "screen-space-reflections": "^2.0.6",
45
45
  "three-stdlib": "^2.8.11"
46
46
  },
47
47
  "devDependencies": {