Skip to content

chore(deps): update dependency @react-three/postprocessing to v3.1.1 - #262

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/react-three-postprocessing-3.x-lockfile
Open

chore(deps): update dependency @react-three/postprocessing to v3.1.1#262
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/react-three-postprocessing-3.x-lockfile

Conversation

@renovate

@renovate renovate Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@react-three/postprocessing 3.0.43.1.1 age confidence

Release Notes

pmndrs/react-postprocessing (@​react-three/postprocessing)

v3.1.1

Compare Source

Patch release focused purely on compatibility - no behavior changes.
It loosens peerDependencies that were accidentally over-constrained in 3.1.0.

What's Changed

Full Changelog: pmndrs/react-postprocessing@v3.1.0...v3.1.1

v3.1.0

Compare Source

This release is an internal rewrite of how effects apply prop changes - most of it is invisible unless you hit one of the bugs it fixes, but it puts every effect on the same reliable, live-updating foundation instead of each one reconstructing itself in ad hoc ways.

Added

  • EffectGroup: new component that groups effects into a single EffectPass with its own cheap enabled toggle, backed by a shared trailing CopyPass so disabling the last pass in a chain doesn't blank the canvas.
  • DepthPicking, useDepthPicking: new component + hook for reading world-space positions off the depth buffer, extracted from <Autofocus> into a reusable, standalone primitive. <DepthPicking> just mounts the vanilla DepthPickingPass and exposes readDepth via ref - renders nothing, updates nothing automatically. useDepthPicking turns a screen position into a world-space point on demand, auto-detecting the composer's own camera when used inside its <EffectComposer>, with an explicit camera override for calling it from outside that tree. <Autofocus> is now built on both internally, same external behavior.
  • EffectComposer: new autoRenderToScreen?: boolean prop (default true) - construction-time option, same treatment as depthBuffer/multisampling.
  • EffectComposer: new renderPass?: (scene, camera) => Pass prop - lets consumers supply their own scene/camera render pass
  • EffectComposer: new mergeMode?: 'auto' | 'all' | 'none' prop (default 'auto'). 'auto' merges effects into as few EffectPasses as possible while keeping at most one convolution effect per pass - matching what postprocessing itself actually allows. This is strictly better than the old unconditional "any convolution effect gets fully isolated" behavior. 'all' drops that safety limit entirely. 'none' gives every effect its own pass.
  • createEffectComponent: the internal effect-wrapping factory is now part of the public API, for wrapping your own zero-arg-constructible postprocessing effect classes the same way this library's own simple effects do.
  • N8AO: new enabled prop, wired into the same shared trailing-CopyPass safety net as EffectGroup (N8AO isn't a mergeable postprocessing Effect, so it needed its own toggle rather than going through EffectGroup directly).
  • Grid, Glitch: opacity now works - these never went through wrapEffect (the only place that handled it) before, so it was silently inert regardless of what the (missing) types suggested.
  • Outline, GodRays: warn in the console when mounted without <EffectComposer autoClear={false}> - both render an internal extra pass that silently produces wrong output (outlines don't render at all; GodRays occlusion looks wrong) without it.
  • Outline: visibleEdgeColor/hiddenEdgeColor now typed as ColorRepresentation (number | string | Color) instead of just number - the runtime already wrapped values in new Color(value), so string colors ("red", "#ff0000", etc.) always worked, the type just didn't say so.
  • LensFlare, ShockWave: lensPosition/position now accept ReactThreeFiber.Vector3 (a tuple or a single number, not just a Vector3 instance), matching how position props work everywhere else in the r3f ecosystem.
Changed
  • Effects whose postprocessing class can be constructed with zero arguments are now built on createEffectComponent: live props update the existing effect instance in place instead of reconstructing it on every change, and a ref now points to one stable instance across prop updates instead of a new one every render.
  • Effects that need real constructor args and can't use createEffectComponent similarly apply live props through useLiveDefaults instead of reconstructing the whole effect on every change.
  • EffectComposer: pass rebuild lifecycle rewritten - passes are now only rebuilt when the resolved effect/pass list actually changed, not on every unrelated React render.
  • SSAO: resolutionScale now falls back to the parent <EffectComposer>'s own resolutionScale prop when not set directly on <SSAO>, instead of always defaulting straight to 1.
  • Build: dist is no longer minified - the consumer's own bundler minifies anyway in a real production build, and this keeps stack traces/devtools readable when debugging into the library.
Fixed
  • SSAO: almost none of its props updated live on change - useMemo only depended on [camera, downSamplingPass, normalPass, resolutionScale], and props were never re-applied to the effect any other way. Changing color, intensity, radius, samples, worldProximityThreshold/worldProximityFalloff, or anything else did nothing until one of those four values happened to change too. Now applies live via useLiveDefaults.
  • DepthOfField: changing depthTexture reconstructed the whole effect - render targets and passes included - despite DepthOfFieldEffect.setDepthTexture() existing specifically to update an existing instance in place. Now applied live.
  • N8AO: config/quality changes mutate effect.configuration directly (a plain object outside r3f's reconciler) without ever calling invalidate(), so changes didn't repaint under <Canvas frameloop="demand">.
  • EffectComposer: sized itself off r3f's size, which drei's <View> overrides per-portal only on View's own re-renders - not kept live - so a composer nested in a <View> could go arbitrarily long without picking up a resize (in practice: staying offset/wrong-sized indefinitely). Now reads gl.getSize() directly instead, which isn't portal-scoped and can't be missed regardless of whether the component itself ever re-renders.
Removed
  • Pixelation, ShockWave: blendFunction/opacity props removed entirely. Both are mainUv-only shaders (no mainImage, verified against postprocessing's own pass-composition logic) - there's no color output to blend, so the props never did anything; they're gone rather than wired up. If you were passing either to <Pixelation>/<ShockWave>, remove them - they were already silent no-ops.

What's Changed

New Contributors

Full Changelog: pmndrs/react-postprocessing@v3.0.5...v3.1.0

v3.0.5

Compare Source

Fixed

  • EffectComposer: the composer was created in useMemo, which React may discard without running cleanup. Creation moved into a proper effect lifecycle instead. (#​353) by @​kvvasuu
  • EffectComposer: renderer.autoClear and renderer.toneMapping were force-set and never restored. They're now restored on unmount. (#​358) by @​kvvasuu
  • ChromaticAberration: moved off the generic wrapEffect onto a manual construct/dispose pattern so the tuple offset prop is correctly coerced. (#​355) by @​kvvasuu
  • Selection: fixed an infinite update loop caused by Select's effect depending on its own write; it now diffs newly-claimed/released objects against what it previously claimed instead of clearing and re-adding unconditionally. (#​359) by @​kvvasuu
  • Selection: object detection now covers Mesh/Line/Points subclasses (isMesh/isLine/isPoints), not just an exact type === 'Mesh' check - custom mesh subclasses are now selectable. (#​359) by @​kvvasuu
  • SelectiveBloom: light refs that haven't attached yet are now resolved and filtered instead of crashing addLight/removeLight on a null object. (#​360) by @​kvvasuu
  • Outline, SelectiveBloom: selection sync unified behind a shared useSelectionSync hook, which also stops the selection effect from re-running on every render (it previously depended on an unstable spread props object). (#​360) by @​kvvasuu
  • Outline: patternScale, multisampling, resolutionScale, resolutionX, resolutionY are now wired up as live constructor options. (#​360) by @​kvvasuu
  • SelectiveBloom: radius, levels, resolutionScale, resolutionX, resolutionY are now wired up as live constructor options. (#​360) by @​kvvasuu
  • All <primitive>-based effects now dispose themselves (new useDispose hook). (#​355) by @​kvvasuu
  • Corrected npm package metadata (added bugs/homepage fields). (#​347) by @​2lll5

Changed

  • wrapEffect split out of util.tsx into its own module; Effect components dropped forwardRef in favor of ref as a plain, optional prop. (#​352) by @​kvvasuu
  • @react-three/fiber peer floor raised to >=9.7.0. (#​353) by @​kvvasuu
  • postprocessing moved from a pinned dependencies entry to a peerDependencies range (^6.36.0); three peer floor raised to >= 0.182.0. (#​351) by @​kvvasuu
  • Migrated ESLint config to flat config; updated dependencies. (#​351) by @​kvvasuu
  • Updated tone mapping docs (examples and props table). (#​345) by @​vis-prime

Added

  • Smoke test coverage for every effect component, plus new regression tests for Selection, Outline, SelectiveBloom, ChromaticAberration, EffectComposer, and wrapEffect. (#​355, #​356, #​359, #​360) by @​kvvasuu
  • GitHub Action for publishing releases to npm from master, by @​krispya

New Contributors

Full Changelog: pmndrs/react-postprocessing@v3.0.4...v3.0.5


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@nicolasfara
nicolasfara force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from a3fcdf2 to 93e885a Compare August 27, 2026 00:58
@renovate
renovate Bot force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from 93e885a to 7ae52d9 Compare August 27, 2026 00:59
@nicolasfara
nicolasfara force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from 7ae52d9 to fdcb3c0 Compare August 27, 2026 01:01
@renovate
renovate Bot force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from fdcb3c0 to 68e4a8b Compare August 27, 2026 01:02
@nicolasfara
nicolasfara force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from 68e4a8b to 6782f01 Compare August 27, 2026 21:39
@renovate
renovate Bot force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from 6782f01 to e2cf87a Compare August 27, 2026 21:40
@nicolasfara
nicolasfara force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from e2cf87a to e97145e Compare August 29, 2026 08:41
@renovate
renovate Bot force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch 2 times, most recently from 4fb4c00 to f64a5cf Compare August 30, 2026 18:45
@renovate renovate Bot changed the title chore(deps): update dependency @react-three/postprocessing to v3.1.0 chore(deps): update dependency @react-three/postprocessing to v3.1.1 Aug 30, 2026
@renovate
renovate Bot force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from f64a5cf to b40863a Compare August 30, 2026 18:50
@nicolasfara
nicolasfara force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from b40863a to 83c7dc8 Compare August 31, 2026 06:13
@renovate
renovate Bot force-pushed the renovate/react-three-postprocessing-3.x-lockfile branch from 83c7dc8 to 390f8d6 Compare August 31, 2026 06:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant