GLSL 效果示例

棋盘格

用 floor() 和 mod() 四行代码做出一个会滚动的棋盘格图案。

在线示例

修改右侧代码,左侧预览会实时更新。

工作原理

uv * 8.0 把坐标放大,让画布高度对应 8 个单位。floor() 去掉小数部分,同一个方格里的所有像素都得到相同的整数格子编号,比如 (3, 5)。

把两个编号相加再取 mod(..., 2.0),结果是 0 或 1。往右或往上走一格,和就变 1,结果就翻转。这种交替就是整个棋盘格。

两个轴都除以 u_resolution.y,宽画布上的格子也能保持正方形;加上 u_time * 0.05,整个网格会斜着滑动。

试着改一改

修改效果
8.0 改成 20.0格子变小,每列 20 个
cell.x + cell.y 改成 cell.x变成竖条纹
uv * 8.0 改成 uv * vec2(8.0, 4.0)长方形格子,高是宽的两倍
u_time * 0.05 改成 vec2(u_time * 0.2, 0.0)滚动变快,并且只从左往右

用到的内置函数

一步步学会这个效果