概念拆解
1. 后处理(Post-Processing)
-
定义:在3D场景渲染完成后,对最终图像进行的额外图像处理技术
-
作用:添加视觉特效(如模糊、发光、色彩调整等),无需修改原始3D模型
-
特点:作用于整个屏幕空间,性能消耗与屏幕分辨率相关
2. PostProcessStage
-
本质:表示一个独立的后处理阶段(如亮度调整、抗锯齿等)
-
组成:
-
着色器代码(GLSL)
-
输入/输出配置
-
可调参数(uniforms)
-
-
工作流程:
原始图像 → Stage1处理 → Stage2处理 → 最终效果
3. Library(库)
-
定位:预置效果的快速访问仓库
-
优势:避免重复造轮子,提供开箱即用的高质量特效
关键方法
通过 Cesium.PostProcessStageLibrary
可调用这些预设效果:
方法名 | 效果描述 | 可调参数示例 |
---|---|---|
createBrightnessStage() | 亮度调节 | brightness (亮度系数) |
createBlurStage() | 高斯模糊 | delta (模糊强度) |
createFXAAStage() | 快速近似抗锯齿 | 无参数 |
createBloomStage() | 泛光(发光效果) | contrast /brightness |
createAmbientOcclusionStage() | 环境光遮蔽(SSAO) | intensity /bias |
使用示例
// 获取后处理阶段集合
const postProcessStages = viewer.scene.postProcessStages;
// 1. 创建亮度调节效果
const brightnessStage = Cesium.PostProcessStageLibrary.createBrightnessStage();
brightnessStage.uniforms.brightness = 1.5; // 亮度提升50%
// 2. 创建抗锯齿效果
const fxaaStage = Cesium.PostProcessStageLibrary.createFXAAStage();
// 将效果添加到场景
postProcessStages.add(brightnessStage);
postProcessStages.add(fxaaStage);
性能特性
效果类型 | 性能消耗 | 适用场景 |
---|---|---|
亮度/对比度 | 低 | 常规色彩调整 |
FXAA抗锯齿 | 中 | 消除模型边缘锯齿 |
SSAO | 高 | 增强场景立体感 |
Bloom泛光 | 高 | 发光体/霓虹效果 |
开发技巧
-
效果叠加顺序:后处理效果按添加顺序依次执行,顺序不同最终效果会差异
-
参数微调:通过
uniforms
对象实时调整参数:bloomStage.uniforms.contrast = 150; // 动态修改泛光对比度阈值
-
性能平衡:高消耗效果(如SSAO)建议在高端设备启用
-
自定义扩展:可通过继承
PostProcessStage
创建自定义效果
与其他模块的关系
mermaid
graph TD
A[PostProcessStageLibrary] -->|提供预设| B(PostProcessStage)
B --> C{PostProcessStageCollection}
C --> D[场景渲染管线]
D --> E((最终画面输出))
掌握这个模块可以快速实现电影级视觉效果,是提升Cesium场景表现力的关键工具。