用途:为 React Three Fiber(R3F)场景叠加后期处理效果,把平实的渲染提升为更有质感的画面,同时兼顾性能预算。
主要能力:通过 EffectComposer 组合多种后期效果,包括 Bloom 泛光、DepthOfField 景深、Vignette 暗角、Noise 噪点、ChromaticAberration 色差、ToneMapping 色调映射、SMAA 抗锯齿等;支持用 leva 调节参数后再固化数值;支持编写自定义效果(基于 postprocessing 的 Effect/wrapEffect 包装片元着色器)。
使用方式:先安装依赖 npm i @react-three/postprocessing postprocessing;在 <Canvas> 内、场景内容之后加入 EffectComposer 及各效果组件,从 @react-three/postprocessing 导入效果组件、从 postprocessing 导入 BlendFunction、ToneMappingMode 等。调参要点:Bloom 提高 luminanceThreshold 让亮部发光,mipmapBlur 提供柔和低成本辉光,用自发光材质或大于 1 的值触发泛光;DOF 的 focusDistance 为 0–1 归一化值,可动画实现移焦,但开销大,移动端建议关闭;色调映射推荐 ACES_FILMIC,并一致设置 gl 的 toneMapping;噪点与色差保持克制。
适用场景:需要为 3D 网页添加电影感或高级质感的 R3F 项目,如产品展示、视觉页面。
限制与性能:每个 pass 都是全屏填充开销,中低端设备应条件性减少效果(如去掉 DOF 与色差,保留 Bloom 与色调映射);除非效果需要法线(SSAO/SSR),否则使用 disableNormalPass;可考虑半分辨率效果与 PerformanceMonitor 动态缩放;添加后需复查 FPS,低于目标时应转交 webgl-perf-auditor。完成后需确认效果开启下仍达目标帧率,并尽量展示前后对比、报告启用的 pass 及其开销。