如何入门渲染
本文最后更新于 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
- 写一个深度图可视化
- 写一个简单的后处理,比如灰度、反色、模糊
这些练习看起来简单,但基本覆盖了渲染管线里最常见的输入输出关系。
注意点
渲染入门最容易卡在两个地方:
- 概念太多,学习路线散掉
- 代码能跑,但不知道为什么画面是错的
解决办法是每次只验证一个问题。
比如调试阴影时,就先不要把法线贴图、透明、后处理混进来。先用最简单的模型、最简单的光照、最简单的材质,把问题缩小到能看懂为止。
渲染本质上是一个不断把问题拆小的过程。先做出能看的东西,再慢慢让它更正确。