跳到主要内容

Topics · 慢一点,看见每个中间状态

17 门专题,四条深挖路线

专题入口会进入完整教学路线。如果你只想马上调参数,请去实验工具库;同一专题在那里会以“直接实验”的身份再次出现。

17 门 · 每门都有结构化前置理解与步数

路线 01 · 5 门

先看懂光如何遇见材质

从微表面统计走到漫反射、能量分配、皮下传输与生产校准。

  1. 01 · PBR · 微表面 12 个连续小步 Q09

    GGX / D:镜片朝向的统计

    从同一批微表面出发,经过坡度、方向半球与投影校正,最后读懂 D / NDF。

    开始前只需要:不需要先认识 H;从一块表面和许多朝向不同的微小镜片开始。

  2. 02 · PBR · 微表面 9 个连续小步 Q02 · Q03

    Masking / Shadowing 与 Fresnel

    先看镜片为什么被挡住,再看反射机会为什么随角度和材质变化。

    开始前只需要:先完成 GGX / D,或能指出半程向量 H。

  3. 03 · PBR · 漫反射 17 个连续小步 Q02 · Q03 · Q08

    Diffuse BRDF:Lambert 到 Burley

    从一束入射光开始,认识 N、L、V、半球、ρ、1/π、粗糙 diffuse 与能量分账。

    开始前只需要:知道漫反射是进入表面后散开的那部分能量。

  4. 04 · PBR · 生产校准 18 个连续小步 Q02 · Q07 · Q08

    材质标定与颜色管线

    跟住同一份 M-07 样品,区分 Base Color、sRGB/Linear、灯光、曝光、Tone Mapping 与验收。

    开始前只需要:知道 Base Color 与最终屏幕颜色不是同一个量。

  5. 05 · 光传输 · 材质 9 个连续小步 Q05

    SSS:光为什么能在皮肤下走一段

    从 Lambert 基线开始,逐个观察厚度、扩散半径、剖面、样本数与传输遮罩。

    开始前只需要:先区分表面直接反射与进入材质内部的光。

路线 02 · 6 门

再追踪一个点、一条光线、一块像素

让同一份证据经过空间变换、采样、反射与阴影,而不是背空间名词。

  1. 06 · 空间 · 投影 13 个连续小步 Q04 · Q39

    坐标空间旅行证

    让同一个点经过 local、world、view、clip、NDC、screen,再连接常见失败现象。

    开始前只需要:知道一个点的数值必须依赖参照系才有意义。

  2. 07 · 空间 · 深度精度 10 个连续小步 Q39

    齐次坐标 w 与透视除法

    让同一个点经过 clip.w、透视除法、深度与 jitter,看到中间状态。

    开始前只需要:先走完坐标空间旅行证,认识 clip 与 NDC。

  3. 08 · 法线 · 切线空间 8 个连续小步 Q04

    Normal Map / TBN

    把 RGB 方向从切线空间搬到世界空间,逐个验证 handedness、缩放与归一化。

    开始前只需要:能区分模型空间、世界空间与切线空间。

  4. 09 · 屏幕空间 · 反射 11 个连续小步 Q06 · Q15

    SSR 射线步进尸检

    跟住同一条反射射线走完步进、交叉、Thickness、细化与 Fallback。

    开始前只需要:知道 SSR 只能读取屏幕已经保存的颜色和深度。

  5. 10 · 阴影 · 可见性 12 个连续小步 Q39

    Shadow Map、Bias、PCF 与 CSM

    让同一个接触点经过灯光视角、Depth Compare、Acne、Bias、Texel、PCF 与 CSM。

    开始前只需要:知道阴影贴图保存的是灯光所见的最近深度。

  6. 11 · 采样 · 带宽 11 个连续小步 Q19 · Q40 · Q43

    纹理足迹、Mip、LOD 与压缩

    跟住同一面棋盘旗,逐步认识 Pixel、Texel、Footprint、Derivative、Mip 与各向异性。

    开始前只需要:知道屏幕像素与纹理 texel 不是同一个网格。

路线 03 · 3 门

然后把画面拆成一帧真正的工作

把提交、G-buffer、透明覆盖与 GPU 时间线连成诊断链。

  1. 12 · 渲染管线 · 架构 8 个连续小步 Q06 · Q15

    Forward / Deferred 与 G-buffer

    观察光源数量、带宽、透明、MSAA 和混合管线把成本搬到哪里。

    开始前只需要:知道一次 draw 会让几何经过顶点与片元阶段。

  2. 13 · 透明 · Coverage 10 个连续小步 Q10 · Q11

    Alpha、A2C 与 Overdraw

    让同一片橙叶和蓝天贯穿 Blend、排序、Clip、Sample Coverage、A2C、Depth 与 Overdraw。

    开始前只需要:知道透明像素仍会执行片元工作,并参与排序或深度策略。

  3. 14 · 性能 · Profiler 18 个连续小步 Q13 · Q17 · Q37 · Q42 · Q44

    GPU 一帧尸检室

    跟住 Frame #184 认识 CPU/GPU 流水、阶段、覆盖、关键路径与同步。

    开始前只需要:知道一帧由多个阶段组成,毫秒不能只看总数。

路线 04 · 3 门

最后处理会动、会坏、会出现 NaN 的东西

从旋转表示走到骨骼变形,再建立一套 Shader 数值急救流程。

  1. 15 · 变换 · 动画 8 个连续小步 Q45 · Q48

    Quaternion:旋转不是四个神秘数字

    从欧拉角失败走到轴角、单位四元数、乘法顺序、Slerp 与骨骼应用。

    开始前只需要:知道旋转是在改变方向,不是把位置平移。

  2. 16 · 骨骼 · 变形 12 个连续小步 Q34 · Q35

    Skinning 权重、Matrix Palette 与 IK

    跟住同一顶点 v17,经过 Bind、Inverse Bind、权重混合、糖纸扭曲与 IK。

    开始前只需要:知道顶点会被多根骨骼按权重共同影响。

  3. 17 · Shader · 数值稳定 9 个连续小步 Q35 · Q36

    NaN 急救室

    跟住同一像素 #184,制造除零、零向量、越界函数与精度溢出,再观察 Guard。

    开始前只需要:知道 NaN 会沿后续运算传播,而不是自动恢复。