暗角(边缘变暗)

21 / 30
使用到中心的距离与 smoothstep() 让画面四周变暗。

这是模块三的综合练习。把「到中心的距离」和 smoothstep 组合起来,让画面四周变暗——这就是暗角(vignette)。


思路

  1. 计算每个像素到画面中心的距离
  2. 距离越大,说明越靠近边缘
  3. 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),暗角更柔和

GLSL 代码编辑器

正确代码预览

当前代码预览