颜色混合
15 / 30
学习使用mix函数进行颜色混合,理解线性插值的概念和应用。
想在两种颜色之间做渐变,不需要自己算,GLSL 有内置函数 mix。
mix() 是什么
mix(a, b, t) 在颜色 a 和颜色 b 之间按比例 t 混合:
t = 0.0→ 完全是at = 0.5→a和b各一半t = 1.0→ 完全是b
t 必须在 0.0 到 1.0 之间——正好是 UV 坐标的范围。
用 uv.x 做水平渐变
把 uv.x 当作 t,左边 t = 0(颜色 a),右边 t = 1(颜色 b):
试着改一改
示例代码里颜色是红色和蓝色。把它们改成别的:
| 颜色组合 | color1 | color2 |
|---|---|---|
| 橙→紫 | vec3(1.0, 0.5, 0.0) | vec3(0.5, 0.0, 1.0) |
| 白→黑 | vec3(1.0) | vec3(0.0) |
| 绿→黄 | vec3(0.0, 0.8, 0.3) | vec3(1.0, 0.9, 0.0) |
练习
练习代码里 mix 的因子是固定的 0.0,所以画面全是红色。把因子改成 uv.x,让它从左边红色渐变到右边蓝色。
答案解析
把第三个参数从 0.0 改成 uv.x:
uv.x 左边是 0(完全 redColor),右边是 1(完全 blueColor),中间是两者的混合。
改成 uv.y 试试,渐变方向会变成从下到上。