@react-three/postprocessing 2.0.5 → 2.1.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.
@@ -12,4 +12,6 @@ export declare const SSAO: React.ForwardRefExoticComponent<{
12
12
  radius?: number;
13
13
  scale?: number;
14
14
  bias?: number;
15
+ intensity?: number;
16
+ color?: string;
15
17
  } & React.RefAttributes<SSAOEffect>>;
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("postprocessing"),t=require("@babel/runtime/helpers/objectWithoutPropertiesLoose"),r=require("react"),n=require("three"),o=require("@babel/runtime/helpers/extends"),i=require("@babel/runtime/helpers/construct"),u=require("@react-three/fiber");function a(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=a(t),c=a(r),l=a(o),s=a(i),d=["blendFunction","opacity"],p=function(t,n){return void 0===n&&(n=e.BlendFunction.NORMAL),r.forwardRef((function(e,o){var i=e.blendFunction,u=e.opacity,a=f.default(e,d),l=r.useMemo((function(){return new t(a)}),[a]);return r.useLayoutEffect((function(){l.blendMode.blendFunction=i||n,void 0!==u&&(l.blendMode.opacity.value=u)}),[i,l.blendMode,u]),c.default.createElement("primitive",{ref:o,object:l,dispose:null})}))},m=function(e,t){var o=e[t];return r.useMemo((function(){if(o instanceof n.Vector2)return(new n.Vector2).set(o.x,o.y);if(Array.isArray(o)){var e=o[0],t=o[1];return(new n.Vector2).set(e,t)}}),[o])},v=function(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}},h=p(e.BloomEffect,e.BlendFunction.SCREEN),E=p(e.BrightnessContrastEffect),x=r.forwardRef((function(t,n){var o=m(t,"offset"),i=r.useMemo((function(){return new e.ChromaticAberrationEffect(l.default({},t,{offset:o}))}),[o,t]);return c.default.createElement("primitive",{ref:n,object:i,dispose:null})})),g=r.forwardRef((function(t,n){var o=t.blendFunction,i=void 0===o?e.BlendFunction.NORMAL:o,u=r.useMemo((function(){return new e.ColorAverageEffect(i)}),[i]);return c.default.createElement("primitive",{ref:n,object:u,dispose:null})})),b=p(e.ColorDepthEffect),w=p(e.DepthEffect),S=r.createContext(null),y=c.default.memo(r.forwardRef((function(t,n){var o=t.children,i=t.camera,a=t.scene,f=t.renderPriority,l=void 0===f?1:f,d=t.autoClear,p=void 0===d||d,m=t.depthBuffer,h=t.disableNormalPass,E=t.stencilBuffer,x=t.multisampling,g=void 0===x?8:x,b=t.frameBufferType,w=u.useThree(),y=w.gl,C=w.scene,M=w.camera,R=w.size;a=a||C,i=i||M;var L=r.useMemo((function(){var t=new e.EffectComposer(y,{depthBuffer:m,stencilBuffer:E,multisampling:v()?g:0,frameBufferType:b});t.addPass(new e.RenderPass(a,i));var r=h?null:new e.NormalPass(a,i);return r&&t.addPass(r),[t,r]}),[i,y,m,E,g,b,a,h]),A=L[0],T=L[1];r.useEffect((function(){return null==A?void 0:A.setSize(R.width,R.height)}),[A,R]),u.useFrame((function(e,t){return y.autoClear=p,void A.render(t)}),l);var B=r.useRef(null);r.useEffect((function(){var t;return B.current&&B.current.__r3f&&A&&(t=s.default(e.EffectPass,[i].concat(B.current.__r3f.objects)),A.addPass(t),t.renderToScreen=!0),function(){t&&(null==A||A.removePass(t))}}),[A,o,i]);var F=r.useMemo((function(){return{composer:A,normalPass:T,camera:i,scene:a}}),[A,T,i,a]);return r.useImperativeHandle(n,(function(){return A}),[A]),c.default.createElement(S.Provider,{value:F},c.default.createElement("group",{ref:B},o))}))),C=["target","depthTexture"],M=r.forwardRef((function(t,o){var i=t.target,u=t.depthTexture,a=f.default(t,C),l=r.useContext(S).camera,s=r.useMemo((function(){return new e.DepthOfFieldEffect(l,a)}),[l,a]);return r.useLayoutEffect((function(){if(i){var e=i instanceof n.Vector3?(new n.Vector3).set(i.x,i.y,i.z):(new n.Vector3).set(i[0],i[1],i[2]);s.target=e}u&&s.setDepthTexture(u.texture,u.packing)}),[i,u,s]),c.default.createElement("primitive",{ref:o,object:s,dispose:null})})),R=p(e.DotScreenEffect),L=["active"],A=r.forwardRef((function(t,n){var o=t.active,i=void 0===o||o,u=f.default(t,L),a=m(u,"delay"),s=m(u,"duration"),d=m(u,"strength"),p=r.useMemo((function(){return new e.GlitchEffect(l.default({},u,{delay:a,duration:s,strength:d}))}),[a,s,u,d]);return r.useLayoutEffect((function(){p.mode=i?u.mode||e.GlitchMode.SPORADIC:e.GlitchMode.DISABLED}),[i,p,u.mode]),c.default.createElement("primitive",{ref:n,object:p,dispose:null})})),T=r.forwardRef((function(t,n){var o=r.useContext(S).camera,i=r.useMemo((function(){return new e.GodRaysEffect(o,t.sun,t)}),[o,t]);return c.default.createElement("primitive",{ref:n,object:i,dispose:null})})),B=["size"],F=r.forwardRef((function(t,n){var o=t.size,i=f.default(t,B),u=r.useMemo((function(){return new e.GridEffect(i)}),[i]);return r.useLayoutEffect((function(){o&&u.setSize(o.width,o.height)}),[u,o]),c.default.createElement("primitive",{ref:n,object:u,dispose:null})})),P=p(e.HueSaturationEffect),j=p(e.NoiseEffect,e.BlendFunction.COLOR_DODGE),O=["selection","selectionLayer","blendFunction","patternTexture","edgeStrength","pulseSpeed","visibleEdgeColor","hiddenEdgeColor","width","height","kernelSize","blur","xRay"],D=r.forwardRef((function(t,n){var o=t.selection,i=void 0===o?[]:o,u=t.selectionLayer,a=void 0===u?10:u,l=t.blendFunction,s=t.patternTexture,d=t.edgeStrength,p=t.pulseSpeed,m=t.visibleEdgeColor,v=t.hiddenEdgeColor,h=t.width,E=t.height,x=t.kernelSize,g=t.blur,b=t.xRay;f.default(t,O);var w=r.useContext(S),y=w.scene,C=w.camera,M=r.useMemo((function(){return new e.OutlineEffect(y,C,{blendFunction:l,patternTexture:s,edgeStrength:d,pulseSpeed:p,visibleEdgeColor:m,hiddenEdgeColor:v,width:h,height:E,kernelSize:x,blur:g,xRay:b})}),[l,g,C,d,E,v,x,s,p,y,m,h,b]);return r.useEffect((function(){M.clearSelection(),M.setSelection(Array.isArray(i)?i.map((function(e){return e.current})):[i.current])}),[M,i]),r.useEffect((function(){M.selectionLayer=a}),[M,a]),c.default.createElement("primitive",{ref:n,object:M,dispose:null})})),G=r.forwardRef((function(t,n){var o=t.granularity,i=void 0===o?5:o,u=r.useMemo((function(){return new e.PixelationEffect(i)}),[i]);return c.default.createElement("primitive",{ref:n,object:u,dispose:null})})),z=p(e.ScanlineEffect,e.BlendFunction.OVERLAY),I=r.forwardRef((function(t,n){var o=t.selection,i=void 0===o?[]:o,u=t.selectionLayer,a=void 0===u?10:u,f=t.lights,l=void 0===f?[]:f,s=t.luminanceThreshold,d=t.luminanceSmoothing,p=t.intensity,m=t.width,v=t.height,h=t.kernelSize;0===l.length&&console.warn("SelectiveBloom requires lights to work.");var E=r.useContext(S),x=E.scene,g=E.camera,b=r.useMemo((function(){return new e.SelectiveBloomEffect(x,g,{blendFunction:e.BlendFunction.SCREEN,luminanceThreshold:s,luminanceSmoothing:d,intensity:p,width:m,height:v,kernelSize:h})}),[g,v,p,h,d,s,x,m]);return r.useEffect((function(){b.selection.set(Array.isArray(i)?i.map((function(e){return e.current})):[i.current])}),[b,i]),r.useEffect((function(){b.selection.layer=a}),[b,a]),r.useEffect((function(){return l.forEach((function(e){return function(e,t){e.current&&e.current.layers.enable(t.selection.layer)}(e,b)})),function(){return l.forEach((function(e){return function(e,t){e.current&&e.current.layers.disable(t.selection.layer)}(e,b)}))}}),[b,l,a]),c.default.createElement("primitive",{ref:n,object:b,dispose:null})})),k=p(e.SepiaEffect),N=r.forwardRef((function(t,n){var o=r.useContext(S),i=o.camera,u=o.normalPass,a=r.useMemo((function(){return null===u?(console.error("Please enable the NormalPass in the EffectComposer in order to use SSAO."),null):new e.SSAOEffect(i,u.renderTarget.texture,l.default({blendFunction:e.BlendFunction.MULTIPLY,samples:30,rings:4,distanceThreshold:1,distanceFalloff:0,rangeThreshold:.5,rangeFalloff:.1,luminanceInfluence:.9,radius:20,scale:.5,bias:.5},t))}),[i,u,t]);return c.default.createElement("primitive",{ref:n,object:a,dispose:null})})),V=r.forwardRef((function(t,n){var o=t.preset,i=void 0===o?e.SMAAPreset.HIGH:o,a=t.edgeDetectionMode,f=void 0===a?e.EdgeDetectionMode.COLOR:a,l=u.useLoader(e.SMAAImageLoader,""),d=r.useMemo((function(){return s.default(e.SMAAEffect,l.concat([i,f]))}),[l,i,f]);return c.default.createElement("primitive",{ref:n,object:d,dispose:null})})),q=["textureSrc","texture"],_=r.forwardRef((function(t,o){var i=t.textureSrc,a=t.texture,s=f.default(t,q),d=u.useLoader(n.TextureLoader,i);r.useLayoutEffect((function(){d.encoding=n.sRGBEncoding,d.wrapS=d.wrapT=n.RepeatWrapping}),[d]);var p=r.useMemo((function(){return new e.TextureEffect(l.default({},s,{texture:d||a}))}),[s,d,a]);return c.default.createElement("primitive",{ref:o,object:p,dispose:null})})),H=p(e.ToneMappingEffect),W=p(e.VignetteEffect),U=p(e.ShockWaveEffect),Y=["lut","tetrahedralInterpolation"],J=r.forwardRef((function(t,n){var o=t.lut,i=t.tetrahedralInterpolation,u=f.default(t,Y),a=r.useMemo((function(){return new e.LUTEffect(o,u)}),[o,u]);return r.useLayoutEffect((function(){o&&a.setLUT(o),i&&a.setTetrahedralInterpolationEnabled(i)}),[a,o,i]),c.default.createElement("primitive",{ref:n,object:a,dispose:null})}));exports.Bloom=h,exports.BrightnessContrast=E,exports.ChromaticAberration=x,exports.ColorAverage=g,exports.ColorDepth=b,exports.Depth=w,exports.DepthOfField=M,exports.DotScreen=R,exports.EffectComposer=y,exports.EffectComposerContext=S,exports.Glitch=A,exports.GodRays=T,exports.Grid=F,exports.HueSaturation=P,exports.LUT=J,exports.Noise=j,exports.Outline=D,exports.Pixelation=G,exports.SMAA=V,exports.SSAO=N,exports.Scanline=z,exports.SelectiveBloom=I,exports.Sepia=k,exports.ShockWave=U,exports.Texture=_,exports.ToneMapping=H,exports.Vignette=W;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("postprocessing"),t=require("@babel/runtime/helpers/objectWithoutPropertiesLoose"),r=require("react"),n=require("three"),o=require("@babel/runtime/helpers/extends"),i=require("@babel/runtime/helpers/construct"),u=require("@react-three/fiber"),a=require("three-stdlib");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=f(t),l=f(r),s=f(o),d=f(i),p=["blendFunction","opacity"],m=function(t,n){return void 0===n&&(n=e.BlendFunction.NORMAL),r.forwardRef((function(e,o){var i=e.blendFunction,u=e.opacity,a=c.default(e,p),f=r.useMemo((function(){return new t(a)}),[a]);return r.useLayoutEffect((function(){f.blendMode.blendFunction=i||n,void 0!==u&&(f.blendMode.opacity.value=u)}),[i,f.blendMode,u]),l.default.createElement("primitive",{ref:o,object:f,dispose:null})}))},h=function(e,t){var o=e[t];return r.useMemo((function(){if(o instanceof n.Vector2)return(new n.Vector2).set(o.x,o.y);if(Array.isArray(o)){var e=o[0],t=o[1];return(new n.Vector2).set(e,t)}}),[o])},v=m(e.BloomEffect,e.BlendFunction.SCREEN),E=m(e.BrightnessContrastEffect),x=r.forwardRef((function(t,n){var o=h(t,"offset"),i=r.useMemo((function(){return new e.ChromaticAberrationEffect(s.default({},t,{offset:o}))}),[o,t]);return l.default.createElement("primitive",{ref:n,object:i,dispose:null})})),b=r.forwardRef((function(t,n){var o=t.blendFunction,i=void 0===o?e.BlendFunction.NORMAL:o,u=r.useMemo((function(){return new e.ColorAverageEffect(i)}),[i]);return l.default.createElement("primitive",{ref:n,object:u,dispose:null})})),g=m(e.ColorDepthEffect),S=m(e.DepthEffect),w=r.createContext(null),y=l.default.memo(r.forwardRef((function(t,n){var o=t.children,i=t.camera,f=t.scene,c=t.renderPriority,s=void 0===c?1:c,p=t.autoClear,m=void 0===p||p,h=t.depthBuffer,v=t.disableNormalPass,E=t.stencilBuffer,x=t.multisampling,b=void 0===x?8:x,g=t.frameBufferType,S=u.useThree(),y=S.gl,M=S.scene,C=S.camera,R=S.size;f=f||M,i=i||C;var A=r.useMemo((function(){var t=new e.EffectComposer(y,{depthBuffer:h,stencilBuffer:E,multisampling:a.isWebGL2Available()?b:0,frameBufferType:g});t.addPass(new e.RenderPass(f,i));var r=v?null:new e.NormalPass(f,i);return r&&t.addPass(r),[t,r]}),[i,y,h,E,b,g,f,v]),L=A[0],T=A[1];r.useEffect((function(){return null==L?void 0:L.setSize(R.width,R.height)}),[L,R]),u.useFrame((function(e,t){return y.autoClear=m,void L.render(t)}),s);var B=r.useRef(null);r.useEffect((function(){var t;return B.current&&B.current.__r3f&&L&&(t=d.default(e.EffectPass,[i].concat(B.current.__r3f.objects)),L.addPass(t),t.renderToScreen=!0),function(){t&&(null==L||L.removePass(t))}}),[L,o,i]);var F=r.useMemo((function(){return{composer:L,normalPass:T,camera:i,scene:f}}),[L,T,i,f]);return r.useImperativeHandle(n,(function(){return L}),[L]),l.default.createElement(w.Provider,{value:F},l.default.createElement("group",{ref:B},o))}))),M=["target","depthTexture"],C=r.forwardRef((function(t,o){var i=t.target,u=t.depthTexture,a=c.default(t,M),f=r.useContext(w).camera,s=r.useMemo((function(){return new e.DepthOfFieldEffect(f,a)}),[f,a]);return r.useLayoutEffect((function(){if(i){var e=i instanceof n.Vector3?(new n.Vector3).set(i.x,i.y,i.z):(new n.Vector3).set(i[0],i[1],i[2]);s.target=e}u&&s.setDepthTexture(u.texture,u.packing)}),[i,u,s]),l.default.createElement("primitive",{ref:o,object:s,dispose:null})})),R=m(e.DotScreenEffect),A=["active"],L=r.forwardRef((function(t,n){var o=t.active,i=void 0===o||o,u=c.default(t,A),a=h(u,"delay"),f=h(u,"duration"),d=h(u,"strength"),p=r.useMemo((function(){return new e.GlitchEffect(s.default({},u,{delay:a,duration:f,strength:d}))}),[a,f,u,d]);return r.useLayoutEffect((function(){p.mode=i?u.mode||e.GlitchMode.SPORADIC:e.GlitchMode.DISABLED}),[i,p,u.mode]),l.default.createElement("primitive",{ref:n,object:p,dispose:null})})),T=r.forwardRef((function(t,n){var o=r.useContext(w).camera,i=r.useMemo((function(){return new e.GodRaysEffect(o,t.sun,t)}),[o,t]);return l.default.createElement("primitive",{ref:n,object:i,dispose:null})})),B=["size"],F=r.forwardRef((function(t,n){var o=t.size,i=c.default(t,B),u=r.useMemo((function(){return new e.GridEffect(i)}),[i]);return r.useLayoutEffect((function(){o&&u.setSize(o.width,o.height)}),[u,o]),l.default.createElement("primitive",{ref:n,object:u,dispose:null})})),P=m(e.HueSaturationEffect),j=m(e.NoiseEffect,e.BlendFunction.COLOR_DODGE),O=["selection","selectionLayer","blendFunction","patternTexture","edgeStrength","pulseSpeed","visibleEdgeColor","hiddenEdgeColor","width","height","kernelSize","blur","xRay"],D=r.forwardRef((function(t,n){var o=t.selection,i=void 0===o?[]:o,u=t.selectionLayer,a=void 0===u?10:u,f=t.blendFunction,s=t.patternTexture,d=t.edgeStrength,p=t.pulseSpeed,m=t.visibleEdgeColor,h=t.hiddenEdgeColor,v=t.width,E=t.height,x=t.kernelSize,b=t.blur,g=t.xRay;c.default(t,O);var S=r.useContext(w),y=S.scene,M=S.camera,C=r.useMemo((function(){return new e.OutlineEffect(y,M,{blendFunction:f,patternTexture:s,edgeStrength:d,pulseSpeed:p,visibleEdgeColor:m,hiddenEdgeColor:h,width:v,height:E,kernelSize:x,blur:b,xRay:g})}),[f,b,M,d,E,h,x,s,p,y,m,v,g]);return r.useEffect((function(){C.clearSelection(),C.setSelection(Array.isArray(i)?i.map((function(e){return e.current})):[i.current])}),[C,i]),r.useEffect((function(){C.selectionLayer=a}),[C,a]),l.default.createElement("primitive",{ref:n,object:C,dispose:null})})),G=r.forwardRef((function(t,n){var o=t.granularity,i=void 0===o?5:o,u=r.useMemo((function(){return new e.PixelationEffect(i)}),[i]);return l.default.createElement("primitive",{ref:n,object:u,dispose:null})})),z=m(e.ScanlineEffect,e.BlendFunction.OVERLAY),I=r.forwardRef((function(t,n){var o=t.selection,i=void 0===o?[]:o,u=t.selectionLayer,a=void 0===u?10:u,f=t.lights,c=void 0===f?[]:f,s=t.luminanceThreshold,d=t.luminanceSmoothing,p=t.intensity,m=t.width,h=t.height,v=t.kernelSize;0===c.length&&console.warn("SelectiveBloom requires lights to work.");var E=r.useContext(w),x=E.scene,b=E.camera,g=r.useMemo((function(){return new e.SelectiveBloomEffect(x,b,{blendFunction:e.BlendFunction.SCREEN,luminanceThreshold:s,luminanceSmoothing:d,intensity:p,width:m,height:h,kernelSize:v})}),[b,h,p,v,d,s,x,m]);return r.useEffect((function(){g.selection.set(Array.isArray(i)?i.map((function(e){return e.current})):[i.current])}),[g,i]),r.useEffect((function(){g.selection.layer=a}),[g,a]),r.useEffect((function(){return c.forEach((function(e){return function(e,t){e.current&&e.current.layers.enable(t.selection.layer)}(e,g)})),function(){return c.forEach((function(e){return function(e,t){e.current&&e.current.layers.disable(t.selection.layer)}(e,g)}))}}),[g,c,a]),l.default.createElement("primitive",{ref:n,object:g,dispose:null})})),k=m(e.SepiaEffect),q=r.forwardRef((function(t,n){var o=r.useContext(w),i=o.camera,u=o.normalPass,a=r.useMemo((function(){return null===u?(console.error("Please enable the NormalPass in the EffectComposer in order to use SSAO."),null):new e.SSAOEffect(i,u.renderTarget.texture,s.default({blendFunction:e.BlendFunction.MULTIPLY,samples:30,rings:4,distanceThreshold:1,distanceFalloff:0,rangeThreshold:.5,rangeFalloff:.1,luminanceInfluence:.9,radius:20,scale:.5,bias:.5,intensity:1,color:null},t))}),[i,u,t]);return l.default.createElement("primitive",{ref:n,object:a,dispose:null})})),N=r.forwardRef((function(t,n){var o=t.preset,i=void 0===o?e.SMAAPreset.HIGH:o,a=t.edgeDetectionMode,f=void 0===a?e.EdgeDetectionMode.COLOR:a,c=u.useLoader(e.SMAAImageLoader,""),s=r.useMemo((function(){return d.default(e.SMAAEffect,c.concat([i,f]))}),[c,i,f]);return l.default.createElement("primitive",{ref:n,object:s,dispose:null})})),V=["textureSrc","texture"],_=r.forwardRef((function(t,o){var i=t.textureSrc,a=t.texture,f=c.default(t,V),d=u.useLoader(n.TextureLoader,i);r.useLayoutEffect((function(){d.encoding=n.sRGBEncoding,d.wrapS=d.wrapT=n.RepeatWrapping}),[d]);var p=r.useMemo((function(){return new e.TextureEffect(s.default({},f,{texture:d||a}))}),[f,d,a]);return l.default.createElement("primitive",{ref:o,object:p,dispose:null})})),H=m(e.ToneMappingEffect),W=m(e.VignetteEffect),U=m(e.ShockWaveEffect),Y=["lut","tetrahedralInterpolation"],J=r.forwardRef((function(t,n){var o=t.lut,i=t.tetrahedralInterpolation,u=c.default(t,Y),a=r.useMemo((function(){return new e.LUTEffect(o,u)}),[o,u]);return r.useLayoutEffect((function(){o&&a.setLUT(o),i&&a.setTetrahedralInterpolationEnabled(i)}),[a,o,i]),l.default.createElement("primitive",{ref:n,object:a,dispose:null})}));exports.Bloom=v,exports.BrightnessContrast=E,exports.ChromaticAberration=x,exports.ColorAverage=b,exports.ColorDepth=g,exports.Depth=S,exports.DepthOfField=C,exports.DotScreen=R,exports.EffectComposer=y,exports.EffectComposerContext=w,exports.Glitch=L,exports.GodRays=T,exports.Grid=F,exports.HueSaturation=P,exports.LUT=J,exports.Noise=j,exports.Outline=D,exports.Pixelation=G,exports.SMAA=N,exports.SSAO=q,exports.Scanline=z,exports.SelectiveBloom=I,exports.Sepia=k,exports.ShockWave=U,exports.Texture=_,exports.ToneMapping=H,exports.Vignette=W;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{BlendFunction as e,BloomEffect as t,BrightnessContrastEffect as n,ChromaticAberrationEffect as r,ColorAverageEffect as i,ColorDepthEffect as o,DepthEffect as l,EffectComposer as c,RenderPass as s,NormalPass as a,EffectPass as u,DepthOfFieldEffect as d,DotScreenEffect as m,GlitchEffect as f,GlitchMode as p,GodRaysEffect as h,GridEffect as g,HueSaturationEffect as b,NoiseEffect as w,OutlineEffect as E,PixelationEffect as y,ScanlineEffect as v,SelectiveBloomEffect as S,SepiaEffect as x,SSAOEffect as T,SMAAPreset as j,EdgeDetectionMode as C,SMAAImageLoader as L,SMAAEffect as P,TextureEffect as A,ToneMappingEffect as R,VignetteEffect as O,ShockWaveEffect as z,LUTEffect as F}from"postprocessing";import B,{forwardRef as D,useMemo as I,useLayoutEffect as M,createContext as k,useEffect as N,useRef as _,useImperativeHandle as G,useContext as H}from"react";import{Vector2 as U,Vector3 as Y,TextureLoader as q,sRGBEncoding as V,RepeatWrapping as W}from"three";import{useThree as J,useFrame as K,useLoader as Q}from"@react-three/fiber";const X=(t,n=e.NORMAL)=>D((function({blendFunction:e,opacity:r,...i},o){const l=I((()=>new t(i)),[i]);return M((()=>{l.blendMode.blendFunction=e||n,void 0!==r&&(l.blendMode.opacity.value=r)}),[e,l.blendMode,r]),B.createElement("primitive",{ref:o,object:l,dispose:null})})),Z=(e,t)=>{const n=e[t];return I((()=>{if(n instanceof U)return(new U).set(n.x,n.y);if(Array.isArray(n)){const[e,t]=n;return(new U).set(e,t)}}),[n])},$=()=>{try{const e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}},ee=X(t,e.SCREEN),te=X(n),ne=D((function(e,t){const n=Z(e,"offset"),i=I((()=>new r({...e,offset:n})),[n,e]);return B.createElement("primitive",{ref:t,object:i,dispose:null})})),re=D((function({blendFunction:t=e.NORMAL},n){const r=I((()=>new i(t)),[t]);return B.createElement("primitive",{ref:n,object:r,dispose:null})})),ie=X(o),oe=X(l),le=k(null),ce=B.memo(D((({children:e,camera:t,scene:n,renderPriority:r=1,autoClear:i=!0,depthBuffer:o,disableNormalPass:l,stencilBuffer:d,multisampling:m=8,frameBufferType:f},p)=>{const{gl:h,scene:g,camera:b,size:w}=J();n=n||g,t=t||b;const[E,y]=I((()=>{const e=new c(h,{depthBuffer:o,stencilBuffer:d,multisampling:$()?m:0,frameBufferType:f});e.addPass(new s(n,t));const r=l?null:new a(n,t);return r&&e.addPass(r),[e,r]}),[t,h,o,d,m,f,n,l]);N((()=>null==E?void 0:E.setSize(w.width,w.height)),[E,w]),K(((e,t)=>(h.autoClear=i,void E.render(t))),r);const v=_(null);N((()=>{let e;return v.current&&v.current.__r3f&&E&&(e=new u(t,...v.current.__r3f.objects),E.addPass(e),e.renderToScreen=!0),()=>{e&&(null==E||E.removePass(e))}}),[E,e,t]);const S=I((()=>({composer:E,normalPass:y,camera:t,scene:n})),[E,y,t,n]);return G(p,(()=>E),[E]),B.createElement(le.Provider,{value:S},B.createElement("group",{ref:v},e))}))),se=D((function({target:e,depthTexture:t,...n},r){const{camera:i}=H(le),o=I((()=>new d(i,n)),[i,n]);return M((()=>{if(e){const t=e instanceof Y?(new Y).set(e.x,e.y,e.z):(new Y).set(e[0],e[1],e[2]);o.target=t}t&&o.setDepthTexture(t.texture,t.packing)}),[e,t,o]),B.createElement("primitive",{ref:r,object:o,dispose:null})})),ae=X(m),ue=D((function({active:e=!0,...t},n){const r=Z(t,"delay"),i=Z(t,"duration"),o=Z(t,"strength"),l=I((()=>new f({...t,delay:r,duration:i,strength:o})),[r,i,t,o]);return M((()=>{l.mode=e?t.mode||p.SPORADIC:p.DISABLED}),[e,l,t.mode]),B.createElement("primitive",{ref:n,object:l,dispose:null})})),de=D((function(e,t){const{camera:n}=H(le),r=I((()=>new h(n,e.sun,e)),[n,e]);return B.createElement("primitive",{ref:t,object:r,dispose:null})})),me=D((function({size:e,...t},n){const r=I((()=>new g(t)),[t]);return M((()=>{e&&r.setSize(e.width,e.height)}),[r,e]),B.createElement("primitive",{ref:n,object:r,dispose:null})})),fe=X(b),pe=X(w,e.COLOR_DODGE),he=D((function({selection:e=[],selectionLayer:t=10,blendFunction:n,patternTexture:r,edgeStrength:i,pulseSpeed:o,visibleEdgeColor:l,hiddenEdgeColor:c,width:s,height:a,kernelSize:u,blur:d,xRay:m,...f},p){const{scene:h,camera:g}=H(le),b=I((()=>new E(h,g,{blendFunction:n,patternTexture:r,edgeStrength:i,pulseSpeed:o,visibleEdgeColor:l,hiddenEdgeColor:c,width:s,height:a,kernelSize:u,blur:d,xRay:m})),[n,d,g,i,a,c,u,r,o,h,l,s,m]);return N((()=>{b.clearSelection(),b.setSelection(Array.isArray(e)?e.map((e=>e.current)):[e.current])}),[b,e]),N((()=>{b.selectionLayer=t}),[b,t]),B.createElement("primitive",{ref:p,object:b,dispose:null})})),ge=D((function({granularity:e=5},t){const n=I((()=>new y(e)),[e]);return B.createElement("primitive",{ref:t,object:n,dispose:null})})),be=X(v,e.OVERLAY),we=D((function({selection:t=[],selectionLayer:n=10,lights:r=[],luminanceThreshold:i,luminanceSmoothing:o,intensity:l,width:c,height:s,kernelSize:a},u){0===r.length&&console.warn("SelectiveBloom requires lights to work.");const{scene:d,camera:m}=H(le),f=I((()=>new S(d,m,{blendFunction:e.SCREEN,luminanceThreshold:i,luminanceSmoothing:o,intensity:l,width:c,height:s,kernelSize:a})),[m,s,l,a,o,i,d,c]);return N((()=>{f.selection.set(Array.isArray(t)?t.map((e=>e.current)):[t.current])}),[f,t]),N((()=>{f.selection.layer=n}),[f,n]),N((()=>(r.forEach((e=>((e,t)=>{e.current&&e.current.layers.enable(t.selection.layer)})(e,f))),()=>r.forEach((e=>((e,t)=>{e.current&&e.current.layers.disable(t.selection.layer)})(e,f))))),[f,r,n]),B.createElement("primitive",{ref:u,object:f,dispose:null})})),Ee=X(x),ye=D((function(t,n){const{camera:r,normalPass:i}=H(le),o=I((()=>null===i?(console.error("Please enable the NormalPass in the EffectComposer in order to use SSAO."),null):new T(r,i.renderTarget.texture,{blendFunction:e.MULTIPLY,samples:30,rings:4,distanceThreshold:1,distanceFalloff:0,rangeThreshold:.5,rangeFalloff:.1,luminanceInfluence:.9,radius:20,scale:.5,bias:.5,...t})),[r,i,t]);return B.createElement("primitive",{ref:n,object:o,dispose:null})})),ve=D((function({preset:e=j.HIGH,edgeDetectionMode:t=C.COLOR},n){const r=Q(L,""),i=I((()=>new P(...r,e,t)),[r,e,t]);return B.createElement("primitive",{ref:n,object:i,dispose:null})})),Se=D((function({textureSrc:e,texture:t,...n},r){const i=Q(q,e);M((()=>{i.encoding=V,i.wrapS=i.wrapT=W}),[i]);const o=I((()=>new A({...n,texture:i||t})),[n,i,t]);return B.createElement("primitive",{ref:r,object:o,dispose:null})})),xe=X(R),Te=X(O),je=X(z),Ce=D((function({lut:e,tetrahedralInterpolation:t,...n},r){const i=I((()=>new F(e,n)),[e,n]);return M((()=>{e&&i.setLUT(e),t&&i.setTetrahedralInterpolationEnabled(t)}),[i,e,t]),B.createElement("primitive",{ref:r,object:i,dispose:null})}));export{ee as Bloom,te as BrightnessContrast,ne as ChromaticAberration,re as ColorAverage,ie as ColorDepth,oe as Depth,se as DepthOfField,ae as DotScreen,ce as EffectComposer,le as EffectComposerContext,ue as Glitch,de as GodRays,me as Grid,fe as HueSaturation,Ce as LUT,pe as Noise,he as Outline,ge as Pixelation,ve as SMAA,ye as SSAO,be as Scanline,we as SelectiveBloom,Ee as Sepia,je as ShockWave,Se as Texture,xe as ToneMapping,Te as Vignette};
1
+ import{BlendFunction as e,BloomEffect as t,BrightnessContrastEffect as n,ChromaticAberrationEffect as r,ColorAverageEffect as i,ColorDepthEffect as o,DepthEffect as l,EffectComposer as s,RenderPass as c,NormalPass as a,EffectPass as u,DepthOfFieldEffect as d,DotScreenEffect as m,GlitchEffect as f,GlitchMode as p,GodRaysEffect as h,GridEffect as b,HueSaturationEffect as g,NoiseEffect as w,OutlineEffect as E,PixelationEffect as y,ScanlineEffect as v,SelectiveBloomEffect as S,SepiaEffect as T,SSAOEffect as j,SMAAPreset as x,EdgeDetectionMode as C,SMAAImageLoader as P,SMAAEffect as A,TextureEffect as L,ToneMappingEffect as O,VignetteEffect as R,ShockWaveEffect as z,LUTEffect as F}from"postprocessing";import B,{forwardRef as D,useMemo as I,useLayoutEffect as M,createContext as k,useEffect as N,useRef as _,useImperativeHandle as G,useContext as H}from"react";import{Vector2 as U,Vector3 as Y,TextureLoader as q,sRGBEncoding as V,RepeatWrapping as J}from"three";import{useThree as K,useFrame as Q,useLoader as W}from"@react-three/fiber";import{isWebGL2Available as X}from"three-stdlib";const Z=(t,n=e.NORMAL)=>D((function({blendFunction:e,opacity:r,...i},o){const l=I((()=>new t(i)),[i]);return M((()=>{l.blendMode.blendFunction=e||n,void 0!==r&&(l.blendMode.opacity.value=r)}),[e,l.blendMode,r]),B.createElement("primitive",{ref:o,object:l,dispose:null})})),$=(e,t)=>{const n=e[t];return I((()=>{if(n instanceof U)return(new U).set(n.x,n.y);if(Array.isArray(n)){const[e,t]=n;return(new U).set(e,t)}}),[n])},ee=Z(t,e.SCREEN),te=Z(n),ne=D((function(e,t){const n=$(e,"offset"),i=I((()=>new r({...e,offset:n})),[n,e]);return B.createElement("primitive",{ref:t,object:i,dispose:null})})),re=D((function({blendFunction:t=e.NORMAL},n){const r=I((()=>new i(t)),[t]);return B.createElement("primitive",{ref:n,object:r,dispose:null})})),ie=Z(o),oe=Z(l),le=k(null),se=B.memo(D((({children:e,camera:t,scene:n,renderPriority:r=1,autoClear:i=!0,depthBuffer:o,disableNormalPass:l,stencilBuffer:d,multisampling:m=8,frameBufferType:f},p)=>{const{gl:h,scene:b,camera:g,size:w}=K();n=n||b,t=t||g;const[E,y]=I((()=>{const e=new s(h,{depthBuffer:o,stencilBuffer:d,multisampling:X()?m:0,frameBufferType:f});e.addPass(new c(n,t));const r=l?null:new a(n,t);return r&&e.addPass(r),[e,r]}),[t,h,o,d,m,f,n,l]);N((()=>null==E?void 0:E.setSize(w.width,w.height)),[E,w]),Q(((e,t)=>(h.autoClear=i,void E.render(t))),r);const v=_(null);N((()=>{let e;return v.current&&v.current.__r3f&&E&&(e=new u(t,...v.current.__r3f.objects),E.addPass(e),e.renderToScreen=!0),()=>{e&&(null==E||E.removePass(e))}}),[E,e,t]);const S=I((()=>({composer:E,normalPass:y,camera:t,scene:n})),[E,y,t,n]);return G(p,(()=>E),[E]),B.createElement(le.Provider,{value:S},B.createElement("group",{ref:v},e))}))),ce=D((function({target:e,depthTexture:t,...n},r){const{camera:i}=H(le),o=I((()=>new d(i,n)),[i,n]);return M((()=>{if(e){const t=e instanceof Y?(new Y).set(e.x,e.y,e.z):(new Y).set(e[0],e[1],e[2]);o.target=t}t&&o.setDepthTexture(t.texture,t.packing)}),[e,t,o]),B.createElement("primitive",{ref:r,object:o,dispose:null})})),ae=Z(m),ue=D((function({active:e=!0,...t},n){const r=$(t,"delay"),i=$(t,"duration"),o=$(t,"strength"),l=I((()=>new f({...t,delay:r,duration:i,strength:o})),[r,i,t,o]);return M((()=>{l.mode=e?t.mode||p.SPORADIC:p.DISABLED}),[e,l,t.mode]),B.createElement("primitive",{ref:n,object:l,dispose:null})})),de=D((function(e,t){const{camera:n}=H(le),r=I((()=>new h(n,e.sun,e)),[n,e]);return B.createElement("primitive",{ref:t,object:r,dispose:null})})),me=D((function({size:e,...t},n){const r=I((()=>new b(t)),[t]);return M((()=>{e&&r.setSize(e.width,e.height)}),[r,e]),B.createElement("primitive",{ref:n,object:r,dispose:null})})),fe=Z(g),pe=Z(w,e.COLOR_DODGE),he=D((function({selection:e=[],selectionLayer:t=10,blendFunction:n,patternTexture:r,edgeStrength:i,pulseSpeed:o,visibleEdgeColor:l,hiddenEdgeColor:s,width:c,height:a,kernelSize:u,blur:d,xRay:m,...f},p){const{scene:h,camera:b}=H(le),g=I((()=>new E(h,b,{blendFunction:n,patternTexture:r,edgeStrength:i,pulseSpeed:o,visibleEdgeColor:l,hiddenEdgeColor:s,width:c,height:a,kernelSize:u,blur:d,xRay:m})),[n,d,b,i,a,s,u,r,o,h,l,c,m]);return N((()=>{g.clearSelection(),g.setSelection(Array.isArray(e)?e.map((e=>e.current)):[e.current])}),[g,e]),N((()=>{g.selectionLayer=t}),[g,t]),B.createElement("primitive",{ref:p,object:g,dispose:null})})),be=D((function({granularity:e=5},t){const n=I((()=>new y(e)),[e]);return B.createElement("primitive",{ref:t,object:n,dispose:null})})),ge=Z(v,e.OVERLAY),we=D((function({selection:t=[],selectionLayer:n=10,lights:r=[],luminanceThreshold:i,luminanceSmoothing:o,intensity:l,width:s,height:c,kernelSize:a},u){0===r.length&&console.warn("SelectiveBloom requires lights to work.");const{scene:d,camera:m}=H(le),f=I((()=>new S(d,m,{blendFunction:e.SCREEN,luminanceThreshold:i,luminanceSmoothing:o,intensity:l,width:s,height:c,kernelSize:a})),[m,c,l,a,o,i,d,s]);return N((()=>{f.selection.set(Array.isArray(t)?t.map((e=>e.current)):[t.current])}),[f,t]),N((()=>{f.selection.layer=n}),[f,n]),N((()=>(r.forEach((e=>((e,t)=>{e.current&&e.current.layers.enable(t.selection.layer)})(e,f))),()=>r.forEach((e=>((e,t)=>{e.current&&e.current.layers.disable(t.selection.layer)})(e,f))))),[f,r,n]),B.createElement("primitive",{ref:u,object:f,dispose:null})})),Ee=Z(T),ye=D((function(t,n){const{camera:r,normalPass:i}=H(le),o=I((()=>null===i?(console.error("Please enable the NormalPass in the EffectComposer in order to use SSAO."),null):new j(r,i.renderTarget.texture,{blendFunction:e.MULTIPLY,samples:30,rings:4,distanceThreshold:1,distanceFalloff:0,rangeThreshold:.5,rangeFalloff:.1,luminanceInfluence:.9,radius:20,scale:.5,bias:.5,intensity:1,color:null,...t})),[r,i,t]);return B.createElement("primitive",{ref:n,object:o,dispose:null})})),ve=D((function({preset:e=x.HIGH,edgeDetectionMode:t=C.COLOR},n){const r=W(P,""),i=I((()=>new A(...r,e,t)),[r,e,t]);return B.createElement("primitive",{ref:n,object:i,dispose:null})})),Se=D((function({textureSrc:e,texture:t,...n},r){const i=W(q,e);M((()=>{i.encoding=V,i.wrapS=i.wrapT=J}),[i]);const o=I((()=>new L({...n,texture:i||t})),[n,i,t]);return B.createElement("primitive",{ref:r,object:o,dispose:null})})),Te=Z(O),je=Z(R),xe=Z(z),Ce=D((function({lut:e,tetrahedralInterpolation:t,...n},r){const i=I((()=>new F(e,n)),[e,n]);return M((()=>{e&&i.setLUT(e),t&&i.setTetrahedralInterpolationEnabled(t)}),[i,e,t]),B.createElement("primitive",{ref:r,object:i,dispose:null})}));export{ee as Bloom,te as BrightnessContrast,ne as ChromaticAberration,re as ColorAverage,ie as ColorDepth,oe as Depth,ce as DepthOfField,ae as DotScreen,se as EffectComposer,le as EffectComposerContext,ue as Glitch,de as GodRays,me as Grid,fe as HueSaturation,Ce as LUT,pe as Noise,he as Outline,be as Pixelation,ve as SMAA,ye as SSAO,ge as Scanline,we as SelectiveBloom,Ee as Sepia,xe as ShockWave,Se as Texture,Te as ToneMapping,je as Vignette};
package/dist/util.d.ts CHANGED
@@ -6,4 +6,3 @@ export declare const wrapEffect: <T extends new (...args: any[]) => Effect>(effe
6
6
  opacity: number;
7
7
  }>> & React.RefAttributes<T>>;
8
8
  export declare const useVector2: (props: any, key: string) => Vector2;
9
- export declare const isWebGL2Available: () => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-three/postprocessing",
3
- "version": "2.0.5",
3
+ "version": "2.1.0",
4
4
  "description": "postprocessing wrapper for React and @react-three/fiber",
5
5
  "keywords": [
6
6
  "postprocessing",
@@ -39,7 +39,8 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "postprocessing": "^6.22.2",
42
- "react-merge-refs": "^1.1.0"
42
+ "react-merge-refs": "^1.1.0",
43
+ "three-stdlib": "^2.6.2"
43
44
  },
44
45
  "devDependencies": {
45
46
  "@babel/core": "^7.14.6",