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) | 滚动变快,并且只从左往右 |