@react-three/postprocessing 2.4.2 → 2.4.5
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/dist/EffectComposer.d.ts +1 -2
- package/dist/effects/SSR.d.ts +25 -23
- package/dist/index.cjs +45 -63
- package/dist/index.js +12 -11
- package/package.json +2 -2
package/dist/EffectComposer.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TextureDataType } from 'three';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { EffectComposer as EffectComposerImpl, NormalPass, DepthDownsamplingPass } from 'postprocessing';
|
|
4
|
-
import { TextureDataType } from 'three';
|
|
5
4
|
export declare const EffectComposerContext: React.Context<{
|
|
6
5
|
composer: EffectComposerImpl;
|
|
7
6
|
normalPass: NormalPass | null;
|
package/dist/effects/SSR.d.ts
CHANGED
|
@@ -1,47 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
2
|
declare type SSRProps = {
|
|
3
3
|
/** Enables the effect pass */
|
|
4
|
-
enabled
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
/** Size of the output buffer */
|
|
6
|
+
resolutionScale?: number;
|
|
5
7
|
/** Size of the blur buffer */
|
|
6
|
-
blurSize
|
|
8
|
+
blurSize?: number;
|
|
7
9
|
/** Whether to blur the reflections and blend these blurred reflections depending on the roughness and depth of the reflection ray */
|
|
8
|
-
useBlur
|
|
10
|
+
useBlur?: boolean;
|
|
9
11
|
/** The kernel size of the blur pass which is used to blur reflections; higher kernel sizes will result in blurrier reflections with more artifacts */
|
|
10
|
-
blurKernelSize
|
|
12
|
+
blurKernelSize?: number;
|
|
11
13
|
/** How much the reflection ray should travel in each of its iteration; higher values will give deeper reflections but with more artifacts */
|
|
12
|
-
rayStep
|
|
14
|
+
rayStep?: number;
|
|
13
15
|
/** The intensity of the reflections */
|
|
14
|
-
intensity
|
|
16
|
+
intensity?: number;
|
|
15
17
|
/** The power by which the reflections should be potentiated; higher values will give a more intense and vibrant look */
|
|
16
|
-
power
|
|
18
|
+
power?: number;
|
|
17
19
|
/** How much deep reflections will be blurred (as reflections become blurrier the further away the object they are reflecting is) */
|
|
18
|
-
depthBlur
|
|
20
|
+
depthBlur?: number;
|
|
19
21
|
/** Whether jittering is enabled; jittering will randomly jitter the reflections resulting in a more noisy but overall more realistic look, enabling jittering can be expensive depending on the view angle */
|
|
20
|
-
enableJittering
|
|
22
|
+
enableJittering?: boolean;
|
|
21
23
|
/** How intense jittering should be */
|
|
22
|
-
jitter
|
|
24
|
+
jitter?: number;
|
|
23
25
|
/** How much the jittered rays should be spread; higher values will give a rougher look regarding the reflections but are more expensive to compute with */
|
|
24
|
-
jitterSpread
|
|
26
|
+
jitterSpread?: number;
|
|
25
27
|
/** Roughness fade out */
|
|
26
|
-
roughnessFadeOut
|
|
28
|
+
roughnessFadeOut?: number;
|
|
27
29
|
/** The number of steps a reflection ray can maximally do to find an object it intersected (and thus reflects) */
|
|
28
|
-
MAX_STEPS
|
|
30
|
+
MAX_STEPS?: number;
|
|
29
31
|
/** Once we had our ray intersect something, we need to find the exact point in space it intersected and thus it reflects; this can be done through binary search with the given number of maximum steps */
|
|
30
|
-
NUM_BINARY_SEARCH_STEPS
|
|
32
|
+
NUM_BINARY_SEARCH_STEPS?: number;
|
|
31
33
|
/** The maximum depth difference between a ray and the particular depth at its screen position after refining with binary search; lower values will result in better performance */
|
|
32
|
-
maxDepthDifference
|
|
34
|
+
maxDepthDifference?: number;
|
|
33
35
|
/** The maximum depth for which reflections will be calculated */
|
|
34
|
-
maxDepth
|
|
36
|
+
maxDepth?: number;
|
|
35
37
|
/** The maximum depth difference between a ray and the particular depth at its screen position before refining with binary search; lower values will result in better performance */
|
|
36
|
-
thickness
|
|
38
|
+
thickness?: number;
|
|
37
39
|
/** Index of Refraction, used for calculating fresnel; reflections tend to be more intense the steeper the angle between them and the viewer is, the ior parameter set how much the intensity varies */
|
|
38
|
-
ior
|
|
40
|
+
ior?: number;
|
|
39
41
|
/** WebGL2 only - whether to use multiple render targets when rendering the G-buffers (normals, depth and roughness); using them can improve performance as they will render all information to multiple buffers for each fragment in one run */
|
|
40
|
-
useMRT
|
|
42
|
+
useMRT?: boolean;
|
|
41
43
|
/** If normal maps should be taken account of when calculating reflections */
|
|
42
|
-
useNormalMap
|
|
44
|
+
useNormalMap?: boolean;
|
|
43
45
|
/** If roughness maps should be taken account of when calculating reflections */
|
|
44
|
-
useRoughnessMap
|
|
46
|
+
useRoughnessMap?: boolean;
|
|
45
47
|
};
|
|
46
|
-
export declare const SSR:
|
|
48
|
+
export declare const SSR: import("react").ForwardRefExoticComponent<SSRProps & import("react").RefAttributes<SSRPass>>;
|
|
47
49
|
export {};
|
package/dist/index.cjs
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var postprocessing = require('postprocessing');
|
|
6
6
|
var _objectWithoutPropertiesLoose = require('@babel/runtime/helpers/objectWithoutPropertiesLoose');
|
|
7
7
|
var React = require('react');
|
|
8
|
-
var
|
|
8
|
+
var three = require('three');
|
|
9
9
|
var fiber = require('@react-three/fiber');
|
|
10
10
|
var _extends = require('@babel/runtime/helpers/extends');
|
|
11
11
|
var _construct = require('@babel/runtime/helpers/construct');
|
|
@@ -15,27 +15,8 @@ var screenSpaceReflections = require('screen-space-reflections');
|
|
|
15
15
|
|
|
16
16
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
17
|
|
|
18
|
-
function _interopNamespace(e) {
|
|
19
|
-
if (e && e.__esModule) return e;
|
|
20
|
-
var n = Object.create(null);
|
|
21
|
-
if (e) {
|
|
22
|
-
Object.keys(e).forEach(function (k) {
|
|
23
|
-
if (k !== 'default') {
|
|
24
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
25
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
26
|
-
enumerable: true,
|
|
27
|
-
get: function () { return e[k]; }
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
n["default"] = e;
|
|
33
|
-
return Object.freeze(n);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
18
|
var _objectWithoutPropertiesLoose__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutPropertiesLoose);
|
|
37
19
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
38
|
-
var THREE__namespace = /*#__PURE__*/_interopNamespace(THREE);
|
|
39
20
|
var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
|
|
40
21
|
var _construct__default = /*#__PURE__*/_interopDefaultLegacy(_construct);
|
|
41
22
|
var mergeRefs__default = /*#__PURE__*/_interopDefaultLegacy(mergeRefs);
|
|
@@ -80,12 +61,12 @@ var wrapEffect = function wrapEffect(effectImpl, defaultBlendMode) {
|
|
|
80
61
|
var useVector2 = function useVector2(props, key) {
|
|
81
62
|
var vec = props[key];
|
|
82
63
|
return React.useMemo(function () {
|
|
83
|
-
if (vec instanceof
|
|
84
|
-
return new
|
|
64
|
+
if (vec instanceof three.Vector2) {
|
|
65
|
+
return new three.Vector2().set(vec.x, vec.y);
|
|
85
66
|
} else if (Array.isArray(vec)) {
|
|
86
67
|
var x = vec[0],
|
|
87
68
|
y = vec[1];
|
|
88
|
-
return new
|
|
69
|
+
return new three.Vector2().set(x, y);
|
|
89
70
|
}
|
|
90
71
|
}, [vec]);
|
|
91
72
|
};
|
|
@@ -145,7 +126,7 @@ var EffectComposer = /*#__PURE__*/React__default["default"].memo( /*#__PURE__*/R
|
|
|
145
126
|
_ref$multisampling = _ref.multisampling,
|
|
146
127
|
multisampling = _ref$multisampling === void 0 ? 8 : _ref$multisampling,
|
|
147
128
|
_ref$frameBufferType = _ref.frameBufferType,
|
|
148
|
-
frameBufferType = _ref$frameBufferType === void 0 ?
|
|
129
|
+
frameBufferType = _ref$frameBufferType === void 0 ? three.HalfFloatType : _ref$frameBufferType;
|
|
149
130
|
|
|
150
131
|
var _useThree = fiber.useThree(),
|
|
151
132
|
gl = _useThree.gl,
|
|
@@ -262,7 +243,7 @@ var DepthOfField = /*#__PURE__*/React.forwardRef(function DepthOfField(_ref, ref
|
|
|
262
243
|
}, [camera, props]);
|
|
263
244
|
React.useLayoutEffect(function () {
|
|
264
245
|
if (target) {
|
|
265
|
-
var vec = target instanceof
|
|
246
|
+
var vec = target instanceof three.Vector3 ? new three.Vector3().set(target.x, target.y, target.z) : new three.Vector3().set(target[0], target[1], target[2]);
|
|
266
247
|
effect.target = vec;
|
|
267
248
|
}
|
|
268
249
|
|
|
@@ -673,10 +654,10 @@ var Texture = /*#__PURE__*/React.forwardRef(function Texture(_ref, ref) {
|
|
|
673
654
|
texture = _ref.texture,
|
|
674
655
|
props = _objectWithoutPropertiesLoose__default["default"](_ref, _excluded$2);
|
|
675
656
|
|
|
676
|
-
var t = fiber.useLoader(
|
|
657
|
+
var t = fiber.useLoader(three.TextureLoader, textureSrc);
|
|
677
658
|
React.useLayoutEffect(function () {
|
|
678
|
-
t.encoding =
|
|
679
|
-
t.wrapS = t.wrapT =
|
|
659
|
+
t.encoding = three.sRGBEncoding;
|
|
660
|
+
t.wrapS = t.wrapT = three.RepeatWrapping;
|
|
680
661
|
}, [t]);
|
|
681
662
|
var effect = React.useMemo(function () {
|
|
682
663
|
return new postprocessing.TextureEffect(_extends__default["default"]({}, props, {
|
|
@@ -720,10 +701,12 @@ var LUT = /*#__PURE__*/React.forwardRef(function LUT(_ref, ref) {
|
|
|
720
701
|
});
|
|
721
702
|
});
|
|
722
703
|
|
|
723
|
-
var _excluded = ["blurSize", "enabled"];
|
|
704
|
+
var _excluded = ["resolutionScale", "blurSize", "enabled"];
|
|
724
705
|
|
|
725
706
|
var SSR = /*#__PURE__*/React.forwardRef(function SSR(_ref, ref) {
|
|
726
|
-
var _ref$
|
|
707
|
+
var _ref$resolutionScale = _ref.resolutionScale,
|
|
708
|
+
resolutionScale = _ref$resolutionScale === void 0 ? 1 : _ref$resolutionScale,
|
|
709
|
+
_ref$blurSize = _ref.blurSize,
|
|
727
710
|
blurSize = _ref$blurSize === void 0 ? 512 : _ref$blurSize,
|
|
728
711
|
_ref$enabled = _ref.enabled,
|
|
729
712
|
enabled = _ref$enabled === void 0 ? true : _ref$enabled,
|
|
@@ -739,42 +722,40 @@ var SSR = /*#__PURE__*/React.forwardRef(function SSR(_ref, ref) {
|
|
|
739
722
|
scene = _useContext.scene,
|
|
740
723
|
camera = _useContext.camera;
|
|
741
724
|
|
|
742
|
-
var _useState = React.useState(
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
var _useState2 = React.useState(function () {
|
|
770
|
-
return new screenSpaceReflections.SSRPass(composer, scene, camera, options);
|
|
725
|
+
var _useState = React.useState(function () {
|
|
726
|
+
return new screenSpaceReflections.SSRPass(scene, camera, _extends__default["default"]({
|
|
727
|
+
width: size.width * viewport.dpr * resolutionScale,
|
|
728
|
+
height: size.height * viewport.dpr * resolutionScale,
|
|
729
|
+
blurWidth: blurSize,
|
|
730
|
+
blurHeight: blurSize,
|
|
731
|
+
blurKernelSize: postprocessing.KernelSize.SMALL,
|
|
732
|
+
rayStep: 0.1,
|
|
733
|
+
intensity: 1,
|
|
734
|
+
power: 1,
|
|
735
|
+
depthBlur: 0.1,
|
|
736
|
+
enableJittering: false,
|
|
737
|
+
jitter: 0.1,
|
|
738
|
+
jitterSpread: 0.1,
|
|
739
|
+
roughnessFadeOut: 1,
|
|
740
|
+
MAX_STEPS: 20,
|
|
741
|
+
NUM_BINARY_SEARCH_STEPS: 5,
|
|
742
|
+
maxDepthDifference: 1,
|
|
743
|
+
maxDepth: 1,
|
|
744
|
+
thickness: 10,
|
|
745
|
+
ior: 1.45,
|
|
746
|
+
useBlur: true,
|
|
747
|
+
useMRT: true,
|
|
748
|
+
useNormalMap: true,
|
|
749
|
+
useRoughnessMap: true
|
|
750
|
+
}, props));
|
|
771
751
|
}),
|
|
772
|
-
pass =
|
|
752
|
+
pass = _useState[0];
|
|
773
753
|
|
|
774
754
|
React.useEffect(function () {
|
|
775
755
|
Object.keys(props).forEach(function (key) {
|
|
776
756
|
return pass.reflectionUniforms[key] && (pass.reflectionUniforms[key].value = props[key]);
|
|
777
757
|
});
|
|
758
|
+
invalidate();
|
|
778
759
|
}, [props]);
|
|
779
760
|
React.useEffect(function () {
|
|
780
761
|
// Steps
|
|
@@ -801,16 +782,17 @@ var SSR = /*#__PURE__*/React.forwardRef(function SSR(_ref, ref) {
|
|
|
801
782
|
|
|
802
783
|
pass.reflectionsPass.fullscreenMaterial.needsUpdate = true;
|
|
803
784
|
pass.fullscreenMaterial.needsUpdate = true;
|
|
785
|
+
invalidate();
|
|
804
786
|
}, [enabled, props.useBlur, props.enableJittering, props.NUM_BINARY_SEARCH_STEPS, props.MAX_STEPS]);
|
|
805
787
|
React.useEffect(function () {
|
|
806
|
-
pass.setSize(size.width * viewport.dpr, size.height * viewport.dpr);
|
|
788
|
+
pass.setSize(size.width * viewport.dpr * resolutionScale, size.height * viewport.dpr * resolutionScale);
|
|
807
789
|
pass.kawaseBlurPass.setSize(blurSize, blurSize);
|
|
808
790
|
invalidate();
|
|
809
|
-
}, [blurSize, size, viewport, composer, pass, invalidate]);
|
|
791
|
+
}, [resolutionScale, blurSize, size, viewport, composer, pass, invalidate]);
|
|
810
792
|
React.useLayoutEffect(function () {
|
|
811
793
|
composer.addPass(pass);
|
|
812
794
|
return function () {
|
|
813
|
-
composer.removePass(pass);
|
|
795
|
+
composer.removePass(pass); //pass.dispose()
|
|
814
796
|
};
|
|
815
797
|
}, [composer, pass]);
|
|
816
798
|
return null;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BlendFunction, BloomEffect, BrightnessContrastEffect, ChromaticAberrationEffect, ColorAverageEffect, ColorDepthEffect, DepthEffect, EffectComposer as EffectComposer$1, RenderPass, NormalPass, DepthDownsamplingPass, EffectPass, DepthOfFieldEffect, DotScreenEffect, GlitchEffect, GlitchMode, GodRaysEffect, GridEffect, HueSaturationEffect, NoiseEffect, OutlineEffect, PixelationEffect, ScanlineEffect, SelectiveBloomEffect, SepiaEffect, SSAOEffect, SMAAPreset, EdgeDetectionMode, SMAAImageLoader, SMAAEffect, TextureEffect, ToneMappingEffect, VignetteEffect, ShockWaveEffect, LUTEffect, KernelSize } from 'postprocessing';
|
|
2
2
|
import React, { forwardRef, useMemo, useLayoutEffect, createContext, useEffect, useRef, useImperativeHandle, useContext, useState } from 'react';
|
|
3
|
-
import
|
|
4
|
-
import { Vector2, Vector3, TextureLoader, sRGBEncoding, RepeatWrapping } from 'three';
|
|
3
|
+
import { Vector2, HalfFloatType, Vector3, TextureLoader, sRGBEncoding, RepeatWrapping } from 'three';
|
|
5
4
|
import { useThree, useFrame, useLoader } from '@react-three/fiber';
|
|
6
5
|
import { isWebGL2Available } from 'three-stdlib';
|
|
7
6
|
import mergeRefs from 'react-merge-refs';
|
|
@@ -96,7 +95,7 @@ const EffectComposer = /*#__PURE__*/React.memo( /*#__PURE__*/forwardRef((_ref, r
|
|
|
96
95
|
disableNormalPass,
|
|
97
96
|
stencilBuffer,
|
|
98
97
|
multisampling = 8,
|
|
99
|
-
frameBufferType =
|
|
98
|
+
frameBufferType = HalfFloatType
|
|
100
99
|
} = _ref;
|
|
101
100
|
const {
|
|
102
101
|
gl,
|
|
@@ -598,6 +597,7 @@ const LUT = /*#__PURE__*/forwardRef(function LUT(_ref, ref) {
|
|
|
598
597
|
|
|
599
598
|
const SSR = /*#__PURE__*/forwardRef(function SSR(_ref, ref) {
|
|
600
599
|
let {
|
|
600
|
+
resolutionScale = 1,
|
|
601
601
|
blurSize = 512,
|
|
602
602
|
enabled = true,
|
|
603
603
|
...props
|
|
@@ -612,9 +612,9 @@ const SSR = /*#__PURE__*/forwardRef(function SSR(_ref, ref) {
|
|
|
612
612
|
scene,
|
|
613
613
|
camera
|
|
614
614
|
} = useContext(EffectComposerContext);
|
|
615
|
-
const [
|
|
616
|
-
width: size.width,
|
|
617
|
-
height: size.height,
|
|
615
|
+
const [pass] = useState(() => new SSRPass(scene, camera, {
|
|
616
|
+
width: size.width * viewport.dpr * resolutionScale,
|
|
617
|
+
height: size.height * viewport.dpr * resolutionScale,
|
|
618
618
|
blurWidth: blurSize,
|
|
619
619
|
blurHeight: blurSize,
|
|
620
620
|
blurKernelSize: KernelSize.SMALL,
|
|
@@ -637,10 +637,10 @@ const SSR = /*#__PURE__*/forwardRef(function SSR(_ref, ref) {
|
|
|
637
637
|
useNormalMap: true,
|
|
638
638
|
useRoughnessMap: true,
|
|
639
639
|
...props
|
|
640
|
-
});
|
|
641
|
-
const [pass] = useState(() => new SSRPass(composer, scene, camera, options));
|
|
640
|
+
}));
|
|
642
641
|
useEffect(() => {
|
|
643
642
|
Object.keys(props).forEach(key => pass.reflectionUniforms[key] && (pass.reflectionUniforms[key].value = props[key]));
|
|
643
|
+
invalidate();
|
|
644
644
|
}, [props]);
|
|
645
645
|
useEffect(() => {
|
|
646
646
|
// Steps
|
|
@@ -667,16 +667,17 @@ const SSR = /*#__PURE__*/forwardRef(function SSR(_ref, ref) {
|
|
|
667
667
|
|
|
668
668
|
pass.reflectionsPass.fullscreenMaterial.needsUpdate = true;
|
|
669
669
|
pass.fullscreenMaterial.needsUpdate = true;
|
|
670
|
+
invalidate();
|
|
670
671
|
}, [enabled, props.useBlur, props.enableJittering, props.NUM_BINARY_SEARCH_STEPS, props.MAX_STEPS]);
|
|
671
672
|
useEffect(() => {
|
|
672
|
-
pass.setSize(size.width * viewport.dpr, size.height * viewport.dpr);
|
|
673
|
+
pass.setSize(size.width * viewport.dpr * resolutionScale, size.height * viewport.dpr * resolutionScale);
|
|
673
674
|
pass.kawaseBlurPass.setSize(blurSize, blurSize);
|
|
674
675
|
invalidate();
|
|
675
|
-
}, [blurSize, size, viewport, composer, pass, invalidate]);
|
|
676
|
+
}, [resolutionScale, blurSize, size, viewport, composer, pass, invalidate]);
|
|
676
677
|
useLayoutEffect(() => {
|
|
677
678
|
composer.addPass(pass);
|
|
678
679
|
return () => {
|
|
679
|
-
composer.removePass(pass);
|
|
680
|
+
composer.removePass(pass); //pass.dispose()
|
|
680
681
|
};
|
|
681
682
|
}, [composer, pass]);
|
|
682
683
|
return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-three/postprocessing",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.5",
|
|
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.1",
|
|
43
43
|
"react-merge-refs": "^1.1.0",
|
|
44
|
-
"screen-space-reflections": "^1.0.
|
|
44
|
+
"screen-space-reflections": "^1.0.7",
|
|
45
45
|
"three-stdlib": "^2.8.11"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|