SuperAPI AI 工具集

threejs-impl-post-processing

设计与创作

查看项目

更新于 10-15 22:18

技能介绍

用途:在 Three.js 场景中添加后处理效果,如泛光、SSAO、景深、抗锯齿等,并避免混用不兼容的后处理系统。

主要能力与体系:Three.js 提供两套互不兼容的后处理系统,禁止混用。一是内置 EffectComposer(three/addons/postprocessing/),每个效果一个 shader pass,适合简单场景与自定义 ShaderPass;二是 pmndrs/postprocessing(npm 包 postprocessing),将多个效果合并为单个 pass,适合性能敏感场景与 R3F 应用。另有 WebGPU 后处理(three/addons/tsl/display/),基于 TSL 节点图,仅适用 WebGPU 渲染器,与前两者均不兼容。

标准管线与顺序:使用 EffectComposer 时,RenderPass 必须为第一个 pass,效果 pass 位于中间,抗锯齿 pass 放在效果之后,OutputPass 必须为最后一个 pass,用于色调映射与色彩空间转换;省略 OutputPass 会导致颜色发白或不正确。动画循环中调用 composer.render() 替代 renderer.render(scene, camera)。

关键限制:不得混用内置 EffectComposer 与 pmndrs 版本,否则产生渲染异常或崩溃;窗口缩放时需对 renderer 与 composer 同时调用 setSize,否则效果模糊或错位;使用 EffectComposer 时不得再调用 renderer.render,否则场景渲染两次;不得将 WebGL 后处理与 WebGPU 渲染器混用。

效果配置:UnrealBloomPass 需在渲染器启用色调映射;SSAO/GTAO 中生产环境优先使用 GTAOPass;OutlinePass 可设置 selectedObjects 与边缘参数;自定义 ShaderPass 需包含 tDiffuse uniform。泛光参数为 strength、radius、threshold,逐对象选择性泛光需借助 layers 系统自行实现。

缩放处理:resize 时更新相机纵横比与投影矩阵,并分别对 renderer 和 composer 调用 setSize。

适用场景:Three.js WebGL 或 WebGPU 场景的后处理管线搭建与效果调试。WebGPU、pmndrs 及 R3F 具体实现细节以官方文档为准,资料中未提供完整示例文件内容。