uv坐标
U=横坐标,V=纵坐标,取值用永远是0到1之间的小数,UV 是比例不是像素
// 在 GLSL 片段着色器中,UV 通常这样传进来
varying vec2 vUv; // 从顶点着色器插值过来的 UV 坐标
void main() {
// vUv.x = 水平方向 [0.0, 1.0]
// vUv.y = 垂直方向 [0.0, 1.0]
gl_FragColor = texture2D(uTexture, vUv);
}常见操作
// 1. 翻转纹理(上下颠倒)
vec2 flippedUV = vec2(vUv.x, 1.0 - vUv.y);
// 2. 缩放纹理(瓷砖效果)
vec2 tiledUV = vUv * 3.0; // 重复 3×3 次
// 3. 平移纹理(滚动效果)
vec2 scrolledUV = vUv + vec2(uTime * 0.1, 0.0);
// 4. 扭曲效果(水波纹)
float distortion = sin(vUv.y * 10.0 + uTime) * 0.02;
vec2 waveUV = vUv + vec2(distortion, 0.0);如果你看到有地方写uv-coordinates,这其实就是uv的全写
mix(a,b,t)=a×(1−t)+b×t
clamp(uv * scale - offset, 0, 1)
// 把渐变控制在 [start, end] 区间内(0~1 范围)
float start = 0.3; // 开始渐变的位置
float end = 0.7; // 结束渐变的位置
float t = clamp((vUv.x - start) / (end - start), 0.0, 1.0);- scale > 1:渐变更陡峭(过渡带更窄)
- 0 < scale < 1:渐变更平缓(过渡带更宽)
- offset 越大:整体往左/下移动(更多黑色区域)
- offset 越小:整体往右/上移动(更多白色区域)