暗角(边缘变暗)
21 / 30
使用到中心的距离与 smoothstep() 让画面四周变暗。
这是模块三的综合练习。把「到中心的距离」和 smoothstep 组合起来,让画面四周变暗——这就是暗角(vignette)。
思路
- 计算每个像素到画面中心的距离
- 距离越大,说明越靠近边缘
- 用
smoothstep把距离转成 0~1 的遮罩:中心为 1(亮),边缘为 0(暗)
d < 0.25:v = 1(中心,最亮)d > 0.6:v = 0(四角,最暗)- 中间:平滑过渡
用遮罩混合颜色
把遮罩 v 传给 mix,中心显示亮色,四周显示暗色:
练习
练习代码里 v = 1.0(全亮,没有暗角)。用 1.0 - smoothstep(0.25, 0.6, d) 计算暗角遮罩 v。
答案解析
smoothstep(0.25, 0.6, d) 在 d=0.25 时开始从 0 上升,到 d=0.6 时变成 1(边缘)。用 1.0 - 反转:中心为 1,边缘为 0。
调整参数的效果:
0.25越小,暗角从离中心更近的地方开始0.6越小,过渡带越窄,边缘越硬0.6越大(比如 1.0),暗角更柔和