1983年,黄仁勋大学毕业后,20岁便加入了AMD公司担任芯片工程师。两年后又加入了另外一家位于硅谷的创新公司巨积公司(LSI Logic)。因为业绩出色,他多次获得晋升。在巨积公司任职期间,黄仁勋结识了两位太阳微系统公司的芯片设计师,普里姆和马拉科夫斯基,并且通过与他们合作促成了太阳微系统公司在1989年推出的Sun GX。Sun GX是三维图形处理器。以前,一个设计师如果要设计一个汽车模型,最初给出的只是简单的“线框骨架”,而Sun GX可以在这个框架基础上,迅速绘制汽车金属表面、车漆纹理等,帮助设计师预览模型,并在此基础上进一步调整外观或结构。
而那两位芯片设计师有一个想法,就是把Sun GX移植到个人电脑上。因为个人电脑有一个特别的应用:游戏渲染。渲染(Rendering)是游戏视觉的核心技术。电脑游戏中的那些精美的动画,包括日夜交替的光影效果等等都是通过实时渲染来实现的。渲染所需要的计算量很大。当时个人电脑的中央处理器(CPU)无法负担这样的计算量,因此常用的做法就是在电脑主板上设置一个特定的插槽,插槽里插的是专门为渲染任务外置电路板,上面的核心部件就是一个图形芯片,来执行渲染的任务。
我们现在都知道,这个电路板被业界称为“图形加速卡”,又叫显卡。
然而,他们这个提议却遭到了太阳微系统公司管理层的拒绝。这两人决心自己动手开发这款面对普通用户的电子游戏芯片。然而,两人知道自己都不擅长管理业务,于是在1992年,他们找到了之前合作过的黄仁勋。经过很长时间的思考,黄仁勋终于说服了自己。1993年,黄仁勋与这两人一起成立了英伟达公司。黄仁勋担任CEO,普里姆出任CTO,马拉科夫斯基则担任工程副总裁的职位。
在英伟达成立之后,公司迅速开始开发其首款显卡产品NV1。为了与市场上其他显卡产品区分开来,他们在NV1的设计中采用了一种与主流不同的渲染方法。为了更好地理解NV1的技术特点,我们先简单介绍一下图形渲染的基本原理。游戏设计师需要为每个游戏中的对象构建三维模型,但玩家在电脑屏幕上看到的形象是二维的。因此,渲染的核心任务是将三维模型的表面信息投影到二维平面,并计算每个像素点的颜色。这些颜色会综合考虑光源、材质等复杂因素。
不过,直接计算三维模型表面上每个像素点的渲染信息是非常耗时且复杂的。所以为降低计算量,行业普遍采用一种高效的分解方法——三角形渲染框架。这个框架的核心思想是将三维模型的表面分解成一个个小的三角形。你可以打开文稿看一下对应的图。为什么使用三角形呢?原因在于三角形是构成平面的最简单几何形状,同时计算机对三角形的处理效率极高,相关优化算法也十分成熟。然后在渲染的时候,依次执行下面几步。
第一步叫做顶点着色(Vertex Shading):处理三角形的顶点信息,这一步的主要工作是计算3D模型中每个三角形顶点在二维屏幕位置,然后根据光源的位置、类型以及材质的反射特性,计算每个三角形顶点的光照强度和颜色。
第二步叫光栅化(Rasterization)。刚才只是得到了三角形顶点在二维屏幕的位置和颜色,这一步是根据刚才的三角形顶点信息,确定三角形内部所有的点在二维屏幕的位置。
第三步叫做像素着色(Pixel shading)。我们找到了一个三角形顶点的位置以及该三角形内部的像素位置,那么下一步就是要对这些像素进行着色。通常,这一步通过插值算法,根据三角形三个顶点的光照、颜色等信息,计算出来该三角形内部所有像素点颜色和纹理信息,从而生成高质量的二维图像。这一步是由像素着色器(Pixel Shader)完成的。
刚才这个过程,你没记住也没关系,关键在于,我们可以看到,渲染本质上就是大量的数学计算。
然而,普里姆在设计NV1时,并没有采用基于三角形的渲染框架,而是采用了一种名为二次纹理映射(Quadratic Texture Mapping)的方法。这个方法通过二次方程直接处理曲面的形状和纹理,将纹理直接映射到复杂的弧形面上。和三角形的渲染方式相比,二次纹理映射的方法尽管要耗费更多计算资源,但是得到的物体和人物表面看起来更加平滑。
NV1于1995年秋季正式发售,此时,诸多热门游戏涌入市场,玩家对新显卡的需求激增,NV1销量表现良好,甚至超过了黄仁勋的预期,前景一片光明。然而,问题在NV1发布后不久逐渐显现出来。由于NV1采用的二次纹理映射方法和当时主流的基于三角形渲染框架不兼容,导致大多数游戏开发者无法顺利将游戏适配NV1。不兼容的问题在一些游戏中表现为渲染错误,比如角色可能会出现穿模现象,像是“陷入人行道”或“穿墙而过”等等。此外,由于图形驱动程序和操作系统之间的不稳定性,NV1在某些极端情况下甚至会导致系统蓝屏死机。这些都极大影响了用户体验,导致NV1的销量逐渐下滑,一些不满的顾客选择将显卡退回商店。
更为糟糕的是,1995年,微软发布了DirectX。一个统一的图形和多媒体API框架,其中核心组件Direct3D确立了基于三角形渲染的行业标准。由于NV1没有遵循三角形渲染标准,它无法很好地支持基于DirectX开发的游戏生态。行业迅速向DirectX标准靠拢,NV1的“不兼容”局面被进一步放大,其市场表现随之急转直下。
黄仁勋后来将NV1的失败称为“一场灾难”。更糟糕的是,当时英伟达已经基于NV1架构为下一代显卡进行开发。然而,这一架构的根本缺陷让英伟达面临生死存亡的危机。黄仁勋决定“壮士断腕”,放弃NV1的架构,直接跳过NV2,转向完全重新设计支持三角形渲染的NV3。
开发一款新芯片通常需要数年时间,而英伟达几乎没有这样的时间,因为英伟达的公司账户只能支撑运营三个月。面对如此严峻的形势,黄仁勋做出了一个当时异乎寻常的决定:他将最后的资金用于购买一台芯片仿真器,这是一种可以用软件模拟硬件行为的工具。借助仿真器,黄仁勋计划跳过昂贵且耗时的多个迭代和原型开发环节,通过仿真测试的数字设计文件直接用于大规模量产,这在当时几乎是闻所未闻的举措。
这是一场孤注一掷的赌博,但也是英伟达公司生存的唯一希望。黄仁勋后来坦言,当时自己心里对NV3到底能不能正常运作这件事也没底。他说:“成功概率五五开吧,反正我们公司也快破产了。”1997年春末,英伟达的新NV3芯片终于问世。首批芯片被交付进行内部测试。测试表明,NV3芯片运行流畅,图像质量大幅提升。黄仁勋赌赢了。NV3的正式产品被命名为Riva 128。Riva 128的表现受到高度评价。这款显卡每秒能渲染多达500万个三角形,成为最强大的3D图形加速器之一。在发布后的4个月内,这款显卡的销量突破100万张,直接帮助英伟达渡过了财务危机。
所以,之前的NV1,这款被寄予厚望的产品,原本代表了英伟达对“革命性设计”的追求,但却因偏离了行业标准而失败了。然而,NV3,这款在疯狂赶工中诞生的产品,却取得了成功。
这给我们的启发是,不能光从技术的角度来看自己是否领先,而需要同时考虑现有技术和主流兼容性的问题。许多公司,尤其是创业的小公司,如果一味强调自己的“技术领先”,容易忽视与主流兼容的问题,从而重蹈NV1的覆辙。
尽管NV3取得了成功,但是当时包括英伟达在内的所有显卡公司CEO的头顶,都悬着一把达摩克利斯之剑,这把剑来自当时的半导体巨头英特尔。这些CEO挥之不去的担忧是:随着英特尔CPU性能的不断提升,CPU会不会取代自己的显卡?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.