当漫威超级英雄大片《死侍》热潮横扫全球,GPU渲染在电影制作与动画领域的应用正在不断走向成熟。正是在《死侍》的制作中,国际知名的Blur Studios借助GPU渲染,高效率地打造了极为接近最终成品的电影预演短片。本来《死侍》并未得到电影投资方的青睐,但短片流出之后却受到了网民的热情追捧,这让制片方最终决定投资并拍摄这部电影。这只是GPU渲染应用的一个小小例子,却能让我们推断出GPU渲染在商用渲染市场中将大有作为。
作为国内发展最早、现今规模最大的商用渲染农场,蓝海创意云•渲染(http://render.vsochina.com/)将在今年全面推出GPU渲染服务,并期望与现有CPU渲染业务相融合,为用户提供完善的一站式渲染解决方案。借此良机,本文将回望GPU渲染的发展历程,对GPU渲染做一次客观的解读。
写在前面 GPU的诞生与发展历程
为什么要有GPU?在我们论及GPU渲染的种种之前,这是一个无法绕过的问题。真正的GPU,也就是Graphic Processing Unit(图形处理器),其概念最早由NVIDIA在1999年发布GeForce 256图形处理芯片时首先提出,核心技术有硬体T&L、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。
NVIDIA GeForce 256
此前,所谓的显卡,虽然从20世纪80年代就已出现,却指的是显示适配器(Display Adapter),仅能用于简单的文字和图形输出,在处理3D图像和特效时主要还是依赖CPU。GPU的出现,使得显卡减少了对CPU的依赖,尤其是在3D图形处理时取代了部分原本CPU的工作。显而易见,GPU的诞生及此后不断革新的技术演进,是为了应对日益复杂的图形计算需求,达成更加逼真、更加生动的实时感官体验。
初期GPU标识:硬件T&L功能
简单来讲,GPU的主要工作就是完成3D图形的生成,将图像映射到相应的像素点上,并且对每个像素进行计算确定最终颜色,最后完成输出。
初期GPU的标识是硬件T&L(Transform & lighting,坐标转换和光源)功能。GPU通过硬件T&L实现大量的坐标和光源转换,CPU不必再计算大量的光照数据,直接通过显卡就能获得更好的效能,同时3D模型可以用更多的多边形来描绘,得到更加细腻的效果。
GPU的空前发展:Shader出现
随着更加复杂多变的图形效果的出现,图形处理生成多边形的过程中需要加上许多附加运算,比如纹理信息、散光和映射光源下的颜色表现等等。这就对GPU提出了更高的要求。2001年微软发布的DirectX 8带出了Shader Model(渲染单元模式),Shader(渲染器/着色器)由此诞生。这是一种基于GPU图形流水线的具有更高效率和灵活性的方案。
Shader架构
Shader从本质上说是一段能够针对3D图像进行操作并被GPU所执行的图形渲染指令集,其中最主要的就是Vertex Shader(顶点着色器/顶点单元,VS)和Pixel Shader(像素着色器/像素单元,PS)。通过这些指令集,开发人员就能获得大部分想要的3D图形效果。相比T&L实现的固定的坐标和光影转换,VS和PS拥有更大的灵活性,使得GPU在硬件上实现了顶点和像素的可编程,反映在图形特效上就是出现了动态的光影效果。
A家与N家的竞争:统一渲染架构大发展
Shader出现后,为进一步提高效率,先后诞生了支持多条渲染管线并行处理的SIMD(Single Instruction Multiple Data,)单指令多数据流架构,负载更加均衡的混合型SIMD设计,并最终促成了统一渲染架构(Unified Shader Architecture)的出现。在这个过程中,两家厂商扮演着重要的角色,分别是ATI(以下简称A家)和NVIDIA(以下简称N家)。
ATI VS NVIDIA
2005年, A家与微软合作发布的XBOX 360游戏主机采用了Xenos图形处理器。Xenos是A家第一代统一渲染架构。
2006年,N家发布G80核心的GeForce 8800 GTX显卡,掀开了桌面统一渲染GPU架构的序幕。G80采用全标量设计,其革命性的多指令多数据架构(MIMD),完全区别于传统GPU的SIMD架构,影响了日后的数代显卡。
G80流处理器(SP)架构
2007年,AMD(此时A家已被AMD收购)正式发布基于桌面统一渲染架构R600的Radeon HD 2900 XT(以及其他低端型号的HD 2000系列),采用5D超标量架构。R600相对G80保守一些,因为在它身上仍能看到传统GPU采用SIMD架构的影子,但与传统的GPU架构相比也是脱胎换骨的改变。
R600超标量架构