# 泛光
明亮的光源和区域经常很难向观察者表达出来,因为监视器的亮度范围是有限的。一种区分明亮光源的方式是使它们在监视器上发出光芒,光源的光芒向四周发散。这样观察者就会产生光源或亮区的确是强光区。(注:这个问题的提出简单来说是为了解决这样的问题:例如有一张在阳光下的白纸,白纸在监视器上显示出是出白色,而前方的太阳也是纯白色的,所以基本上白纸和太阳就是一样的了,给太阳加一个光晕,这样太阳看起来似乎就比白纸更亮了)。
光晕效果可以使用一个后处理特效泛光来实现。泛光使所有明亮区域产生光晕效果。下面是一个使用了和没有使用光晕的对比(图片生成自虚幻引擎):
# 初始化
使用LuminanceBloom类添加泛光效果。
import {
Postprocessing,
LuminanceBloom,
KernelSize
} from '@tx3d/postprocessing';
// 创建后处理类
const postprocessing = new Postprocessing( engine );
// 添加泛光后处理效果
const effect = postprocessing.addEffect( LuminanceBloom, {
radius: 0.5, // 模糊半径
levels: 8, // 模糊质量
intensity: 1.0, // 光照强度
threshold: 0.0, //过滤阈值
smoothing: 0.1, //平滑值
opacity: 1,//透明度
dithering: false //是否对颜色应用抖动以消除条带的外观
} );
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
提示
泛光初始化参数,详见BloomParams。
# 属性
🌏 intensity 泛光强度
// 设置泛光强度
effect.intensity = 1.0;
1
2
2
🌏 radius 模糊范围
// 设置模糊范围
effect.radius = 0.5;
1
2
2
🌏 levels 模糊质量
// 设置模糊质量
effect.levels = 0.5;
1
2
2
🌏 threshold 泛光阈值
// 设置泛光阈值
effect.threshold = 0.5;
1
2
2
🌏 smoothing 泛光阈值
// 设置平滑度
effect.smoothing = 0.5;
1
2
2