颜色混合

15 / 30
学习使用mix函数进行颜色混合,理解线性插值的概念和应用。

想在两种颜色之间做渐变,不需要自己算,GLSL 有内置函数 mix


mix() 是什么

mix(a, b, t) 在颜色 a 和颜色 b 之间按比例 t 混合:

  • t = 0.0 → 完全是 a
  • t = 0.5ab 各一半
  • t = 1.0 → 完全是 b

t 必须在 0.0 到 1.0 之间——正好是 UV 坐标的范围。


用 uv.x 做水平渐变

uv.x 当作 t,左边 t = 0(颜色 a),右边 t = 1(颜色 b):


试着改一改

示例代码里颜色是红色和蓝色。把它们改成别的:

颜色组合color1color2
橙→紫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 试试,渐变方向会变成从下到上。

GLSL 代码编辑器

正确代码预览

当前代码预览