学习目标
你要能够解释什么
能从采样频率和纹理尺寸解释闪烁、摩尔纹、边缘泄漏与移动端预算。
Interview evidence
题库练习
把这一节课的画面证据,接回 PDF 里的原题。先做一个小预测,再去题目页整理成自己的回答。
-
Mipmapping 采样
先自己猜:这道题在考什么?
参考答案:MipMap 用 UV 导数估计 footprint,选择更合适的缩小纹理,减少远处 aliasing;过滤和各向异性决定过渡质量与采样成本。移动端不是一律禁用:地面/远景通常需要 mip,UI/精确 texel 材质可能禁用,必须按材质和目标设备验证。
可观察证据:只改一个参数,记下画面变化,再写一句“所以它说明了什么”。
-
纹理压缩格式
先自己猜:这道题在考什么?
参考答案:我先按 Android/iOS 目标 GPU 建能力矩阵,再在包体、显存、带宽、法线和透明质量之间选 ASTC/ETC2/BC/DXT 或 RGBA fallback。选择后用真实设备检查 mip、边缘和加载,而不是只看格式名称。
可观察证据:只改一个参数,记下画面变化,再写一句“所以它说明了什么”。
-
法线精度与带宽
先自己猜:这道题在考什么?
参考答案:我会按纹理类型、屏幕占比和设备能力选择格式/分辨率,必要时用 RG 重建、顶点法线或低频 detail 法线。优化必须同时看带宽、VRAM、高光方向和 mip 稳定性,不能只报告贴图变小。
可观察证据:只改一个参数,记下画面变化,再写一句“所以它说明了什么”。
实验循环
按顺序做一次实验
-
Step 1
放大 UV 频率
- 改什么
- UV scale 1 → 16
- 怎么做
- 保持纹理和镜头不变,只增加重复频率。
- 你会看到
- 高频图案开始闪烁或形成摩尔纹。
- 它代表
- 屏幕采样不足时,信号会折叠成错误的低频结果。
Code anchor · texture-sampling.frag.glsl · uv
-
Step 2
切换过滤器
- 改什么
- Nearest / Linear / Trilinear
- 怎么做
- 在相同缩放下比较过滤模式。
- 你会看到
- 边缘清晰度、平滑度和 mip 过渡不同。
- 它代表
- 过滤器是在重建信号,不是单纯“让图更糊”。
Code anchor · texture-sampling.frag.glsl · sample
-
Step 3
切换寻址模式
- 改什么
- Repeat / Clamp / Mirrored
- 怎么做
- 把 UV 推出 0–1,观察边界。
- 你会看到
- 重复、夹边和镜像分别改变边缘采样。
- 它代表
- 寻址决定纹理域之外的值,常见的接缝来自这里。
Code anchor · texture-sampling.frag.glsl · address mode
快速复习
用三分钟找回因果链
这里没有第二套答案。以下内容直接来自上面的课程事实,方便你在面试前快速检索。
一句话核心
把 UV 速度、寻址模式和过滤方式拆开,观察 aliasing、bleeding 与带宽之间的交换。
- 屏幕采样不足时,信号会折叠成错误的低频结果。
画面证据:高频图案开始闪烁或形成摩尔纹。
- 过滤器是在重建信号,不是单纯“让图更糊”。
画面证据:边缘清晰度、平滑度和 mip 过渡不同。
- 寻址决定纹理域之外的值,常见的接缝来自这里。
画面证据:重复、夹边和镜像分别改变边缘采样。
代码定位
- texture-sampling.frag.glsl · uv
- texture-sampling.frag.glsl · sample
- texture-sampling.frag.glsl · address mode