@react-three/postprocessing 2.19.0 → 3.0.0-rc.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.
- package/LICENSE +21 -21
- package/README.md +81 -81
- package/dist/index.d.ts +1 -38
- package/dist/index.js +554 -88
- package/dist/index.js.map +1 -1
- package/package.json +69 -96
- package/src/EffectComposer.test.tsx +126 -0
- package/src/EffectComposer.tsx +202 -0
- package/src/Selection.tsx +46 -0
- package/src/effects/ASCII.tsx +135 -0
- package/src/effects/Autofocus.tsx +153 -0
- package/src/effects/Bloom.tsx +6 -0
- package/src/effects/BrightnessContrast.tsx +4 -0
- package/src/effects/ChromaticAberration.tsx +5 -0
- package/src/effects/ColorAverage.tsx +15 -0
- package/src/effects/ColorDepth.tsx +4 -0
- package/src/effects/Depth.tsx +4 -0
- package/src/effects/DepthOfField.tsx +89 -0
- package/src/effects/DotScreen.tsx +4 -0
- package/src/effects/FXAA.tsx +4 -0
- package/src/effects/Glitch.tsx +40 -0
- package/src/effects/GodRays.tsx +16 -0
- package/src/effects/Grid.tsx +21 -0
- package/src/effects/HueSaturation.tsx +4 -0
- package/src/effects/LUT.tsx +26 -0
- package/{dist/effects/LensFlare.js → src/effects/LensFlare.tsx} +611 -556
- package/src/effects/N8AO.tsx +81 -0
- package/src/effects/Noise.tsx +4 -0
- package/src/effects/Outline.tsx +117 -0
- package/src/effects/Pixelation.tsx +15 -0
- package/{dist/effects/Ramp.js → src/effects/Ramp.tsx} +150 -156
- package/src/effects/SMAA.tsx +4 -0
- package/src/effects/SSAO.tsx +41 -0
- package/src/effects/ScanlineEffect.tsx +7 -0
- package/src/effects/SelectiveBloom.tsx +126 -0
- package/src/effects/Sepia.tsx +4 -0
- package/src/effects/ShockWave.tsx +4 -0
- package/src/effects/Texture.tsx +23 -0
- package/src/effects/TiltShift.tsx +4 -0
- package/{dist/effects/TiltShift2.js → src/effects/TiltShift2.tsx} +90 -98
- package/src/effects/ToneMapping.tsx +6 -0
- package/src/effects/Vignette.tsx +4 -0
- package/{dist/effects/Water.js → src/effects/Water.tsx} +35 -38
- package/src/index.ts +40 -0
- package/src/util.tsx +55 -0
- package/dist/EffectComposer.cjs +0 -137
- package/dist/EffectComposer.cjs.map +0 -1
- package/dist/EffectComposer.d.ts +0 -27
- package/dist/EffectComposer.js +0 -137
- package/dist/EffectComposer.js.map +0 -1
- package/dist/EffectComposer.test.d.ts +0 -4
- package/dist/Selection.cjs +0 -36
- package/dist/Selection.cjs.map +0 -1
- package/dist/Selection.d.ts +0 -16
- package/dist/Selection.js +0 -36
- package/dist/Selection.js.map +0 -1
- package/dist/compat.cjs +0 -77
- package/dist/compat.cjs.map +0 -1
- package/dist/compat.js +0 -60
- package/dist/compat.js.map +0 -1
- package/dist/effects/ASCII.cjs +0 -113
- package/dist/effects/ASCII.cjs.map +0 -1
- package/dist/effects/ASCII.d.ts +0 -17
- package/dist/effects/ASCII.js +0 -113
- package/dist/effects/ASCII.js.map +0 -1
- package/dist/effects/Autofocus.cjs +0 -126
- package/dist/effects/Autofocus.cjs.map +0 -1
- package/dist/effects/Autofocus.d.ts +0 -22
- package/dist/effects/Autofocus.js +0 -109
- package/dist/effects/Autofocus.js.map +0 -1
- package/dist/effects/Bloom.cjs +0 -9
- package/dist/effects/Bloom.cjs.map +0 -1
- package/dist/effects/Bloom.d.ts +0 -6
- package/dist/effects/Bloom.js +0 -9
- package/dist/effects/Bloom.js.map +0 -1
- package/dist/effects/BrightnessContrast.cjs +0 -7
- package/dist/effects/BrightnessContrast.cjs.map +0 -1
- package/dist/effects/BrightnessContrast.d.ts +0 -10
- package/dist/effects/BrightnessContrast.js +0 -7
- package/dist/effects/BrightnessContrast.js.map +0 -1
- package/dist/effects/ChromaticAberration.cjs +0 -7
- package/dist/effects/ChromaticAberration.cjs.map +0 -1
- package/dist/effects/ChromaticAberration.d.ts +0 -13
- package/dist/effects/ChromaticAberration.js +0 -7
- package/dist/effects/ChromaticAberration.js.map +0 -1
- package/dist/effects/ColorAverage.cjs +0 -11
- package/dist/effects/ColorAverage.cjs.map +0 -1
- package/dist/effects/ColorAverage.d.ts +0 -8
- package/dist/effects/ColorAverage.js +0 -11
- package/dist/effects/ColorAverage.js.map +0 -1
- package/dist/effects/ColorDepth.cjs +0 -7
- package/dist/effects/ColorDepth.cjs.map +0 -1
- package/dist/effects/ColorDepth.d.ts +0 -9
- package/dist/effects/ColorDepth.js +0 -7
- package/dist/effects/ColorDepth.js.map +0 -1
- package/dist/effects/Depth.cjs +0 -7
- package/dist/effects/Depth.cjs.map +0 -1
- package/dist/effects/Depth.d.ts +0 -9
- package/dist/effects/Depth.js +0 -7
- package/dist/effects/Depth.js.map +0 -1
- package/dist/effects/DepthOfField.cjs +0 -74
- package/dist/effects/DepthOfField.cjs.map +0 -1
- package/dist/effects/DepthOfField.d.ts +0 -25
- package/dist/effects/DepthOfField.js +0 -74
- package/dist/effects/DepthOfField.js.map +0 -1
- package/dist/effects/DotScreen.cjs +0 -7
- package/dist/effects/DotScreen.cjs.map +0 -1
- package/dist/effects/DotScreen.d.ts +0 -10
- package/dist/effects/DotScreen.js +0 -7
- package/dist/effects/DotScreen.js.map +0 -1
- package/dist/effects/FXAA.cjs +0 -7
- package/dist/effects/FXAA.cjs.map +0 -1
- package/dist/effects/FXAA.d.ts +0 -8
- package/dist/effects/FXAA.js +0 -7
- package/dist/effects/FXAA.js.map +0 -1
- package/dist/effects/Glitch.cjs +0 -31
- package/dist/effects/Glitch.cjs.map +0 -1
- package/dist/effects/Glitch.d.ts +0 -30
- package/dist/effects/Glitch.js +0 -31
- package/dist/effects/Glitch.js.map +0 -1
- package/dist/effects/GodRays.cjs +0 -15
- package/dist/effects/GodRays.cjs.map +0 -1
- package/dist/effects/GodRays.d.ts +0 -21
- package/dist/effects/GodRays.js +0 -15
- package/dist/effects/GodRays.js.map +0 -1
- package/dist/effects/Grid.cjs +0 -18
- package/dist/effects/Grid.cjs.map +0 -1
- package/dist/effects/Grid.d.ts +0 -12
- package/dist/effects/Grid.js +0 -18
- package/dist/effects/Grid.js.map +0 -1
- package/dist/effects/HueSaturation.cjs +0 -7
- package/dist/effects/HueSaturation.cjs.map +0 -1
- package/dist/effects/HueSaturation.d.ts +0 -10
- package/dist/effects/HueSaturation.js +0 -7
- package/dist/effects/HueSaturation.js.map +0 -1
- package/dist/effects/LUT.cjs +0 -20
- package/dist/effects/LUT.cjs.map +0 -1
- package/dist/effects/LUT.d.ts +0 -9
- package/dist/effects/LUT.js +0 -20
- package/dist/effects/LUT.js.map +0 -1
- package/dist/effects/LensFlare.cjs +0 -573
- package/dist/effects/LensFlare.cjs.map +0 -1
- package/dist/effects/LensFlare.d.ts +0 -55
- package/dist/effects/LensFlare.js.map +0 -1
- package/dist/effects/N8AO/BlueNoise.cjs +0 -4
- package/dist/effects/N8AO/BlueNoise.cjs.map +0 -1
- package/dist/effects/N8AO/BlueNoise.js +0 -5
- package/dist/effects/N8AO/BlueNoise.js.map +0 -1
- package/dist/effects/N8AO/DepthDownSample.cjs +0 -183
- package/dist/effects/N8AO/DepthDownSample.cjs.map +0 -1
- package/dist/effects/N8AO/DepthDownSample.js +0 -166
- package/dist/effects/N8AO/DepthDownSample.js.map +0 -1
- package/dist/effects/N8AO/EffectCompositer.cjs +0 -278
- package/dist/effects/N8AO/EffectCompositer.cjs.map +0 -1
- package/dist/effects/N8AO/EffectCompositer.js +0 -261
- package/dist/effects/N8AO/EffectCompositer.js.map +0 -1
- package/dist/effects/N8AO/EffectShader.cjs +0 -236
- package/dist/effects/N8AO/EffectShader.cjs.map +0 -1
- package/dist/effects/N8AO/EffectShader.js +0 -219
- package/dist/effects/N8AO/EffectShader.js.map +0 -1
- package/dist/effects/N8AO/FullScreenTriangle.cjs +0 -59
- package/dist/effects/N8AO/FullScreenTriangle.cjs.map +0 -1
- package/dist/effects/N8AO/FullScreenTriangle.js +0 -42
- package/dist/effects/N8AO/FullScreenTriangle.js.map +0 -1
- package/dist/effects/N8AO/N8AOPostPass.cjs +0 -502
- package/dist/effects/N8AO/N8AOPostPass.cjs.map +0 -1
- package/dist/effects/N8AO/N8AOPostPass.js +0 -485
- package/dist/effects/N8AO/N8AOPostPass.js.map +0 -1
- package/dist/effects/N8AO/PoissionBlur.cjs +0 -186
- package/dist/effects/N8AO/PoissionBlur.cjs.map +0 -1
- package/dist/effects/N8AO/PoissionBlur.js +0 -169
- package/dist/effects/N8AO/PoissionBlur.js.map +0 -1
- package/dist/effects/N8AO/index.cjs +0 -60
- package/dist/effects/N8AO/index.cjs.map +0 -1
- package/dist/effects/N8AO/index.d.ts +0 -18
- package/dist/effects/N8AO/index.js +0 -60
- package/dist/effects/N8AO/index.js.map +0 -1
- package/dist/effects/Noise.cjs +0 -7
- package/dist/effects/Noise.cjs.map +0 -1
- package/dist/effects/Noise.d.ts +0 -9
- package/dist/effects/Noise.js +0 -7
- package/dist/effects/Noise.js.map +0 -1
- package/dist/effects/Outline.cjs +0 -100
- package/dist/effects/Outline.cjs.map +0 -1
- package/dist/effects/Outline.d.ts +0 -30
- package/dist/effects/Outline.js +0 -100
- package/dist/effects/Outline.js.map +0 -1
- package/dist/effects/Pixelation.cjs +0 -11
- package/dist/effects/Pixelation.cjs.map +0 -1
- package/dist/effects/Pixelation.d.ts +0 -6
- package/dist/effects/Pixelation.js +0 -11
- package/dist/effects/Pixelation.js.map +0 -1
- package/dist/effects/Ramp.cjs +0 -156
- package/dist/effects/Ramp.cjs.map +0 -1
- package/dist/effects/Ramp.d.ts +0 -88
- package/dist/effects/Ramp.js.map +0 -1
- package/dist/effects/SMAA.cjs +0 -7
- package/dist/effects/SMAA.cjs.map +0 -1
- package/dist/effects/SMAA.d.ts +0 -10
- package/dist/effects/SMAA.js +0 -7
- package/dist/effects/SMAA.js.map +0 -1
- package/dist/effects/SSAO.cjs +0 -37
- package/dist/effects/SSAO.cjs.map +0 -1
- package/dist/effects/SSAO.d.ts +0 -30
- package/dist/effects/SSAO.js +0 -37
- package/dist/effects/SSAO.js.map +0 -1
- package/dist/effects/SSR/index.cjs +0 -33
- package/dist/effects/SSR/index.cjs.map +0 -1
- package/dist/effects/SSR/index.d.ts +0 -55
- package/dist/effects/SSR/index.js +0 -33
- package/dist/effects/SSR/index.js.map +0 -1
- package/dist/effects/SSR/screen-space-reflections.cjs +0 -1699
- package/dist/effects/SSR/screen-space-reflections.cjs.map +0 -1
- package/dist/effects/SSR/screen-space-reflections.js +0 -1699
- package/dist/effects/SSR/screen-space-reflections.js.map +0 -1
- package/dist/effects/ScanlineEffect.cjs +0 -7
- package/dist/effects/ScanlineEffect.cjs.map +0 -1
- package/dist/effects/ScanlineEffect.d.ts +0 -9
- package/dist/effects/ScanlineEffect.js +0 -7
- package/dist/effects/ScanlineEffect.js.map +0 -1
- package/dist/effects/SelectiveBloom.cjs +0 -94
- package/dist/effects/SelectiveBloom.cjs.map +0 -1
- package/dist/effects/SelectiveBloom.d.ts +0 -20
- package/dist/effects/SelectiveBloom.js +0 -94
- package/dist/effects/SelectiveBloom.js.map +0 -1
- package/dist/effects/Sepia.cjs +0 -7
- package/dist/effects/Sepia.cjs.map +0 -1
- package/dist/effects/Sepia.d.ts +0 -9
- package/dist/effects/Sepia.js +0 -7
- package/dist/effects/Sepia.js.map +0 -1
- package/dist/effects/ShockWave.cjs +0 -7
- package/dist/effects/ShockWave.cjs.map +0 -1
- package/dist/effects/ShockWave.d.ts +0 -6
- package/dist/effects/ShockWave.js +0 -7
- package/dist/effects/ShockWave.js.map +0 -1
- package/dist/effects/Texture.cjs +0 -21
- package/dist/effects/Texture.cjs.map +0 -1
- package/dist/effects/Texture.d.ts +0 -11
- package/dist/effects/Texture.js +0 -21
- package/dist/effects/Texture.js.map +0 -1
- package/dist/effects/TiltShift.cjs +0 -7
- package/dist/effects/TiltShift.cjs.map +0 -1
- package/dist/effects/TiltShift.d.ts +0 -17
- package/dist/effects/TiltShift.js +0 -7
- package/dist/effects/TiltShift.js.map +0 -1
- package/dist/effects/TiltShift2.cjs +0 -98
- package/dist/effects/TiltShift2.cjs.map +0 -1
- package/dist/effects/TiltShift2.d.ts +0 -30
- package/dist/effects/TiltShift2.js.map +0 -1
- package/dist/effects/ToneMapping.cjs +0 -7
- package/dist/effects/ToneMapping.cjs.map +0 -1
- package/dist/effects/ToneMapping.d.ts +0 -19
- package/dist/effects/ToneMapping.js +0 -7
- package/dist/effects/ToneMapping.js.map +0 -1
- package/dist/effects/Vignette.cjs +0 -7
- package/dist/effects/Vignette.cjs.map +0 -1
- package/dist/effects/Vignette.d.ts +0 -12
- package/dist/effects/Vignette.js +0 -7
- package/dist/effects/Vignette.js.map +0 -1
- package/dist/effects/Water.cjs +0 -38
- package/dist/effects/Water.cjs.map +0 -1
- package/dist/effects/Water.d.ts +0 -15
- package/dist/effects/Water.js.map +0 -1
- package/dist/index.cjs +0 -89
- package/dist/index.cjs.map +0 -1
- package/dist/util.cjs +0 -69
- package/dist/util.cjs.map +0 -1
- package/dist/util.d.ts +0 -13
- package/dist/util.js +0 -52
- package/dist/util.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/Selection.tsx","../src/EffectComposer.tsx","../src/util.tsx","../src/effects/DepthOfField.tsx","../src/effects/Autofocus.tsx","../src/effects/LensFlare.tsx","../src/effects/Bloom.tsx","../src/effects/BrightnessContrast.tsx","../src/effects/ChromaticAberration.tsx","../src/effects/ColorAverage.tsx","../src/effects/ColorDepth.tsx","../src/effects/Depth.tsx","../src/effects/DotScreen.tsx","../src/effects/Glitch.tsx","../src/effects/GodRays.tsx","../src/effects/Grid.tsx","../src/effects/HueSaturation.tsx","../src/effects/Noise.tsx","../src/effects/Outline.tsx","../src/effects/Pixelation.tsx","../src/effects/ScanlineEffect.tsx","../src/effects/SelectiveBloom.tsx","../src/effects/Sepia.tsx","../src/effects/SSAO.tsx","../src/effects/SMAA.tsx","../src/effects/FXAA.tsx","../src/effects/Ramp.tsx","../src/effects/Texture.tsx","../src/effects/ToneMapping.tsx","../src/effects/Vignette.tsx","../src/effects/ShockWave.tsx","../src/effects/LUT.tsx","../src/effects/TiltShift.tsx","../src/effects/TiltShift2.tsx","../src/effects/ASCII.tsx","../src/effects/Water.tsx","../src/effects/N8AO.tsx"],"sourcesContent":null,"names":["selectionContext","Selection","children","enabled","selected","select","useState","value","useMemo","Select","props","group","useRef","api","useContext","useEffect","changed","current","o","state","t","e","EffectComposerContext","re","n","effect","Lt","memo","forwardRef","_camera","_scene","resolutionScale","renderPriority","autoClear","depthBuffer","enableNormalPass","stencilBuffer","multisampling","frameBufferType","HalfFloatType","ref","gl","defaultScene","defaultCamera","size","useThree","scene","camera","composer","normalPass","downSamplingPass","webGL2Available","isWebGL2Available","effectComposer","EffectComposerImpl","RenderPass","normalPass2","NormalPass","DepthDownsamplingPass","useFrame","_","delta","currentAutoClear","useLayoutEffect","passes","groupInstance","i","child","Effect","effects","isConvolution","next","pass","EffectPass","Pass","currentTonemapping","NoToneMapping","useImperativeHandle","S","F","jsx","B","resolveRef","components","defaults","opacity","Component","key","extend","args","React","blendFunction","useVector2","THREE","DepthOfField","worldFocusDistance","worldFocusRange","focusDistance","focusRange","focalLength","bokehScale","resolutionX","resolutionY","width","height","target","depthTexture","autoFocus","DepthOfFieldEffect","effect2","Vector3","maskPass","MaskFunction","d","Autofocus","followMouse","debug","manual","smoothTime","fref","dofRef","hitpointRef","targetRef","pointer","depthPickingPass","DepthPickingPass","copyPass","CopyPass","hitpoint","ndc","getHit","useCallback","x","y","update","updateTarget","hit","easing","jsxs","Fragment","createPortal","f","c","a","LensFlareShader","LensFlareEffect","glareSize","lensPosition","screenRes","starPoints","flareSize","flareSpeed","flareShape","animated","anamorphic","colorGain","lensDirtTexture","haloScale","secondaryGhosts","aditionalStreaks","ghostScale","starBurst","_renderer","_inputBuffer","deltaTime","time","LensFlareWrapped","It","viewport","raycaster","raycasterPos","projectedPosition","uLensPosition","uOpacity","intersects","object","screenRes2","Bloom","BrightnessContrast","_t","ChromaticAberration","ChromaticAberrationEffect","ColorAverageEffect","ColorDepth","ColorDepthEffect","Ot","Depth","DotScreenEffect","active","r","invalidate","delay","duration","strength","chromaticAberrationOffset","GlitchEffect","GlitchMode","GodRays","D","GodRaysEffect","Grid","GridEffect","HueSaturation","Zt","wrapEffect","NoiseEffect","$t","selection","selectionLayer","patternTexture","edgeStrength","pulseSpeed","visibleEdgeColor","hiddenEdgeColor","kernelSize","blur","xRay","OutlineEffect","l","Pixelation","granularity","PixelationEffect","Scanline","addLight","light","removeLight","SelectiveBloom","lights","inverted","ignoreBackground","luminanceThreshold","luminanceSmoothing","intensity","mipmapBlur","SelectiveBloomEffect","Sepia","SepiaEffect","Yt","SSAO","SSAOEffect","SMAA","SMAAEffect","to","FXAA","RampType","RampType2","RampEffect","rampType","rampStart","rampEnd","startColor","endColor","rampBias","rampGain","rampMask","rampInvert","params","RampShader","Uniform","Ramp","ro","useLoader","TextureLoader","textureSrc","SRGBColorSpace","RepeatWrapping","TextureEffect","texture","ToneMapping","ao","VignetteEffect","ShockWave","LUT3DEffect","lut","tetrahedralInterpolation","TiltShift","A","nt","TiltShiftEffect","ht","taper","start","end","samples","direction","TiltShiftShader","TiltShift2","wt","ASCIIEffect","font","characters","fontSize","cellSize","color","invert","uniforms","Texture","Color","fragment","charactersTextureUniform","canvas","SIZE","MAX_PER_ROW","CELL","CanvasTexture","NearestFilter","context","char","ASCII","WaterShader","WaterEffectImpl","factor","E","WaterEffect","N8AO","halfRes","screenSpaceRadius","quality","depthAwareUpsampling","aoRadius","aoSamples","denoiseSamples","denoiseRadius","distanceFalloff","renderMode","N8AOPostPass","applyProps","m"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,96 +1,69 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@react-three/postprocessing",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "postprocessing wrapper for React and @react-three/fiber",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"postprocessing",
|
|
7
|
-
"react",
|
|
8
|
-
"three",
|
|
9
|
-
"@react-three/fiber",
|
|
10
|
-
"webgl",
|
|
11
|
-
"3d"
|
|
12
|
-
],
|
|
13
|
-
"license": "MIT",
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"@
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"eslint": "^8.39.0",
|
|
71
|
-
"eslint-config-prettier": "^8.8.0",
|
|
72
|
-
"eslint-import-resolver-alias": "^1.1.2",
|
|
73
|
-
"eslint-plugin-import": "^2.27.5",
|
|
74
|
-
"eslint-plugin-prettier": "^4.2.1",
|
|
75
|
-
"eslint-plugin-react": "^7.32.2",
|
|
76
|
-
"eslint-plugin-react-hooks": "^4.6.0",
|
|
77
|
-
"eslint-plugin-storybook": "^0.6.12",
|
|
78
|
-
"husky": "^8.0.3",
|
|
79
|
-
"lint-staged": "^13.2.2",
|
|
80
|
-
"prettier": "^2.8.8",
|
|
81
|
-
"react": "^18.2.0",
|
|
82
|
-
"react-dom": "^18.2.0",
|
|
83
|
-
"rimraf": "^5.0.0",
|
|
84
|
-
"semantic-release": "^21.0.2",
|
|
85
|
-
"storybook": "^7.0.10",
|
|
86
|
-
"three": "^0.151.3",
|
|
87
|
-
"typescript": "^5.0.4",
|
|
88
|
-
"vite": "^4.3.5",
|
|
89
|
-
"vitest": "^2.1.8"
|
|
90
|
-
},
|
|
91
|
-
"peerDependencies": {
|
|
92
|
-
"@react-three/fiber": "^8.0",
|
|
93
|
-
"react": "^18.0",
|
|
94
|
-
"three": ">= 0.138.0"
|
|
95
|
-
}
|
|
96
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@react-three/postprocessing",
|
|
3
|
+
"version": "3.0.0-rc.0",
|
|
4
|
+
"description": "postprocessing wrapper for React and @react-three/fiber",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"postprocessing",
|
|
7
|
+
"react",
|
|
8
|
+
"three",
|
|
9
|
+
"@react-three/fiber",
|
|
10
|
+
"webgl",
|
|
11
|
+
"3d"
|
|
12
|
+
],
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist/*",
|
|
16
|
+
"src/*"
|
|
17
|
+
],
|
|
18
|
+
"type": "module",
|
|
19
|
+
"main": "./dist/index.js",
|
|
20
|
+
"exports": "./dist/index.js",
|
|
21
|
+
"sideEffects": false,
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/pmndrs/react-postprocessing.git"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "vite build",
|
|
28
|
+
"eslint": "eslint . --fix --ext=js,ts,jsx,tsx",
|
|
29
|
+
"eslint:ci": "eslint . --ext=js,ts,jsx,tsx",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"typecheck": "tsc",
|
|
32
|
+
"release": "semantic-release"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"maath": "^0.6.0",
|
|
36
|
+
"n8ao": "^1.9.4",
|
|
37
|
+
"postprocessing": "^6.36.6",
|
|
38
|
+
"three-stdlib": "^2.35.7"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@react-three/fiber": "9.0.0-rc.4",
|
|
42
|
+
"@types/node": "^22.10.7",
|
|
43
|
+
"@types/react": "^19.0.2",
|
|
44
|
+
"@types/react-dom": "^19.0.2",
|
|
45
|
+
"@types/three": "^0.156.0",
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^5.59.1",
|
|
47
|
+
"@typescript-eslint/parser": "^5.59.1",
|
|
48
|
+
"eslint": "^8.39.0",
|
|
49
|
+
"eslint-config-prettier": "^8.8.0",
|
|
50
|
+
"eslint-import-resolver-alias": "^1.1.2",
|
|
51
|
+
"eslint-plugin-import": "^2.27.5",
|
|
52
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
53
|
+
"eslint-plugin-react": "^7.32.2",
|
|
54
|
+
"eslint-plugin-react-hooks": "^4.6.0",
|
|
55
|
+
"prettier": "^2.8.8",
|
|
56
|
+
"react": "^19.0.0",
|
|
57
|
+
"react-dom": "^19.0.0",
|
|
58
|
+
"semantic-release": "^21.0.2",
|
|
59
|
+
"three": "^0.156.0",
|
|
60
|
+
"typescript": "^5.0.4",
|
|
61
|
+
"vite": "^4.3.5",
|
|
62
|
+
"vitest": "^2.1.8"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@react-three/fiber": "9.0.0-rc.4",
|
|
66
|
+
"react": "^19.0",
|
|
67
|
+
"three": ">= 0.156.0"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import * as THREE from 'three'
|
|
3
|
+
import { vi, describe, it, expect } from 'vitest'
|
|
4
|
+
import { extend, createRoot, act } from '@react-three/fiber'
|
|
5
|
+
import { EffectComposer } from './EffectComposer'
|
|
6
|
+
import { EffectComposer as EffectComposerImpl, RenderPass, Pass, Effect, EffectPass } from 'postprocessing'
|
|
7
|
+
|
|
8
|
+
// Let React know that we'll be testing effectful components
|
|
9
|
+
declare global {
|
|
10
|
+
var IS_REACT_ACT_ENVIRONMENT: boolean
|
|
11
|
+
}
|
|
12
|
+
global.IS_REACT_ACT_ENVIRONMENT = true
|
|
13
|
+
|
|
14
|
+
// Create virtual R3F root for testing
|
|
15
|
+
extend(THREE as any)
|
|
16
|
+
const root = createRoot({
|
|
17
|
+
style: {} as CSSStyleDeclaration,
|
|
18
|
+
addEventListener: (() => {}) as any,
|
|
19
|
+
removeEventListener: (() => {}) as any,
|
|
20
|
+
width: 1280,
|
|
21
|
+
height: 800,
|
|
22
|
+
clientWidth: 1280,
|
|
23
|
+
clientHeight: 800,
|
|
24
|
+
getContext: (() =>
|
|
25
|
+
new Proxy(
|
|
26
|
+
{},
|
|
27
|
+
{
|
|
28
|
+
get(_target, prop) {
|
|
29
|
+
switch (prop) {
|
|
30
|
+
case 'getParameter':
|
|
31
|
+
return () => 'WebGL 2' // GL_VERSION
|
|
32
|
+
case 'getExtension':
|
|
33
|
+
return () => ({}) // EXT_blend_minmax
|
|
34
|
+
case 'getContextAttributes':
|
|
35
|
+
return () => ({ alpha: true })
|
|
36
|
+
case 'getShaderPrecisionFormat':
|
|
37
|
+
return () => ({ rangeMin: 1, rangeMax: 1, precision: 1 })
|
|
38
|
+
default:
|
|
39
|
+
return () => {}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
)) as any,
|
|
44
|
+
} satisfies Partial<HTMLCanvasElement> as HTMLCanvasElement)
|
|
45
|
+
root.configure({ frameloop: 'never' })
|
|
46
|
+
|
|
47
|
+
const EFFECT_SHADER = 'mainImage() {}'
|
|
48
|
+
|
|
49
|
+
describe('EffectComposer', () => {
|
|
50
|
+
it('should merge effects together', async () => {
|
|
51
|
+
const composerRef = React.createRef<EffectComposerImpl>()
|
|
52
|
+
|
|
53
|
+
const effectA = new Effect('A', EFFECT_SHADER)
|
|
54
|
+
const effectB = new Effect('B', EFFECT_SHADER)
|
|
55
|
+
const effectC = new Effect('C', EFFECT_SHADER)
|
|
56
|
+
const passA = new Pass()
|
|
57
|
+
const passB = new Pass()
|
|
58
|
+
|
|
59
|
+
// Forward order
|
|
60
|
+
await act(async () =>
|
|
61
|
+
root.render(
|
|
62
|
+
<EffectComposer ref={composerRef}>
|
|
63
|
+
{/* EffectPass(effectA, effectB) */}
|
|
64
|
+
<primitive object={effectA} />
|
|
65
|
+
<primitive object={effectB} />
|
|
66
|
+
{/* PassA */}
|
|
67
|
+
<primitive object={passA} />
|
|
68
|
+
{/* EffectPass(effectC) */}
|
|
69
|
+
<primitive object={effectC} />
|
|
70
|
+
{/* PassB */}
|
|
71
|
+
<primitive object={passB} />
|
|
72
|
+
</EffectComposer>
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
expect(composerRef.current!.passes.map((p) => p.constructor)).toStrictEqual([
|
|
76
|
+
RenderPass,
|
|
77
|
+
EffectPass,
|
|
78
|
+
Pass,
|
|
79
|
+
EffectPass,
|
|
80
|
+
Pass,
|
|
81
|
+
])
|
|
82
|
+
// @ts-expect-error
|
|
83
|
+
expect((composerRef.current!.passes[1] as EffectPass).effects).toStrictEqual([effectA, effectB])
|
|
84
|
+
expect(composerRef.current!.passes[2]).toBe(passA)
|
|
85
|
+
// @ts-expect-error
|
|
86
|
+
expect((composerRef.current!.passes[3] as EffectPass).effects).toStrictEqual([effectC])
|
|
87
|
+
expect(composerRef.current!.passes[4]).toBe(passB)
|
|
88
|
+
|
|
89
|
+
// NOTE: instance children ordering is unstable until R3F v9, so we remount from scratch
|
|
90
|
+
await act(async () => root.render(null))
|
|
91
|
+
|
|
92
|
+
// Reverse order
|
|
93
|
+
await act(async () =>
|
|
94
|
+
root.render(
|
|
95
|
+
<EffectComposer ref={composerRef}>
|
|
96
|
+
{/* PassB */}
|
|
97
|
+
<primitive object={passB} />
|
|
98
|
+
{/* EffectPass(effectC) */}
|
|
99
|
+
<primitive object={effectC} />
|
|
100
|
+
{/* PassA */}
|
|
101
|
+
<primitive object={passA} />
|
|
102
|
+
{/* EffectPass(effectB, effectA) */}
|
|
103
|
+
<primitive object={effectB} />
|
|
104
|
+
<primitive object={effectA} />
|
|
105
|
+
</EffectComposer>
|
|
106
|
+
)
|
|
107
|
+
)
|
|
108
|
+
expect(composerRef.current!.passes.map((p) => p.constructor)).toStrictEqual([
|
|
109
|
+
RenderPass,
|
|
110
|
+
Pass,
|
|
111
|
+
EffectPass,
|
|
112
|
+
Pass,
|
|
113
|
+
EffectPass,
|
|
114
|
+
])
|
|
115
|
+
expect(composerRef.current!.passes[1]).toBe(passB)
|
|
116
|
+
// @ts-expect-error
|
|
117
|
+
expect((composerRef.current!.passes[2] as EffectPass).effects).toStrictEqual([effectC])
|
|
118
|
+
expect(composerRef.current!.passes[3]).toBe(passA)
|
|
119
|
+
// @ts-expect-error
|
|
120
|
+
expect((composerRef.current!.passes[4] as EffectPass).effects).toStrictEqual([effectB, effectA])
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
it.skip('should split convolution effects', async () => {
|
|
124
|
+
await act(async () => root.render(null))
|
|
125
|
+
})
|
|
126
|
+
})
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import type { TextureDataType, Group } from 'three'
|
|
2
|
+
import { HalfFloatType, NoToneMapping } from 'three'
|
|
3
|
+
import {
|
|
4
|
+
type JSX,
|
|
5
|
+
memo,
|
|
6
|
+
forwardRef,
|
|
7
|
+
useMemo,
|
|
8
|
+
useEffect,
|
|
9
|
+
useLayoutEffect,
|
|
10
|
+
createContext,
|
|
11
|
+
useRef,
|
|
12
|
+
useImperativeHandle,
|
|
13
|
+
} from 'react'
|
|
14
|
+
import { useThree, useFrame, type Instance } from '@react-three/fiber'
|
|
15
|
+
import {
|
|
16
|
+
EffectComposer as EffectComposerImpl,
|
|
17
|
+
RenderPass,
|
|
18
|
+
EffectPass,
|
|
19
|
+
NormalPass,
|
|
20
|
+
DepthDownsamplingPass,
|
|
21
|
+
Effect,
|
|
22
|
+
Pass,
|
|
23
|
+
EffectAttribute,
|
|
24
|
+
} from 'postprocessing'
|
|
25
|
+
import { isWebGL2Available } from 'three-stdlib'
|
|
26
|
+
|
|
27
|
+
export const EffectComposerContext = /* @__PURE__ */ createContext<{
|
|
28
|
+
composer: EffectComposerImpl
|
|
29
|
+
normalPass: NormalPass | null
|
|
30
|
+
downSamplingPass: DepthDownsamplingPass | null
|
|
31
|
+
camera: THREE.Camera
|
|
32
|
+
scene: THREE.Scene
|
|
33
|
+
resolutionScale?: number
|
|
34
|
+
}>(null!)
|
|
35
|
+
|
|
36
|
+
export type EffectComposerProps = {
|
|
37
|
+
enabled?: boolean
|
|
38
|
+
children: JSX.Element | JSX.Element[]
|
|
39
|
+
depthBuffer?: boolean
|
|
40
|
+
/** Only used for SSGI currently, leave it disabled for everything else unless it's needed */
|
|
41
|
+
enableNormalPass?: boolean
|
|
42
|
+
stencilBuffer?: boolean
|
|
43
|
+
autoClear?: boolean
|
|
44
|
+
resolutionScale?: number
|
|
45
|
+
multisampling?: number
|
|
46
|
+
frameBufferType?: TextureDataType
|
|
47
|
+
renderPriority?: number
|
|
48
|
+
camera?: THREE.Camera
|
|
49
|
+
scene?: THREE.Scene
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const isConvolution = (effect: Effect): boolean =>
|
|
53
|
+
(effect.getAttributes() & EffectAttribute.CONVOLUTION) === EffectAttribute.CONVOLUTION
|
|
54
|
+
|
|
55
|
+
export const EffectComposer = /* @__PURE__ */ memo(
|
|
56
|
+
/* @__PURE__ */ forwardRef<EffectComposerImpl, EffectComposerProps>(
|
|
57
|
+
(
|
|
58
|
+
{
|
|
59
|
+
children,
|
|
60
|
+
camera: _camera,
|
|
61
|
+
scene: _scene,
|
|
62
|
+
resolutionScale,
|
|
63
|
+
enabled = true,
|
|
64
|
+
renderPriority = 1,
|
|
65
|
+
autoClear = true,
|
|
66
|
+
depthBuffer,
|
|
67
|
+
enableNormalPass,
|
|
68
|
+
stencilBuffer,
|
|
69
|
+
multisampling = 8,
|
|
70
|
+
frameBufferType = HalfFloatType,
|
|
71
|
+
},
|
|
72
|
+
ref
|
|
73
|
+
) => {
|
|
74
|
+
const { gl, scene: defaultScene, camera: defaultCamera, size } = useThree()
|
|
75
|
+
const scene = _scene || defaultScene
|
|
76
|
+
const camera = _camera || defaultCamera
|
|
77
|
+
|
|
78
|
+
const [composer, normalPass, downSamplingPass] = useMemo(() => {
|
|
79
|
+
const webGL2Available = isWebGL2Available()
|
|
80
|
+
// Initialize composer
|
|
81
|
+
const effectComposer = new EffectComposerImpl(gl, {
|
|
82
|
+
depthBuffer,
|
|
83
|
+
stencilBuffer,
|
|
84
|
+
multisampling: multisampling > 0 && webGL2Available ? multisampling : 0,
|
|
85
|
+
frameBufferType,
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
// Add render pass
|
|
89
|
+
effectComposer.addPass(new RenderPass(scene, camera))
|
|
90
|
+
|
|
91
|
+
// Create normal pass
|
|
92
|
+
let downSamplingPass = null
|
|
93
|
+
let normalPass = null
|
|
94
|
+
if (enableNormalPass) {
|
|
95
|
+
normalPass = new NormalPass(scene, camera)
|
|
96
|
+
normalPass.enabled = false
|
|
97
|
+
effectComposer.addPass(normalPass)
|
|
98
|
+
if (resolutionScale !== undefined && webGL2Available) {
|
|
99
|
+
downSamplingPass = new DepthDownsamplingPass({ normalBuffer: normalPass.texture, resolutionScale })
|
|
100
|
+
downSamplingPass.enabled = false
|
|
101
|
+
effectComposer.addPass(downSamplingPass)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return [effectComposer, normalPass, downSamplingPass]
|
|
106
|
+
}, [
|
|
107
|
+
camera,
|
|
108
|
+
gl,
|
|
109
|
+
depthBuffer,
|
|
110
|
+
stencilBuffer,
|
|
111
|
+
multisampling,
|
|
112
|
+
frameBufferType,
|
|
113
|
+
scene,
|
|
114
|
+
enableNormalPass,
|
|
115
|
+
resolutionScale,
|
|
116
|
+
])
|
|
117
|
+
|
|
118
|
+
useEffect(() => composer?.setSize(size.width, size.height), [composer, size])
|
|
119
|
+
useFrame(
|
|
120
|
+
(_, delta) => {
|
|
121
|
+
if (enabled) {
|
|
122
|
+
const currentAutoClear = gl.autoClear
|
|
123
|
+
gl.autoClear = autoClear
|
|
124
|
+
if (stencilBuffer && !autoClear) gl.clearStencil()
|
|
125
|
+
composer.render(delta)
|
|
126
|
+
gl.autoClear = currentAutoClear
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
enabled ? renderPriority : 0
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
const group = useRef<Group>(null!)
|
|
133
|
+
useLayoutEffect(() => {
|
|
134
|
+
const passes: Pass[] = []
|
|
135
|
+
|
|
136
|
+
// TODO: rewrite all of this with R3F v9
|
|
137
|
+
const groupInstance = (group.current as Group & { __r3f: Instance<Group> }).__r3f
|
|
138
|
+
|
|
139
|
+
if (groupInstance && composer) {
|
|
140
|
+
const children = groupInstance.children
|
|
141
|
+
|
|
142
|
+
for (let i = 0; i < children.length; i++) {
|
|
143
|
+
const child = children[i].object
|
|
144
|
+
|
|
145
|
+
if (child instanceof Effect) {
|
|
146
|
+
const effects: Effect[] = [child]
|
|
147
|
+
|
|
148
|
+
if (!isConvolution(child)) {
|
|
149
|
+
let next: unknown = null
|
|
150
|
+
while ((next = children[i + 1]?.object) instanceof Effect) {
|
|
151
|
+
if (isConvolution(next)) break
|
|
152
|
+
effects.push(next)
|
|
153
|
+
i++
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const pass = new EffectPass(camera, ...effects)
|
|
158
|
+
passes.push(pass)
|
|
159
|
+
} else if (child instanceof Pass) {
|
|
160
|
+
passes.push(child)
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
for (const pass of passes) composer?.addPass(pass)
|
|
165
|
+
|
|
166
|
+
if (normalPass) normalPass.enabled = true
|
|
167
|
+
if (downSamplingPass) downSamplingPass.enabled = true
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return () => {
|
|
171
|
+
for (const pass of passes) composer?.removePass(pass)
|
|
172
|
+
if (normalPass) normalPass.enabled = false
|
|
173
|
+
if (downSamplingPass) downSamplingPass.enabled = false
|
|
174
|
+
}
|
|
175
|
+
}, [composer, children, camera, normalPass, downSamplingPass])
|
|
176
|
+
|
|
177
|
+
// Disable tone mapping because threejs disallows tonemapping on render targets
|
|
178
|
+
useEffect(() => {
|
|
179
|
+
const currentTonemapping = gl.toneMapping
|
|
180
|
+
gl.toneMapping = NoToneMapping
|
|
181
|
+
return () => {
|
|
182
|
+
gl.toneMapping = currentTonemapping
|
|
183
|
+
}
|
|
184
|
+
}, [gl])
|
|
185
|
+
|
|
186
|
+
// Memoize state, otherwise it would trigger all consumers on every render
|
|
187
|
+
const state = useMemo(
|
|
188
|
+
() => ({ composer, normalPass, downSamplingPass, resolutionScale, camera, scene }),
|
|
189
|
+
[composer, normalPass, downSamplingPass, resolutionScale, camera, scene]
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
// Expose the composer
|
|
193
|
+
useImperativeHandle(ref, () => composer, [composer])
|
|
194
|
+
|
|
195
|
+
return (
|
|
196
|
+
<EffectComposerContext.Provider value={state}>
|
|
197
|
+
<group ref={group}>{children}</group>
|
|
198
|
+
</EffectComposerContext.Provider>
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
)
|
|
202
|
+
)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as THREE from 'three'
|
|
2
|
+
import React, { createContext, useState, useContext, useEffect, useRef, useMemo } from 'react'
|
|
3
|
+
import { type ThreeElements } from '@react-three/fiber'
|
|
4
|
+
|
|
5
|
+
export type Api = {
|
|
6
|
+
selected: THREE.Object3D[]
|
|
7
|
+
select: React.Dispatch<React.SetStateAction<THREE.Object3D[]>>
|
|
8
|
+
enabled: boolean
|
|
9
|
+
}
|
|
10
|
+
export type SelectApi = Omit<ThreeElements['group'], 'ref'> & {
|
|
11
|
+
enabled?: boolean
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const selectionContext = /* @__PURE__ */ createContext<Api | null>(null)
|
|
15
|
+
|
|
16
|
+
export function Selection({ children, enabled = true }: { enabled?: boolean; children: React.ReactNode }) {
|
|
17
|
+
const [selected, select] = useState<THREE.Object3D[]>([])
|
|
18
|
+
const value = useMemo(() => ({ selected, select, enabled }), [selected, select, enabled])
|
|
19
|
+
return <selectionContext.Provider value={value}>{children}</selectionContext.Provider>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function Select({ enabled = false, children, ...props }: SelectApi) {
|
|
23
|
+
const group = useRef<THREE.Group>(null!)
|
|
24
|
+
const api = useContext(selectionContext)
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (api && enabled) {
|
|
27
|
+
let changed = false
|
|
28
|
+
const current: THREE.Object3D[] = []
|
|
29
|
+
group.current.traverse((o) => {
|
|
30
|
+
o.type === 'Mesh' && current.push(o)
|
|
31
|
+
if (api.selected.indexOf(o) === -1) changed = true
|
|
32
|
+
})
|
|
33
|
+
if (changed) {
|
|
34
|
+
api.select((state) => [...state, ...current])
|
|
35
|
+
return () => {
|
|
36
|
+
api.select((state) => state.filter((selected) => !current.includes(selected)))
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, [enabled, children, api])
|
|
41
|
+
return (
|
|
42
|
+
<group ref={group} {...props}>
|
|
43
|
+
{children}
|
|
44
|
+
</group>
|
|
45
|
+
)
|
|
46
|
+
}
|