如何入门渲染

本文最后更新于 2026年7月8日 下午

涵盖的知识领域太多了,学习路线非常陡峭

先说结论

不要一开始就试图把所有东西都学完。

渲染入门比较合适的方式是先把一条最小管线跑通,然后再逐步补数学、图形 API、Shader、光照、阴影、后处理这些内容。

如果一开始就从 PBR、GI、Path Tracing 这种东西切进去,很容易陷入概念很多但什么都写不出来的状态。

最小学习路线

可以按这个顺序来:

  • 先理解 CPU 提交数据,GPU 执行 Shader,最后写入 FrameBuffer 这条流程
  • 学会写最简单的 Vertex Shader 和 Fragment Shader
  • 搞清楚模型空间、世界空间、观察空间、裁剪空间之间的转换
  • 学会采样纹理,理解 UV、Wrap、Filter、Mipmap
  • 学会最基础的 Lambert 光照和 Blinn-Phong 高光
  • 再看阴影、法线贴图、后处理、透明排序这些工程问题

这里的重点是每一步都要能看到画面变化。

渲染是非常依赖反馈的东西,光看公式很容易觉得自己懂了,但真正写 Shader 时会遇到坐标系反了、颜色空间不对、深度不对、精度不够等问题。

需要补的基础

线性代数

重点是向量、点积、叉积、矩阵变换。

不用一开始就学得特别深,但至少要知道:

  • 点积可以表示方向相似度
  • 叉积可以得到垂直方向
  • 矩阵可以组合平移、旋转、缩放
  • MVP 矩阵负责把模型顶点变换到裁剪空间

图形 API

不用一开始就啃完整的 Vulkan 或 DX12。

先理解这些概念就够了:

  • Buffer
  • Texture
  • RenderTarget
  • DepthBuffer
  • Pipeline State
  • DrawCall

Unity 里很多细节被封装了,但底层还是这些东西。

Shader

Shader 是入门渲染最直接的入口。

建议先从 Unity 的 HLSL 写起,因为能快速看到结果。等理解了基本流程,再去看 ShaderLab、URP 的 Include 文件、SRP Batcher、GPU Instancing 这些工程细节。

推荐练习

  • 写一个纯色 Shader
  • 写一个顶点色 Shader
  • 写一个纹理采样 Shader
  • 写 Lambert 光照
  • 写 Half Lambert
  • 写简单的 Rim Light
  • 写一个深度图可视化
  • 写一个简单的后处理,比如灰度、反色、模糊

这些练习看起来简单,但基本覆盖了渲染管线里最常见的输入输出关系。

注意点

渲染入门最容易卡在两个地方:

  • 概念太多,学习路线散掉
  • 代码能跑,但不知道为什么画面是错的

解决办法是每次只验证一个问题。

比如调试阴影时,就先不要把法线贴图、透明、后处理混进来。先用最简单的模型、最简单的光照、最简单的材质,把问题缩小到能看懂为止。

渲染本质上是一个不断把问题拆小的过程。先做出能看的东西,再慢慢让它更正确。


如何入门渲染
https://nicoier.github.io/2025/08/13/如何入门渲染/
作者
NicoIer
发布于
2025年8月13日
许可协议