Base-技术美术学习资源与提升路线
技术美术(Technical Artist,TA)这个岗位横跨美术与程序:既要能判断一张图的明暗结构和色彩关系对不对,也要能读懂渲染管线里某个 Pass 到底在做什么。两个方向各自都有成熟的学习体系,麻烦的是它们交叉的部分没人替你整理——教程多得看不完,但很少有人告诉你「先学什么、后学什么、哪些东西必须亲手写一遍」。
下面是按这个顺序整理的一批入口:先建立知识地图,再从零写一遍渲染器打底,然后按 Shader、材质、程序化生成几个方向专项深入,最后是长期保持输入的社区与书目。大部分是 GitHub 仓库,也包含几个绕不开的站点和视频频道。
文中的 Star 数量是整理时(2026 年 7 月)的量级,只用来判断项目体量,不代表质量或者是否仍然活跃。决定一个开源项目值不值得读的,是它的代码组织方式和文档愿不愿意解释「为什么这么做」,这一点 Star 数看不出来。
一、先建立知识地图
TA 最容易走偏的方式是一头扎进某个技术点,把 SSAO 的实现背下来,却不知道它在整条管线里的位置。所以第一步不是学技术,而是先知道一共有哪些技术。
GameDevMind
gonglei007/GameDevMind 是目前中文圈最完整的游戏开发技术图谱,按「基础能力 → 渲染/物理/网络 → 研发流程 → 生产效率 → 管理 → 运营」组织,并分了三类读者路径:新人入门(A 线)、一到五年的研发实战(B 线)、上线运营阶段(C 线)。配套还有 C++ 实现示例和实战案例复盘(内存泄漏、开放世界卡顿、服务器死锁之类)。
对 TA 来说,重点看「技术能力」和「生产能力」两块:前者决定你能不能把效果做出来,后者决定你做出来的东西美术和程序愿不愿意用。
Game-Programmer-Study-Notes
QianMo/Game-Programmer-Study-Notes 是毛星云(浅墨)整理的读书笔记合集,覆盖图形学、实时渲染、GPU 编程、设计模式与软件工程。它的价值在于「比博客系统,比书好读」——很多概念在那里第一次被讲清楚,再回头翻原书会顺很多。
其他路线图
miloyip/game-programmer 是更早的一张经典路线图,颗粒度比 GameDevMind 粗,适合用来快速看清「哪些书对应哪个阶段」。
二、从零写一遍渲染器
看懂 API 调用和看懂 GPU 在干什么,是两件事。中间那段只能靠亲手写一个光栅化器补上。
tiny 系列:从零实现光栅化与光线追踪
ssloy/tinyrenderer 用几百行 C++ 实现完整的光栅化管线:三角形填充、Z-Buffer、透视校正插值、纹理映射、切线空间法线贴图、阴影贴图一路写下来。它最大的好处是不依赖任何图形 API,所有「黑魔法」都得自己实现,写完再看真实引擎的管线会突然变得透明。
ssloy/tinyraytracer 是同一作者的光线追踪入门,ssloy/tinykaboom 则聚焦特效,三个项目构成一条从「怎么画三角形」到「怎么求交」再到「怎么做出效果」的链。
偏好 C 语言的可以看 cadenji/foolrenderer,同样是从零实现的软件渲染器,代码量更适合一口气读完。
herebedragons:同一场景,多种后端
kosua20/herebedragons 用同一个 3D 场景分别实现在 WebGL、OpenGL、Metal、Vulkan、Direct3D 乃至 PlayStation 2、NDS 上。它是理解「哪些是图形学本质、哪些只是某个 API 的习惯」最省时间的材料——同一个需求在不同 API 里的写法差异,比读规范印象深得多。
现代渲染架构
Angelo1211/HybridRenderingEngine 实现 Clustered Forward/Deferred 混合渲染,含 PBR、IBL 与 Compute Shader,规模刚好在「能读完」和「真实」之间。
Nadrin/PBR 把同一套 PBR + IBL 分别写在 Direct3D 11、Direct3D 12、Vulkan 与 OpenGL 四个后端上,适合对照着看资源绑定和同步模型的区别。
前沿方向
weihaox/awesome-neural-rendering 汇总神经渲染资源(NeRF、3D Gaussian Splatting 等)。这块每年论文量很大,跟着索引扫比盲目刷 arXiv 有效。
zheng95z/fun-with-computer-graphics 则是图形学课程、书籍、教程、视频的大合集,用来补充上面没覆盖到的方向。
三、Shader 与 GLSL
Shader 是 TA 最核心的手艺,但「能写」和「写得对」之间隔着很多经验。
3d-game-shaders-for-beginners
lettier/3d-game-shaders-for-beginners 是目前最实用的一份 Shader 教程,从纹理、光照、阴影、法线贴图讲到 SSAO、SSR、运动模糊、景深,每一节都有可直接修改的工程和在线互动演示。它的组织方式是「先跑起来再讲原理」,和大多数只贴代码的教程不一样。
索引与进阶
vanrez-nez/awesome-glsl 把 GLSL 相关的教程、网站、在线编辑器、文章、书籍和工具汇总在一起,是查漏补缺的第一站,The Book of Shaders、Shader School、Shadertoy 这些入口都能从这里找到。
gdquest-demos/godot-shaders 提供大量免费的 2D/3D Godot Shader,带可玩 Demo。引擎语法不同,但光照模型的写法是通用的,拿来当参考实现读没问题。
真正想深入到「着色语言本身怎么设计」,可以看 AcademySoftwareFoundation/OpenShadingLanguage(OSL)。它是影视级 GI 渲染器使用的着色语言,读它的规范会理解为什么实时引擎的 Shader 模型长得完全不一样。
四、PBR 与材质理论
PBR 的坑在于:很多人能背出 BRDF 公式,却说不清一张贴图为什么该放在 Metallic 通道而不是 Specular 通道。
理论与教材
QianMo/PBR-White-Paper 是中文 PBR 白皮书,从渲染方程讲到工程落地,是入门最省力的路径。
kanition/pbrtbook 是《Physically Based Rendering: From Theory To Implementation》的中文翻译。这本书是离线渲染的理论标准,不必通读,但涉及采样、微表面模型、蒙特卡洛积分时它是唯一能给出严格答案的地方。
工程标准
AcademySoftwareFoundation/MaterialX 是跨 DCC 工具的开放材质交换标准。TA 做流程标准化几乎绕不开它——引擎、Houdini、Maya、Substance 之间的材质怎么传递,答案基本都指向这里。
AcademySoftwareFoundation/OpenPBR 是统一的表面着色模型规范与参考实现,目标是让不同渲染器的材质参数含义一致。它和 MaterialX 解决的是两个不同的问题:一个是「材质怎么描述」,一个是「着色模型怎么算」。
数据与工具
AntonPalmqvist/physically-based-api 收录真实世界的材质物理参数(金属、布料、塑料的反射率、IOR 等)。调材质时凭感觉猜参数是常见坏习惯,直接查实测数据往往更快也更准。
RodZill4/material-maker 是基于 Godot 的程序化纹理创作工具,功能定位对标 Substance Designer,优点是开源且可脚本化。
五、程序化生成
程序化生成是 TA 从「调效果」走向「做系统」的分界线。
WaveFunctionCollapse 与 MarkovJunior
mxgmn/WaveFunctionCollapse 用一张样例图生成无限的 Bitmap 或 Tilemap,是关卡与场景自动生成最常被引用的一篇实现。它的核心是约束传播与最小熵优先,理解之后很多「自动摆件」的需求都能自己实现。
mxgmn/MarkovJunior 是同一作者的进阶项目:把生成规则写成基于模式匹配和约束传播的概率语言,附带一百多个示例。它更适合用来理解「生成规则本身如何被表达成一种语言」。
噪声与网格生成
Auburn/FastNoiseLite 是跨语言的噪声库(C、C++、C#、Java、HLSL、GLSL、JS、Rust、Go 都有实现),Simplex、Perlin、Voronoi、蜂窝噪声齐备,地形和材质的程序化生成基本都从它起步。同一份噪声算法能拿到 HLSL 版本这点很实用——CPU 端生成地形、GPU 端同步还原细节时不用重写。
Syomus/ProceduralToolkit 是 Unity 的程序化生成工具库,gdquest-demos/godot-4-procedural-generation 是 Godot 4 的算法与示例,TriAxis-Games/RealtimeMeshComponent 提供 UE5 运行时生成 Mesh 的组件。三个引擎各有一个,按目标平台挑即可。
六、创意编程与生成艺术
这部分不直接提升渲染能力,但决定你做出来的效果有没有审美判断。
terkelg/awesome-creative-coding 是创意编程资源大全,覆盖生成艺术、数据可视化、交互设计。
processing/p5.js 是浏览器端的创意编程平台,适合快速验证一个视觉想法——不用配环境,写完直接看。
nature-of-code/noc-book-2 是《The Nature of Code》的配套代码,用程序模拟物理、粒子、分形、群体行为。做特效时那些「看起来自然」的运动,数学基础基本来自这类系统。
GraphiteEditor/Graphite 是开源节点式 2D 创作工具,可以理解成 2D 方向的节点化材质/图形编辑器。
latentcat/latentbox 是中文的 AI、创意与艺术资源合集(站点:latentbox.com),适合跟进生成式工具这条线。
七、引擎架构与工具链
想在引擎层面说得上话,得知道引擎是怎么搭起来的。
Piccolo:读得完的完整引擎
BoomingTech/Piccolo 是 GAMES104 课程配套的迷你游戏引擎,C++/Vulkan/ImGui 实现。完整引擎动辄几百万行,读不动;Piccolo 的规模刚好能从头到尾读完一遍,理解「引擎分层、渲染后端抽象、资源管理、编辑器」怎么落地。
自研工具链的底座
- bkaradzic/bgfx:跨平台、图形 API 无关的渲染库,屏蔽 Vulkan/Direct3D 12/Metal/OpenGL 差异。写工具时不用为每个后端写一遍。
- ocornut/imgui:C++ 即时模式 GUI,几乎所有自研工具、调试面板、引擎编辑器的第一选择。
UE5 与 Blender 专项
| 仓库 | 用途 |
|---|---|
| Allar/ue5-style-guide | UE5 项目的命名与结构规范,团队协作的事实标准 |
| tomlooman/ActionRoguelike | UE C++ 教程项目,含多人联网部分 |
| PanicPetal/ALS-Community | 社区版高级运动系统,动画方向值得读 |
| xavier150/Blender-For-UnrealEngine-Addons | Blender 与 UE 之间的资产导出 |
| VoxelPlugin/VoxelPluginFreeLegacy | UE 体素插件 |
| agmmnn/awesome-blender | Blender 插件、工具、教程与资源的总入口 |
八、合集、社区与视频
前面几节都是具体技术,这一节解决「怎么持续知道新东西」。
Awesome 合集
| 仓库 | 内容 |
|---|---|
| ellisonleao/magictools | 游戏开发资源终极列表,从精灵工具、纹理工具到引擎、音效、书籍 |
| stevinz/awesome-game-engine-dev | 引擎开发向的工具、库、资产、Shader、文章 |
| Roobyx/awesome-game-design | 游戏设计资料、案例与工具 |
| Gforcex/OpenGraphic | 图形引擎与游戏引擎项目汇总 |
| Zilize/GDC-Index | GDC 演讲的中英文摘要索引 |
GDC-Index 值得单独说一句:GDC 每年几百场演讲,直接刷视频效率极低,先看摘要筛出和自己方向相关的十几场,再挑其中两三场精看,是投入产出比最高的用法。
学习站点
| 站点 | 内容 |
|---|---|
| The Book of Shaders | 交互式 Fragment Shader 教程,从坐标到噪声 |
| Learn OpenGL | 现代 OpenGL 的系统教程,图形 API 实践入门 |
| Shadertoy | 在线 Shader 创作与分享 |
| GDC Vault | GDC 演讲录像与幻灯片 |
| 80.lv | 游戏美术与技术访谈,偏制作流程 |
| Real-Time Rendering | RTR 书官网,参考文献与书目链接齐全 |
视频频道
| 频道 | 亮点 |
|---|---|
| The Cherno | C++、引擎开发、OpenGL 系列 |
| Acerola | 图形学后处理与 Shader 向的特效 |
| Ben Cloward | Shader 与材质节点,UE 的材质函数讲得很细 |
| Inigo Quilez | Shadertoy 创始人的数学与图形学讲座 |
| Freya Holmér | 几何与 Shader 数学的可视化讲解 |
| GDC | 官方演讲频道 |
九、书目
| 书名 | 方向 | 阶段 | 备注 |
|---|---|---|---|
| Real-Time Rendering 4th | 实时渲染 | 进阶 | 不必通读,当字典查 |
| Physically Based Rendering (PBRT) | 离线渲染理论 | 进阶 | 免费在线版,采样与积分章节价值最高 |
| The Book of Shaders | Shader 入门 | 入门 | 有免费在线版 |
| Game Programming Patterns | 游戏编程模式 | 初中级 | 免费在线版 |
| Learn OpenGL | 图形 API 实践 | 入门 | 免费在线版 |
| Fundamentals of Computer Graphics | 图形学基础 | 入门 | 教材向,系统性最好 |
| GPU Gems 1/2/3 | GPU 编程实战 | 进阶 | NVIDIA 官网免费提供全文 |
| Real-Time Collision Detection | 碰撞检测 | 参考 | 工具书 |
| Mathematics for 3D Game Programming | 游戏数学 | 入门 | 补数学基础 |
| The Nature of Code | 自然系统模拟 | 初中级 | 免费在线版 |
十、分阶段的提升路线
具体到「这个月该干什么」,可以按下面的顺序走。星级不是难度,而是建议的投入顺序。
初级(0–2 年)
- Shader 基础:3d-game-shaders-for-beginners 做一遍,配合 The Book of Shaders 补数学直觉。
- 渲染管线:tinyrenderer 亲手写完,然后对照 Learn OpenGL 看真实 API 怎么组织。
- PBR 理论:PBR-White-Paper 通读,physically-based-api 查参数。
- 工具链:Blender 基础操作 + awesome-blender 里的插件。
- 知识地图:GameDevMind 的 A 线。
中级(2–5 年)
- 实时渲染深入:Real-Time-Rendering-3rd-CN-Summary-Ebook 打底,再啃 RTR4 对应章节。
- 引擎理解:读 Piccolo 源码,然后针对目标引擎深入某个子系统。
- 程序化生成:WaveFunctionCollapse → FastNoiseLite → Houdini。
- 材质系统:MaterialX 与 OpenPBR 的规范,理解跨工具材质交换。
- 知识地图:GameDevMind 的 B 线 + Game-Programmer-Study-Notes。
高级(5 年以上)
- 渲染前沿:NeRF、3D Gaussian Splatting、Nanite 一类虚拟几何方案。
- 跨 DCC 管线:USD、MaterialX、OSL 的组合使用。
- 自研工具:用 bgfx + ImGui 搭一套自己的工具链。
- 对外输出:GDC 演讲、技术博客、开源贡献——输出是检验理解程度最直接的方式。
- 知识地图:GameDevMind 的 C 线。
日常可持续的习惯
| 频率 | 活动 |
|---|---|
| 每天 | Shadertoy 看一个 Shader,拆解它的实现思路 |
| 每周 | 读一篇 GDC 演讲摘要(GDC-Index) |
| 每周 | 逛一次 80.lv 或 Real-Time Rendering 博客 |
| 每月 | 精读一个开源渲染器的一个子系统 |
| 每季度 | 复现一篇 Siggraph 论文的 Demo |
| 每年 | 参加一次 Game Jam 或 Ludum Dare |
总结
TA 的学习材料不缺,缺的是顺序和判断力。上面这套入口的核心逻辑只有三条:
第一,先有地图再进细节。GameDevMind 和 Game-Programmer-Study-Notes 解决的是「知道有什么」,避免在一个局部技术点上过度投入。
第二,必须亲手写过一遍渲染器。tinyrenderer 和 herebedragons 这类项目的作用不是学知识,而是把「API 调用」翻译成「GPU 上真实发生的事」。这一步跳过去,后面所有优化和效果都会变成背结论。
第三,输入要持续且低摩擦。日常习惯表里的每一条都很轻,但它们决定你能不能在一年后还跟得上行业变化——尤其是 GI、虚拟几何、神经渲染这几条迭代最快的线。
素材与资产类资源(测试模型、PBR 贴图库、HDRI、DCC 插件)另起一篇整理,见 Base-技术美术素材与工具库。