成为图形程序员需要学习什么
我经常被问到,要成为可被雇佣的图形程序员,人们需要了解什么。我觉得是时候做一个页面来链接,而不是每次都重新输入。在当前的LLMs(大规模语言模型)时代,我们正处于一个奇怪的时期。我认为目前的机器学习不会达到预期的 hype,并且在接下来的几年里,趋势将会稍微偏离机器学习。我认为一些投机者将转向量子计算,或者找到其他东西进行炒作。然而,机器学习本身在计算机科学工具箱中确实有其位置,所以学习它提供的拟合和优化技术是有价值的,在我看来。我制作了一个视频,您可以观看以了解底层技术,但是否值得学习则取决于您。游戏开发者的机器学习 https://www.youtube.com/watch?v=sTAqWRsEiy0 除此之外:现代呈现可以说是两份工作的结合。学习 CPU 方面 — 学习 DirectX12、Vulkan、Metal 或类似的现代“显式”API,以及支持加载资源和其他支持任务的引擎编程。学习 GPU 方面 — 现代照明和着色的数学,阴影、环境遮蔽和后处理效果等渲染技术。此外,了解 GPU 上什么是快及什么是慢,这样才能知道如何能使实时效果更好。一次性学习这两方面非常困难。如果您想专注于第 2 部分,则可以使用简单的工具来处理第 1 部分,例如 OpenGL、WebGL、DirectX11、某个引擎或类似的东西。如果您想专注于第 1 部分,则应该努力直到屏幕上出现第一个三角形,然后在屏幕上显示一个网格,等等,但别担心它看起来是否漂亮。第 2 部分的一部分是编写一个路径跟踪器。路径跟踪是电影渲染的方式,它是我们试图用现代实时渲染技术进行近似的东西。开始路径跟踪的一个很好的地方是这本在线免费书籍“周末一晚追踪光线”。很多人都用过。这本书易于理解,展示了如何制作逼真的渲染。 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 书籍“基于物理的渲染:从理论到实现”,它也可以在线免费获得: https://pbrt.org/ 您可能会想知道您需要了解什么数学。如果您完成上述项目,您将遇到需要知道的数学,但基本上线性代数(矩阵乘法、叉积、点积)、基础三角函数和一点微积分基本上就是您需要的。图形(以及游戏开发一般)的有趣之处在于,尽管您所需的数学量相对较少,但您可以使用的数学量几乎是无限的。同样,在算法上也是如此。您应该了解基本的抽象数据类型和算法,例如链表、哈希表、排序和搜索。通常情况下,最快的算法是最简单的。数组的速度远远快于链表。然而,了解更高级的算法概念可以在您真正需要一些新颖定制的东西时给予您帮助。在游戏开发中,C++ 是必须学习的语言。有些人使用 Rust,而很难判断 Rust 是否在逐渐增长,但它确实有一定的市场份额,但并不是人们期望您了解的标准语言。WebGPU 具有许多 WebGL 所没有的功能,并且它正在成为一个更严肃的平台,这使您可以使用 JavaScript 进行 CPU 部分的工作。尽管如此,我没有看到很多 WebGPU 职位发布,也没有看到很多 WebGPU 的内容在网络上。学习 C++ 似乎是 CPU 编程最重要的事情。对于着色器语言,hlsl 似乎是最常见的,但有些人使用 glsl。着色器通常会在多平台中转化为其他着色器语言。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡