# 泛光

明亮的光源和区域经常很难向观察者表达出来,因为监视器的亮度范围是有限的。一种区分明亮光源的方式是使它们在监视器上发出光芒,光源的光芒向四周发散。这样观察者就会产生光源或亮区的确是强光区。(注:这个问题的提出简单来说是为了解决这样的问题:例如有一张在阳光下的白纸,白纸在监视器上显示出是出白色,而前方的太阳也是纯白色的,所以基本上白纸和太阳就是一样的了,给太阳加一个光晕,这样太阳看起来似乎就比白纸更亮了)。
光晕效果可以使用一个后处理特效泛光来实现。泛光使所有明亮区域产生光晕效果。下面是一个使用了和没有使用光晕的对比(图片生成自虚幻引擎): avatar

# 初始化

使用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

提示

泛光初始化参数,详见BloomParams

# 属性

🌏 intensity 泛光强度

// 设置泛光强度
effect.intensity = 1.0;
1
2

🌏 radius 模糊范围

// 设置模糊范围
effect.radius = 0.5;
1
2

🌏 levels 模糊质量

// 设置模糊质量
effect.levels = 0.5;
1
2

🌏 threshold 泛光阈值

// 设置泛光阈值
effect.threshold = 0.5;
1
2

🌏 smoothing 泛光阈值

// 设置平滑度
effect.smoothing = 0.5;
1
2
Last Updated: 8/21/2023, 2:11:59 PM