成为图形程序员需要学习什么
摘要
一篇博客文章,概述了成为实时图形程序员所需的技能,涵盖现代渲染API、路径追踪、基于物理的渲染以及机器学习在游戏开发中的作用。
暂无内容
查看缓存全文
缓存时间: 2026/07/01 20:01
# 成为一名实时图形程序员需要学习什么
来源:https://blog.demofox.org/2026/07/01/what-to-learn-to-be-a-graphics-programmer/
我经常被问到人们需要掌握哪些知识才能成为合格的图形程序员。我觉得是时候做一页内容来作为链接,而不是每次都重新打字了。
我们正处于LLM的奇特时期。我认为当前形态的机器学习并不会如宣传般实现,未来几年,对机器学习的热情会有所降温。那些投机者可能会转向量子计算,或寻找其他可炒作和抛售的东西。不过,机器学习本身确实在计算机科学工具箱中有一席之地,学习它提供的拟合和优化技术还是有价值的。我制作了一个视频,你可以观看以了解底层实现细节,但你是否认为这值得学习,取决于你自己。
面向游戏开发者的机器学习:https://www.youtube.com/watch?v=sTAqWRsEiy0
除此之外:
现代渲染有点像一个岗位做两份工。
1. 学习CPU端——掌握DirectX12、Vulkan、Metal或类似的现代“显式”API,以及支持资源加载和其他辅助任务的引擎编程。
2. 学习GPU端——现代光照和着色的数学基础,阴影、环境遮挡等渲染技术,以及后处理效果。同时要理解GPU上什么快、什么慢,从而知道如何让实时渲染更高效。
同时学习这两方面非常困难。如果你想专注第2点,可以用更简单的东西对付第1点,例如OpenGL、WebGL、DirectX11、某个引擎或类似的。如果你想专注第1点,应该从屏幕上画出第一个三角形开始,然后是一个网格,以此类推,但不必追求画面美观。
第2点的一部分是编写路径追踪器。路径追踪是电影级渲染的方法,也是我们用现代实时渲染技术试图近似的目标。路径追踪的绝佳起点是一本免费在线书《Ray Tracing in One Weekend》。很多人用过它,非常容易上手,教你如何做出照片级渲染。https://raytracing.github.io/books/RayTracingInOneWeekend.html
第2点的另一部分是学习“基于物理的渲染”(PBR),这是一种应用光照(主要是镜面反射,说到底就是这样)的方法。PBR是“有原则的”,意味着只要遵循规则,就能得到好的结果。在PBR之前,人们用各种随机方程、调整和技巧来做光照。这导致一个资产在某种光照下看起来不错,但改变光照后就会变得过暗或像在发光。人们不得不为不同的光照条件制作不同的资产版本,耗费大量时间和精力。
PBR让你的资产默认在所有光照条件下都表现更好,节省了制作不同版本的时间和精力。这对我们行业来说是一个巨大的进步。即便如此,资产的创建时间、金钱和精力仍然是游戏开发中的一个主要瓶颈。
这个页面上的PBR部分(及其子部分)是PBR的绝佳入门:https://learnopengl.com/PBR/Theory
如果某天你觉得不够用了,想深入钻研,阅读Filament文档是下一步的好选择。深入学习PBR会涉及大量微积分和统计学知识:https://google.github.io/filament/Filament.md.html
再往后就是著名的PBRT书籍《Physically Based Rendering: From Theory To Implementation》,也是免费在线可读的:https://pbrt.org/
你可能想知道需要哪些数学知识。如果你做了上面这些事,就会接触到所需的数学,但基本上只需要线性代数(矩阵乘法、叉积、点积)、基础三角学和一点点微积分。图形学(以及游戏开发)有趣的地方在于,虽然需要的数学量相当少,但你能用到的数学量几乎是无限的。
算法方面也是如此。你应该知道基本抽象数据类型和算法,如链表、哈希表、排序和搜索。通常最快的算法是最简单的。数组比链表快得多。然而,了解更高级的算法概念在你真正需要一些新颖和自定义的东西时会有所帮助。
在游戏开发中,C++是需要学习的语言。有些人使用Rust,目前很难判断Rust的使用是否在增长,但它确实占据了一部分市场,尽管不是人们期望你掌握的标准语言。WebGPU拥有许多WebGL不具备的能力,正在成为一个更严肃的平台,让你可以用JavaScript完成CPU端的工作。不过我并没有看到很多WebGPU的招聘信息,网上WebGPU的内容也不多。从CPU端编程来看,学习C++无疑是主流。
对于着色语言,HLSL似乎最常见,但有些人使用GLSL。在多平台游戏中,着色器通常会被转译成其他着色语言。
我会保持这个页面更新,如果情况有变或有人问到这里没有覆盖的问题。
**关于Agent的ML扩展评论:** 我不认为当前的ML技术能胜任他们推销的大多数用途。不过,我确实通过和Claude讨论数学、论文或不熟悉的算法得到了实用。在这种情况下很容易判断它是否在编造,也很容易通过其他来源进行合理性检查。然而,我发现它对编程并没有太大用处,因为即使它完成了该做的事,如果不花时间去理解,我也不懂那些代码。既然要花时间理解,还不如我自己写。有些小地方我觉得有用,比如“你看到这个文件里有bug吗?”——如果回答是,我可以去调查;如果回答否,问一下也没任何损失。抛开这些技术细节,我确实相信有朝一日人类会制造出真正的人类级别的人工智能,然后超越它。我不知道这会不会在我有生之年实现,但我相信总有一天会发生——除非我们先把自己毁灭了。从这个意义上说,这个LLM时代就像是为日后“真家伙”到来做的彩排。希望我们能吸取正确的教训,在它来临时准备得更充分。
相似文章
@vivekgalatage: http://gameprogrammingpatterns.com/contents.html 这个令人惊叹的资源讨论了许多基础,从“计算机图形学如何…”
一条分享在线资源的推文,该资源涵盖游戏编程模式,包括计算机图形学和游戏引擎中常用的设计模式。
用500行纯C++实现软件渲染
本教程系列教你如何用500行C++从头编写一个软件渲染器,并解释现代3D图形API的内部工作原理。
@vivekgalatage: GPU Programming Fundamentals https://youtu.be/Cl2B_hmg4gA William Brandon, a performance engineer at Anthropic, outline…
William Brandon(Anthropic 性能工程师)的 GPU 编程基础讲座摘要,强调理解 GPU 硬件的流式多处理器(SM)结构是预测性能的关键,而非仅从线程块/线程的软件抽象出发。
@zostaff: https://x.com/zostaff/status/2065069139341742588
本文介绍了成为GPU/CUDA工程师的最优AI增强路径,重点介绍了薪资范围以及推理优化专家日益增长的需求。文章提供了现实的时间表,并强调了利用AI工具加速学习的重要性。
@ParamSiddh:作为AI基础设施工程师,请学习: - GPU/VRAM基础、量化与批处理 - vLLM/TensorRT-LLM / 推理优化
一条推文列出AI基础设施工程师必备技能,涵盖GPU基础、推理优化、分布式训练及生产部署。