大学生 | 想当图像程序员,却苦于找不到途径?过来人告诉你该从哪里入手!

大学生 | 想当图像程序员,却苦于找不到途径?过来人告诉你该从哪里入手!

不论你是刚完成学业的新人,还是已经在行业中试水不同角色的老手,希望本文能够让你获知成为一名图像工程师需要具备的知识。

了解硬件

了解将执行你代码的硬件优势和弱点对于任何程序员来说都很重要,但它却是图像工程师的必需技能。让你的游戏看起来美观很重要,但要让这些精致的效果以目标帧率运行却是一项更为棘手的任务。

当然,寄希望于你了解基本硬件的每一个细节也太不现实了(对于刚上任的新人来说尤其如此),但在我看来,你至少要比较清楚制作3D模型涉及到哪些技能。 

这一领域的求职者应该知道普遍的GPU管道阶段(例如,顶点和像素着色器,光栅化程序等),了解它们的功能,以及它们是否可编程、配置或修复。

通常情况下,我们有许多方法可以执行一个渲染效果,所以很有必要知道在特定的目标设备上最好使用哪个解决方案。

没有什么比因为GPU并不能很好地支持一个必要功能而要求美术人员调整其所有现成资产的情况更糟糕的了。

例如,我目前正在开发的一款游戏瞄准的是桌面电脑以及移动设备,这一点很重要,因为移动GPU的性能特点与桌面电脑极为不同。我们的团队在制定场景复杂度以及特效类型的决策时就要考虑这些不同点。

了解更多关于GPU的一个好方法就是去看看《Real-Time Rendering》(第三版)的第18章,因为它包含了关于Xbox 360、Playstation 3和Mali(移动)渲染构架的详细概况。

优秀的数学能力

渊博的三角法,线性代数甚至是微积分知识对于图像程序员来说极为重要,因为这一职业的许多日常工作就涉及到多种复杂程度的数学问题。

我当然希望求职者了解圆点和向量积产品,以及它们在计算机图像中的作用。除此之外,了解矩阵内容也很有必要,因为调试一个渲染问题可能有必要手动“分 解”一个矩阵,以便鉴别错误值。

例如,不久前我就不得不修复我们动画系统的一个问题,并且纯粹是通过查看结点矩阵找到了问题的根源。

在我看来,求职者应该能够分析性地计算射线与平面之间的相交情况。此外,我还希望每个渲染工程师都能够轻松获得反射向量。

我们可以在网上找到许多相关资源。《3D Math Primer for Graphics and Game Development》一书就很好地解释了许多关于向量、矩阵和四元法等相关话题的基础知识。

我强烈推荐大家在纸上运算而不是查看现成的方案来解决这些 问题。这个过程的确很有趣,所以你不妨自己动手一试。

对计算机图像的激情

理想的求职者应该能够跟上最新的计算机图像发展速度,对于这个不断而迅速发展的领域来说尤其如此(比较一下10年前和今天的游戏图像保真度就清楚了)。

这方面有许多有趣的调查报告,开发者演讲和技术博客(你可以在网络上找到),所以你应该很容易找到自己感兴趣的内容。

当然,执行一个算法就是了解它的最佳方法,它还可以成为你面试中的谈资。编写很棒的图像样本也有助于锻练你的技能,并且这个过程也实在有趣。

如果你想最大化自己成功求职的机率,就要确保投入了一定时间将样本制作得更美观。你可能执行了最有效的细分曲面算法,但如果人们看不到效果就不会产生什么深刻的印象。

创造令人愉悦的图像是这个职业的一个重要部分,所以最好还要证明你的技术过硬。

如果你在学习C/C++的过程中遇到了问题,可以来加入小编的企鹅圈问小编哦~小编很热情的(●’◡’●)

性能分析和优化

像程序员的职责之一就是分析游戏,以便确定和移除其中与渲染相关的瓶颈。如果你才刚入行,我也不会寄希望于你在此领域拥有大量的实战经验,但你应该知道与CPU和GPU相关的区别。

理想的求职者至少要能够使用诸如PIX(DirectX SDK的一部分)、gDEBugger或英特尔的GPA等图像分析工具。

这些应用都是免费的,有助于你进一步查看GPU内部的情况,隔离漏洞(注:例如在 绘制几何体时出现的不正确的渲染状态)以及鉴定性能问题(例如纹理延迟,着色器运行缓慢等)。

总结

图像程序员的工作很棒,因为它与产品的视觉外观直接相关。游戏的外观(如预告片,截图等)通常决定玩家对产品的第一印象,对我个人来说这是个十分愉快的体验。

说实话,你无法每天都编写出色的着色器。你应该准备从事其他的任务,例如数据压缩(如纹理、网格、动画)

数学和几何问题(如选择,相交计算)以及大量分析和优化工具。后一项任务尤其具有挑战性,因为GPU及其相关驱动器无法调整。

总而言之,成为渲染工程师需要大量的专业知识,它当然并不是在游戏行业立足的最便捷方式,但如果你对计算机图像很感兴趣,也许它就是你命中注定的选择了。

上一篇:深度学习如何选择GPU?


下一篇:TensorFlow 从入门到精通(10)—— GPU模型训练和卷积神经网络与应用