Shader 学习总览
学习 Shader 主要分为几个方向:

- 实时渲染 (Real-time Rendering):主要用于游戏、交互式应用,学习重点是性能优化、在特定硬件上运行。
- 离线渲染 (Offline Rendering):主要用于电影、动画,学习重点是照片级真实感、物理准确性、渲染时间更长。
- 程序化艺术 (Generative Art):使用 Shader 创作独特的视觉艺术,如数据可视化、动态图形等。
对于初学者,从实时渲染入手是最常见且最有效的路径。
第一阶段:入门基础 (建立核心概念)
这个阶段的目标是理解 Shader 是什么,以及图形渲染管线的基本流程。
核心理论课程 (必看)
这些课程不依赖任何特定引擎,帮你建立坚实的理论基础。
-
TheBennyBox - OpenGL Shader Programming Tutorials
(图片来源网络,侵删)- 简介:这是 最经典、最推荐的入门教程,主讲人从零开始,用 C++ 和 OpenGL 原生 API 手动创建窗口、加载模型,并一步步编写顶点着色器和片段着色器。
- 优点:你能深刻理解 GPU 是如何接收数据、处理数据并最终渲染出像素的,这为你以后学习任何引擎的 Shader 都打下了坚实的基础。
- 平台:YouTube
- 链接:OpenGL Shader Programming Tutorial Playlist
-
Scratchapixel - Introduction to Computer Graphics
- 简介:这是一个非常全面的计算机图形学在线书籍,配有大量解释和示例,它的数学和物理基础非常扎实。
- 优点:理论深度极高,能让你知其然更知其所以然,适合想彻底搞懂底层原理的学习者。
- 平台:网站
- 链接:Scratchapixel
引擎入门 (选择一个,深入下去)
理论学习后,你需要在一个成熟的引擎中实践,这会大大提高开发效率。
A. Unity
Unity 的 Shader 使用 ShaderLab 语言,核心是 HLSL (High-Level Shading Language),新手推荐从 URP (Universal Render Pipeline) 的 Shader Graph 开始。
-
入门:Shader Graph (可视化编程)
- 简介:通过节点连接的方式创建 Shader,无需编写代码,非常适合初学者快速建立信心和理解 Shader 的工作流程。
- 推荐教程:
- Catlike Coding - Rendering in Unity:虽然是关于渲染管线的,但其中关于 Shader Graph 的讲解非常透彻。
- YouTube 搜索 "Unity Shader Graph Tutorial":有大量优质教程,"Brackeys" (虽已停更,但经典永存)、"Sebastian Lague" 等。
- 官方文档:Unity 官方的 Shader Graph 教程是最好的起点。
-
进阶:编写 Shader 代码
- 简介:当你理解了基本原理后,学习编写代码能让你实现更复杂、更高效的效果。
- 推荐教程:
- Sebastian Lague - Shader Coding Tutorial:这个系列非常经典,从最基础的纹理采样开始,逐步讲解光照模型、法线贴图等。
- Catlike Coding - Rendering in Unity:这个系列是 Unity 渲染的“圣经”,虽然难度较高,但学完后你对 Unity 的理解会达到新的高度,强烈推荐在有一定基础后学习。
- B站 (哔哩哔哩):搜索 “Unity Shader入门” 或 “Unity Shader教程”,有大量国内 UP 制作的优质免费教程,“友塔游戏技术美术”、“Shader加油站” 等。
B. Unreal Engine (UE)
Unreal Engine 的 Shader 使用 材质编辑器,核心是 HLSL,它的材质编辑器功能极其强大,可视化程度很高。
- 入门:材质编辑器
- 简介:UE 的材质编辑器非常直观,拖拽节点即可实现复杂效果。
- 推荐教程:
- Unreal Engine 官方频道:YouTube 上有大量官方发布的材质教程,质量非常高。
- Ryan Laley - UE5 Material Masterclass:这个系列非常系统,从基础到高级技巧都覆盖了。
- B站 (哔哩哔哩):搜索 “Unreal Engine 材质教程” 或 “UE5 Shader”,有大量国内教程。
第二阶段:进阶提升 (掌握核心技术与风格)
掌握了基础后,你需要深入学习更高级的渲染技术。
经典渲染技术
-
PBR (Physically Based Rendering - 基于物理的渲染):
- 简介:现代游戏和电影的核心渲染技术,模拟真实世界的光照和材质。
- 推荐教程:
- marmoset toolbag 官方教程:虽然不是视频,但图文并茂地解释了 PBR 的原理,是必读材料。
- Unreal/Unity 官方文档:两大引擎对 PBR 的介绍都非常详尽。
-
后处理效果:
- 简介:在渲染完所有 3D 物体后,对整个屏幕图像进行处理,如泛光、景深、色彩分级、屏幕空间反射等。
- 推荐教程:
- Catlike Coding - Post-Processing in Unity:深度讲解 Unity 的后处理效果。
- B站/YouTube:搜索 "Unity Post Processing" 或 "UE5 Post Process"。
-
卡通渲染:
- 简介:实现《塞尔达传说:旷野之息》或《英雄联盟》那样的卡通风格。
- 推荐教程:
- Sebastian Lague - Cel Shading:一个完整的卡通渲染实现教程。
- B站:搜索 “Unity 卡通渲染”,有大量从简单到复杂的实现方案。
特殊效果
- 流体模拟:使用 Shader 模拟水、烟、火等效果。
- 程序化生成:用 Shader 生成地形、纹理、裂缝等。
- 顶点动画:在顶点着色器中实现物体的变形、摆动等效果。
- 光线追踪:新一代的渲染技术,能实现更真实的光影反射和折射。
第三阶段:专业方向与资源拓展
当你成为高手后,可以探索更专业的领域。
学习资源汇总
- 视频平台:
- YouTube:搜索
Shader Tutorial,Graphics Programming,UE5 Material,Unity Shader等关键词。 - Bilibili (B站):国内最大的学习平台,资源极其丰富,搜索关键词同上。
- Udemy / Coursera / Gumroad:付费平台,有非常系统和深入的课程,"The Art of Shader Programming" 系列课程。
- YouTube:搜索
- 社区与博客:
- ShaderToy:程序化艺术家的天堂,可以看和学习全世界顶尖的 GLSL 代码片段。
- Alan Zucconi:一位非常棒的博主,有大量关于 Shader 和图形学的深入浅出的文章。
- [Unity/Unreal 官方论坛:遇到问题最好的求助地方。
- 工具:
- RenderHub / Sketchfab:查看和分析他人的 3D 模型和材质。
- Amplify Shader Editor:Unity 的第三方 Shader Graph 编辑器,功能更强大。
学习路线图建议
-
打好基础 (1-2个月):
- 看完 TheBennyBox 的 OpenGL 教程,理解 GPU 渲染流程。
- 选择一个引擎(推荐 Unity),学习其 Shader Graph 的基本用法,能做出一个带颜色和纹理的材质。
-
深入引擎 (2-3个月):
- 学习引擎内 Shader 代码 的编写,从简单的纹理、颜色开始,逐步实现 Lambert、Phong 光照模型。
- 深入理解 UV、法线、Tangent 等概念。
- 学习并实现一个简单的 卡通渲染 或 边缘光 效果。
-
掌握核心 (3-6个月):
- 系统学习 PBR 理论,并在引擎中实现一个基础的 PBR 材质。
- 学习 后处理 效果,能为场景添加泛光、色彩调整等。
- 尝试实现一些 顶点动画 或简单的 程序化纹理。
-
探索与创新 (长期):
- 在 ShaderToy 上挑战一些复杂的 GLSL 作品。
- 学习 流体、毛发 等高级渲染技术。
- 关注 SIGGRAPH 等顶级图形学会议,了解最新的研究成果。
学习心态与建议
- 耐心:Shader 学习曲线较陡,遇到挫折是正常的,不要急于求成。
- 数学:线性代数(向量、矩阵)、微积分是核心,不必精通所有,但必须理解向量运算、点积、叉积等基本概念。
- 实践:光看教程是不够的,一定要亲手敲代码、做项目,从模仿开始,然后尝试修改和创新。
- 拆解:看到一个很酷的 Shader 效果,尝试分析它可能由哪些技术组成,然后一步步去实现它。
祝你学习顺利,早日成为 Shader 大神!
