1. 引言
多年以后,面对图形处理器(GPU)在人工智能、加密货币、高性能计算、自动驾驶等多研究领域的广泛应用,如今的游戏发烧友们是否会回想起,1999年Nvidia发布专业游戏显卡GeForce256时那个炎热的夏天?
GeForce256发布以后GPU一词才被大众所接受,实际上1994年索尼发布PS1的时候就提出了GPU的概念,当时使用的是由东芝为索尼设计的GPU。
而后来在2002年ATI(已被AMD收购)提出的VPU(Visual Processing Unit)一词则在时代的浪潮中消失无踪。
从GeForce256发布至今的21年时间,GPU实现了从PC游戏时代到AI时代的巨大跨越。本文将和大家一起揭秘GPU为何能够撬动计算机图形学和人工智能这两个博大精深的领域。
2. GPU与计算机图形学
今年3月18日,国际计算机学会ACM官方公布了2019年度图灵奖(计算机界的诺贝尔奖)获得者Hanrahan和Catmull,以表彰他们对3D计算机图形学的贡献。
Hanrahan提出的renderMan很大程度上对GPU产生了影响。例如着色器(Shader)一词的出现,最先是由Pixar与1988年五月发布的renderMan接口规范中提出。
renderMan技术制作了一系列成功电影,其中包括《阿凡达》、《玩具总动员》、《泰坦尼克号》等。
另外,Hanrahan和他的学生还开发了一种用于 GPU 的语言:Brook,并最终催生了 NVIDIA的CUDA。
事实上,计算机图形学是一个广泛的学科,其中包括:
- 物理模拟:涉及各个物理分支相关数学。
- 模型处理:微积分,线性代数、微分几何、优化理论。
- 渲染:微积分、概率、光学中相关数学。
而我们的GPU,正是用来为计算机图形学中实时图像渲染加速的。
GPU的硬件设计上引入了图形管线,使得各任务可以通过流水线进行并行处理。
同时通过可编程的着色器,使得GPU硬件能够根据图形学算法更好的被使用。
通过下一节我们可以详细的了解到什么是GPU图形管线和可编程着色器。
2.1 GPU图形管线
GPU图形管线共分为三个部分,分别是应用程序阶段、几何阶段、光栅化阶段。
我们在最终在屏幕上看到的画面,就是3D模型经过这三个阶段渲染后得到的。
- 应用程序阶段
图形渲染管线概念上的第一个阶段,开发者通过程序的方式对图元数据等信息进行配置和调控,最后传输到下个阶段。
- 几何阶段
几何阶段分为模型视点变换、顶点着色、裁剪、屏幕映射等步骤。
模型视点变换 :由每个模型自己的局部坐标系转换到世界坐标系,然后到视觉空间,通过将每个模型的各顶点坐标与相应的变换矩阵相乘来实现。
下图是一个模型视点变换的实例,每个建模好的立方体的坐标是以原点为中心的局部坐标系,可以通过矩阵变换将各模型放到同一个世界坐标系中。