颜色循环

3 / 14
使用 sin() 让 RGB 通道随时间循环变化。

画面颜色在不停地循环变化,从红到绿到蓝再回来。核心代码是这三行:

下面拆解它。


三个通道,各自偏移

红、绿、蓝三个通道各自用 sin 生成 0.0 到 1.0 的值。关键在于它们的起始角度不同

2.0944.188 是什么?它们是 2π/3(约 120°)的弧度值。把一圈 360° 平均分成三份,每份 120°。

三个通道的相位差正好是三等分,所以它们的最亮时刻会错开——当红色最亮时,绿色和蓝色处于不同的阶段,颜色才能在整个色轮上循环流动,而不是三个通道同步亮灭变成灰色脉冲。


为什么是 2.094

2π ÷ 3 ≈ 2.094

2π 是一个完整的 sin 周期(一圈)。把它三等分后,每份间隔正好让三个通道在色轮上均匀分布,产生连续的彩色循环。


试着改一改

改动效果
sin(u_time * 2.0)颜色变化速度加倍
sin(u_time * 0.3)颜色缓慢地流动
把偏移改为 1.53.0相位不均匀,颜色循环变不对称
只让红绿变化,蓝固定 0.5颜色在红绿之间渐变

练习

练习区的画面是纯黑色,用三个相差 2.094 的 sin(u_time) 分别控制红、绿、蓝通道,让画面产生连续的颜色循环效果。

答案解析

  • 每个通道都用 sin * 0.5 + 0.5 换算到 0.0–1.0
  • 三个通道分别加上 0、2.094、4.188 作为相位偏移
  • 相位差 = 2π/3,三个通道在色轮上均匀分布

起始代码里 c = vec3(0.0) 是全黑。替换为三个带偏移的 sin 后,颜色通道开始交替主导,画面在整个色谱上流动。

试着把第三个偏移从 4.188 改成 3.0,颜色循环会变得不对称,出现偏色感。

GLSL 代码编辑器

正确代码预览

当前代码预览