垂直条纹

7 / 15
练习基于 UV 构建重复图案。

把水平条纹的方向转 90 度,只需把 vUv.y 换成 vUv.x

下面拆解原理。


用 x 坐标做重复

vUv.x 从 0.0 到 1.0 覆盖画面的左到右(0% 是左边,100% 是右边)。

vUv.x * c 把这段范围拉伸 12 倍,变成 0–12。

fract() 把 0–12 折叠成 12 个 0–1 的循环,画面被切成 12 列,每列内部坐标独立从 0.0 走到 1.0。


step 切出竖向硬边

step(0.5, x) 让每列左半(0%–50%)等于 0.0,右半(50%–100%)等于 1.0。

mix(深色, 浅色, m) 根据这个 0/1 遮罩交替输出两种颜色,形成垂直条纹。


试着改一改

改动效果
c12.0 改为 6.0条纹变宽,只有 6 列
step(0.5, x) 改为 step(0.8, x)深色条很宽,浅色条变成细线
vUv.x 换成 vUv.y变回水平条纹
mix(...) 里换成红/黄配色暖色系垂直条纹

练习

float x = 0.0; 改成正确的表达式,让画面出现 12 条垂直条纹。

答案解析

c 是 12.0,vUv.x * 12.0 把 x 坐标扩展成 0–12 的范围,fract() 把它折叠成 12 段重复的锯齿波。

初始代码 float x = 0.0 让所有像素的 x 永远等于 0,step(0.5, 0.0) 恒为 0,画面全是深色。改成 fract(vUv.x * c) 之后,x 随水平位置变化,step 就能在每段里分出左右两半,形成垂直条纹。

试着把 c 改成 24.0,条纹密度会变为原来的两倍。

GLSL 代码编辑器

正确代码预览

当前代码预览