要成为一名实时图形程序员,该学什么
实时图形程序员的角色,本质上是一个人身兼两份工作:
1. CPU 端 —— 学习显式图形 API(DirectX12、Vulkan、Metal)以及引擎编程,负责资源加载和支持性任务。
2. GPU 端 —— 现代光照和着色背后的数学原理、渲染技术(阴影、环境光遮蔽、后期处理),以及对 GPU 性能的理解。
同时掌握两者极其困难。如果想专注 GPU 端(#2),先用更简单的 API 或引擎,比如 OpenGL、WebGL、DirectX11 或现有引擎。如果想专注 CPU 端(#1),就埋头编码直到屏幕上出现第一个三角形、然后一个网格……暂时不用管画面好不好看。

从路径追踪开始
对于 GPU 端(#2),从路径追踪入手:《Ray Tracing in One Weekend》(免费在线书籍,raytracing.github.io)。路径追踪是电影级渲染的底层技术,实时渲染中的各种技巧都是在向它逼近。
然后学 PBR(物理基础渲染)
PBR 是一套"有原则"的渲染框架——遵循规则就能得到可靠的结果。在 PBR 出现之前,每个项目都用随手拼凑的光照方程,换一个光照环境就崩。PBR 让素材在任意光照下天然好看。推荐学习路径:先看 learnopengl.com/PBR/Theory,再读 Filament 文档(google.github.io/filament/Filament.md.html),最后啃那本经典的 PBRT 图书(pbrt.org,免费在线阅读)。

作品集
必须在 GitHub 上有可分享的源代码。理想的作品集包含:
一个类似引擎的渲染器——能加载模型和纹理,用 PBR 光照实现实时渲染,附带阴影、景深、面光源、色调映射等效果。使用 C++、DX12/Vulkan。
一个路径追踪器——能生成照片级真实感图像。加分项:它是同一引擎的一个模式,用来验证实时的 PBR 渲染与参考路径追踪结果是否一致。
额外加分项:能解释两者的渲染差异出在哪里,以及你打算实现什么来弥合这个差距。
需要的数学知识
线性代数(矩阵乘法、叉积、点积)、基础三角学、少量微积分。你能用到的数学量是没有上限的。
编程语言
C++ 是游戏开发的行业标准语言。Rust 有小幅增长但尚未成为主流期待。WebGPU 在兴起,但相关工作职位还很少。着色器方面,HLSL 最为普遍,部分团队使用 GLSL。
关于机器学习的看法
作者认为,目前机器学习在大多数被营销的场景下仍然"不足以胜任"。作者用它来讨论数学、论文和算法(这些容易验证),但不用它来编程——如果必须理解 AI 生成的代码,那不如自己写。作者觉得"你能从这份代码里找到 bug 吗?"这种提问作为零成本的完整性检查很有用。作者相信人类级别的 AI 终会出现,但不一定是在自己有生之年。
出处:What To Learn To Be A Real Time Graphics Programmer — Demofox Blog