用途:为 Three.js 场景搭建有意的屏幕空间后处理管线,例如添加泛光、抗锯齿、环境光遮蔽、景深、描边或调色,并排查通道顺序、重复渲染、模糊、分辨率错误、效果缺失、通道开销过高与销毁泄漏等问题。场景/相机基础设置、网格与材质着色器、纹理与渲染目标语义分别交由 threejs-fundamentals、threejs-shaders、threejs-textures 处理。
主要能力:配置 EffectComposer 与 RenderPass;使用 UnrealBloomPass 等内置通道;编写自定义全屏 ShaderPass;管理离屏渲染目标;按需选择抗锯齿、描边、景深、SSAO 等效果并做质量分级。
使用方式:先确保未处理的 renderer.render(scene, camera) 画面正确,再逐步添加通道;每帧只用 renderer 或 composer 之一输出最终画面。最小示例: import { EffectComposer } from "three/addons/postprocessing/EffectComposer.js"; import { RenderPass } from "three/addons/postprocessing/RenderPass.js"; import { UnrealBloomPass } from "three/addons/postprocessing/UnrealBloomPass.js"; const composer = new EffectComposer(renderer); composer.addPass(new RenderPass(scene, camera)); composer.addPass(new UnrealBloomPass(new THREE.Vector2(width, height), 0.6, 0.4, 0.85)); function render() { composer.render(); requestAnimationFrame(render); } render(); 调整尺寸时同步更新相机、渲染器与 composer: function resize(width, height) { camera.aspect = width / height; camera.updateProjectionMatrix(); renderer.setSize(width, height, false); composer.setSize(width, height); }
适用场景:需要泛光、抗锯齿、描边、景深、SSAO、调色或自定义屏幕空间数学的实时 3D 页面。
限制与注意:通道顺序即行为,需记录每个通道前后关系;分辨率与颜色管线需与渲染器配置匹配,避免盲目套用旧版 gamma/调色通道;昂贵效果应设质量档位与开关;需测试缩放、像素比、动态相机与卸载,并按所用 API 释放 composer 拥有的渲染目标与通道,避免残留离屏 GPU 缓冲。资料未提供具体收费、平台与性能数值。