ATI与NVIDIA的移动显示技术之争(一)

数码时尚

  ATi与NVIDIA作为两大台式电脑显示芯片的领导厂商,长久以来争相发布最新的显示芯片,早已经将人们的视线从Intel与AMD之间的CPU之争吸引了过来。这两大厂商又再次把目光投向移动市场,迅速针对笔记本电脑市场推出了一系列移动显示芯片。这次我们先来看看春风得意的ATi。我们先来看看ATi移动显示芯片中所采用的先进技术,正是这些技术的使用,笔记本电脑才可以真正拥有清晰的、足以与台式机媲美的显示效果。

  ATi显示技术

  1.SmartShader技术

  该技术是ATi为了在未来的显示芯片竞争中压制对手NVIDIA而研发的新技术,只在ATi的新款显示芯片中提供支持,这种新的渲染技术将硬件的渲染技术和软件程序(包括ATi的图形API和DirectX 8.1以及OpenGL)结合起来,以便于提供更真实、更复杂、更有效的视觉效果,其中包括可编程的像素阴影着色器(PixelShader)和顶点阴影着色器(VertexShader),这两种技术最早在DirectX 8.0中被引入,而ATi在新的SmartShader技术中将它们发挥到了极致。

  在ATi的SmartShader技术中允许在一个渲染过程中实现高于6个的纹理贴图,即使在显存带宽不高的情况下仍然可以实现非常复杂的特效;同时提供了更加丰富的指令集,软件开发商可以使用更少的操作实现一些常用的视觉效果;SmartShader还解决了早期难以使用硬件方式实现的使用数学方式操作诸如颜色以及光影和材质等效果。我们下面就分别来看看SmartShader中最为令人兴奋的两大技术──可编程的像素阴影着色器(PixelShader)和顶点阴影着色器(VertexShader)。

  所谓顶点着色器(VertexShader)其实是一套指令系统,它在构造几何图形时发挥着至关重要的作用。众所周知,电脑制作的三维图形在本质上不过是大量的所谓“顶点”(Vertex)构成的,每一个顶点都有一系列对应的参数,由ATi的SmartShader提供的顶点着色器为每一个顶点单独地设计了16个相互区别的参数,这些参数包括:顶点位置坐标、材质坐标、光亮参数、矩阵贴图的额外参数等,每一个顶点着色器程序可以包括128个指令,并可以使用最高存储96个固定参数和12个临时参数的寄存器。这样将足以制作出几乎任何复杂的顶点。图1是ATi官方提供的顶点阴影着色器(VertexShader)的结构图。

  最新的顶点阴影着色器则可以提供1024个流控制指令集,包括程序变形(Procedural Deformation)、皮质渲染(Fur rendering)、高级关键帧插入(Advanced keyframe interpolation)、阴影容量推出(Shadow volume extrusion)、镜头特效(Lens effects)以及高级矩阵贴图(Advanced matrix palette skinning)等技术。并支持多个渲染对象和加速阴影填充渲染,及支持每通道10位的高精度帧缓冲。这些将会使制作液体流动、动物毛皮和头发的渲染、通过镜头和水流映射而扭曲的物体等更加方便,而构造基于微粒的物体等三维造型也会更加逼真。从ATi官方提供的资料,我们可以看出使用了程序变形(Procedural deformation)指令,只需要简单的数学函数就可以实现极其逼真的物体变形效果,图2和图3是采用该函数制作的肥皂泡特效和飘动的布的特效。

  而采用阴影容量推出(Shadow volume extrusion)指令则可以制作出更加逼真的物体投影效果,顶点阴影着色器提供了一套简单的方法,以实现不同光源下构造物体在墙壁或其他表面上的投影,阴影是由光源到物体上的各个顶点之间的线条的延伸,直到物体表面的投影,顶点离光源越近投影区域就越暗(见图4)。

  像素阴影着色器(Pixel Shaders)与顶点阴影着色器(VertexShader)有些类似,不过其处理的对象不是顶点(Vertex)而是像素(Pixel)。像素的概念与顶点不同,顶点是用来构造几何物体,计算机图像输出来的图形都必须转化为二维的方式才可以在显示器上输出,因此像素对应的是二维的概念,而顶点则是三维的。在ATi的SmartShader技术中,允许通过6个不同材质的取样和操作来最终决定每一个像素的颜色,而取样的材质可以是一维、二维或三维的,每一个像素阴影着色程序可以包含22个指令,以及使用最多8个固定参数和6个临时参数的寄存器。图5是ATi官方提供的像素阴影着色器(Pixel Shaders)结构图。

  像素阴影着色器(Pixel Shaders)程序包括两个部分,第一部分是阴影地址(address shader),它包含处理材质坐标和地址的8个数学运算操作,在每个阴影地址执行前后最多可以取样6个材质。这样便可以方便地实现诸如材质参数的取样、改变阴影地址中的参数、使用改变过了的参数作为地址来抽取不同的材质,以及像素阴影可以根据从相关材质中读取的数值执行相关操作等功能,这些功能对于制作具有各向异性的灯光等特殊效果的环境非常有用。而第二部分称作阴影色彩(Color Shader),它包含8个指令,可以对先前抽取的参数进行混合、改变等操作来达到最后像素的输出效果。虽然DirectX 8.0使用不同的指令系统来操作阴影地址(Address Shader)和阴影色彩(Color Shader),但在Direct 8.1中,这两者已经开始使用同一套指令系统。图6演示了像素阴影着色器(Pixel Shaders)程序流程。

  最新的由SmartShader技术提供的像素阴影着色器将可以每次进行多达16个的纹理贴图或者数据流,每个像素阴影支持160个128位浮点精度的指令集,其中包括多光源像素渲染技术(Single Pass, Per-Pixel Rendering of Multiple Light Sources)、高级漫反射映射(Advanced Bump Mapping)、任意表面光照(Realistic lighting of any kind of surface)、不同属性材料表面穿插(Varying properties of a material across a surface)、微系统下的精确建模(Accurate modelling of objects with microstructure)以及水平映射(Horizon mapping)等。这些指令集的使用将可以大大地方便软件开发商自行定义灯光效果,并将更加广泛地用于制作诸如多纹理表面、冲撞映射以及其他的诸如眼睛里映射出来的物体等特效。早期的DirectX 8.0只支持12个这样的指令集,而DirectX 8.1增加到22个。ATi官方提供了采用多光源像素渲染技术(Single Pass,Per-Pixel Rendering of Multiple Light Sources)后的效果图(图7),该技术在针对6个材质进行取样后,可以通过一次渲染实现多光源在表面不平的物体上的光线反射效果,而光源可以是环境映射(提供逼真的反射效果)、点光源、聚光灯、炽热物体等。

  而高级漫反射映射(Advanced Bump Mapping)技术则可以在无须大量额外几何数据的条件下实现逼真的物体表面,图8演示了只是使用4个三角形进行渲染制作成的水的涟漪效果。

  ATi在高端的Mobility Radeon 9600上使用了最新版本的SmartShader 2.0,该版本支持DirectX 9和最新版本的OpenGL,因此具备更广泛的支持,如果这一技术得到主流软件供应商的支持,无疑将会对NVIDIA构成巨大的威胁。