跳到主要内容
texture-sampling · 课程
从引导学习开始

建议顺序 05 · 性能与移动管线

Texture Sampling:纹理是信号,不是贴纸

过滤、寻址与 mip 选择决定了一个纹理在屏幕上如何被读取。

把 UV 速度、寻址模式和过滤方式拆开,观察 aliasing、bleeding 与带宽之间的交换。

未完成

这一课的入口

按你现在的状态开始

内容只有一份。入口只改变阅读顺序,不会把技术结论拆成“简单版”和“专家版”。

直接看代码

性能优化 · 固定场景和指标,一次只改一个变量,再讨论预算与画质代价。

  • 定场景
  • 选指标
  • 改一项
  • 看差值
  • 讲取舍

引导学习 · 性能优化

固定场景和指标,一次只改一个变量,再讨论预算与画质代价。

  1. 01 定场景
  2. 02 选指标
  3. 03 改一项
  4. 04 看差值
  5. 05 讲取舍

学习目标

你要能够解释什么

能从采样频率和纹理尺寸解释闪烁、摩尔纹、边缘泄漏与移动端预算。

Interview evidence

题库练习

把这一节课的画面证据,接回 PDF 里的原题。先做一个小预测,再去题目页整理成自己的回答。

  • Q19 concept

    Mipmapping 采样

    先自己猜:这道题在考什么?

    参考答案:MipMap 用 UV 导数估计 footprint,选择更合适的缩小纹理,减少远处 aliasing;过滤和各向异性决定过渡质量与采样成本。移动端不是一律禁用:地面/远景通常需要 mip,UI/精确 texel 材质可能禁用,必须按材质和目标设备验证。

    可观察证据:只改一个参数,记下画面变化,再写一句“所以它说明了什么”。

  • Q40 pipeline

    纹理压缩格式

    先自己猜:这道题在考什么?

    参考答案:我先按 Android/iOS 目标 GPU 建能力矩阵,再在包体、显存、带宽、法线和透明质量之间选 ASTC/ETC2/BC/DXT 或 RGBA fallback。选择后用真实设备检查 mip、边缘和加载,而不是只看格式名称。

    可观察证据:只改一个参数,记下画面变化,再写一句“所以它说明了什么”。

  • Q43 shader

    法线精度与带宽

    先自己猜:这道题在考什么?

    参考答案:我会按纹理类型、屏幕占比和设备能力选择格式/分辨率,必要时用 RG 重建、顶点法线或低频 detail 法线。优化必须同时看带宽、VRAM、高光方向和 mip 稳定性,不能只报告贴图变小。

    可观察证据:只改一个参数,记下画面变化,再写一句“所以它说明了什么”。

实验循环

按顺序做一次实验

  1. Step 1

    放大 UV 频率

    改什么
    UV scale 1 → 16
    怎么做
    保持纹理和镜头不变,只增加重复频率。
    你会看到
    高频图案开始闪烁或形成摩尔纹。
    它代表
    屏幕采样不足时,信号会折叠成错误的低频结果。

    Code anchor · texture-sampling.frag.glsl · uv

  2. Step 2

    切换过滤器

    改什么
    Nearest / Linear / Trilinear
    怎么做
    在相同缩放下比较过滤模式。
    你会看到
    边缘清晰度、平滑度和 mip 过渡不同。
    它代表
    过滤器是在重建信号,不是单纯“让图更糊”。

    Code anchor · texture-sampling.frag.glsl · sample

  3. Step 3

    切换寻址模式

    改什么
    Repeat / Clamp / Mirrored
    怎么做
    把 UV 推出 0–1,观察边界。
    你会看到
    重复、夹边和镜像分别改变边缘采样。
    它代表
    寻址决定纹理域之外的值,常见的接缝来自这里。

    Code anchor · texture-sampling.frag.glsl · address mode

快速复习

用三分钟找回因果链

这里没有第二套答案。以下内容直接来自上面的课程事实,方便你在面试前快速检索。

一句话核心

把 UV 速度、寻址模式和过滤方式拆开,观察 aliasing、bleeding 与带宽之间的交换。

  1. 屏幕采样不足时,信号会折叠成错误的低频结果。

    画面证据:高频图案开始闪烁或形成摩尔纹。

  2. 过滤器是在重建信号,不是单纯“让图更糊”。

    画面证据:边缘清晰度、平滑度和 mip 过渡不同。

  3. 寻址决定纹理域之外的值,常见的接缝来自这里。

    画面证据:重复、夹边和镜像分别改变边缘采样。

代码定位

  • texture-sampling.frag.glsl · uv
  • texture-sampling.frag.glsl · sample
  • texture-sampling.frag.glsl · address mode
打开代码页