UV坐标基础

11 / 30
理解着色器中的UV坐标系统及其应用。学习如何将UV坐标映射到颜色,创建渐变效果。

上一节每个像素都输出同一个颜色。想让左边暗、右边亮,着色器就需要知道当前像素在哪里。

这就是 UV 坐标 的用途。


什么是 UV 坐标

gl_FragCoord.xy 给出像素的屏幕位置,比如 (142.0, 87.0)——但这个数字和画布大小绑定,不通用。

把它除以画布尺寸,就得到 0.0 到 1.0 范围内的位置:

除完之后:

  • 左边缘:uv.x = 0.0
  • 右边缘:uv.x = 1.0
  • 下边缘:uv.y = 0.0
  • 上边缘:uv.y = 1.0

用 uv.x 控制颜色

uv.x 从左到右是 0.0 → 1.0,正好可以当亮度用。

把它同时设给三个颜色通道,就得到从黑到白的灰度渐变:

左边 uv.x = 0.0 → 黑色;右边 uv.x = 1.0 → 白色。


练习

练习区画面是黑色的,计算出 UV 坐标,用 uv.x 让它从左边黑色渐变到右边白色

答案解析

两步:先算 UV,再用 uv.x 当亮度。

vec3(uv.x)vec3(uv.x, uv.x, uv.x) 的简写——三个通道相同就是灰色。uv.x 从 0 到 1,灰色就从黑到白。

u_resolution 是 uniform,代表画布宽高(如 300×300)。除以它,就把像素坐标缩放到 0~1 之间。

试试把 vec3(uv.x) 改成 vec3(uv.y),渐变方向会变成从下到上。

GLSL 代码编辑器

正确代码预览

当前代码预览