跨越藩篱,超越极限:最新加速引擎技术扫描

技术空间

如何在桌面、影片和游戏中表现出更快速的反应和更真实的视觉效果,长期以来都是IT业界寻求突破的对象,为此,无论是以微软为代表的软件厂商,还是以AMD、NVIDIA、Intel为代表的硬件厂商,都在为此孜孜不倦地努力,一些新型的加速引擎(Acceleration Engine)技术不断推出。特别是在最新的Windows 7系统中,多种加速引擎已被广泛使用,凭借其增强的能力,在图形设计、视频编解码、流媒体播放、游戏制作、硬件优化等方面都成为最佳的解决方案。

Win 7引入全新2D加速引擎

1. 2D引擎加强文字显示

在大家常用的文字、图像领域,一些2D加速引擎被广泛应用。众所周知,在实际应用中,液晶显示器会因显示分辨率不能实现点对点而出现字体发虚的问题,因此在Windows XP/Vista中,微软引进了ClearType技术,让字体像素边缘的RGB各个次像素都发光,通过增强桌面字体边缘的平滑度来使字体更清晰。而在Windows 7中,微软继续对ClearType进行了改进,它通过引入基于ClearType字体渲染的新型API(应用程序编程接口),特别加强了GPU在文字显示中的作用。

提到ClearType就不得不说WDDM(Windows图形驱动标准)。以往的字体显示基本不需要显卡参与,而在新系统中这种局限正被改变。当然,要想让操作系统能显示出Aero效果或更好地实现ClearType,就需要借助GPU,而此时显卡驱动支持WDDM是必需的。由于Windows 7和Vista都是能直接利用GPU的操作系统,其桌面显示以及渲染可在操作系统和GPU间通过WDDM来协调并直接交互——如果显卡性能强劲,那么应用程序会有比较出色的视觉效果;如果显卡性能一般,那么WDDM就会自动调低应用程序的显示效果。

由于Vista在市场里的失势,Vista里的WDDM 1.0也并没有在实际应用中获得很大反响。而Windows 7里的新版WDDM 1.1相比老版带来了更好的稳定性和性能,可为用户提供更好的Direct2D硬件加速,以及二维几何图形、位图、文字抗锯齿等应用,并让GPU的多任务处理在Windows中成为可能。

2. 硬件加速实现抗锯齿

通过Windows 7中集成的API,GDI(图形设备接口)将直接在显卡的显存中进行渲染,这将极大地降低系统内存的消耗并让图形呈现速度加快。同时,为了强化2D效果,Windows 7还带来了新的API——Direct2D和DirectWrite。

Direct2D是即时渲染2D图形的硬件加速API,它建立在DX10.1的MSAA多重采样抗锯齿技术基础上,它在二维几何图形和文本方面有着较高的性能和质量,而且Direct2D还可在GDI和Direct3D之间进行互操作。

DirectWrite是一种新的文本渲染系统,用于在D3D/D2D目标上渲染ClearType文本,配合Direct2D利用GPU进行加速。它增加了子像素渲染、子像素加X轴方向/Y轴方向抗锯齿渲染两种渲染模式,而传统GDI的渲染就只有X轴方向抗锯齿渲染。DirectWrite可提供更高质量的文本呈现,具有独立分辨率的字体轮廓,可更好地提升桌面2D图像的渲染效果,带来硬件加速文字显示和抗锯齿效果。

38-d19-01.jpg
DirectWrite的技术架构
38-d19-02.jpg
通过DirectWrite(右图)渲染的文字边缘比GDI更平滑

DirectX 11的3D加速引擎

1. DX 11处处优化 GPU

Windows 7最大的特点之一还在于引入了新一代的API——DirectX 11。它除了集成有Direct2D、DirectWrite之外,还有DXGI(DirectX图形基础构造),用于管理设备和GPU资源以及提供DirectX和GDI之间的交互性。同时还整合了用于渲染3D图形的Direct3D 10/10.1和Direct3D 11,后者更新,支持下一代GPU。

通过DirectX 11中的Compute Shader(计算着色器)将使GPU具有更好的并行处理能力。特别是在拥有多个GPU的系统中,DirectX 11中的Multi-Threading多线程技术,可在API底层对多个GPU进行优化,减少对驱动和游戏渲染模式的依赖,也有助于提升多个GPU并联的工作效率,降低驱动开发难度及性能损失。而在渲染效率方面,TessellATIon(镶嵌化技术)让程序员只需要简单勾绘一个轮廓,便能自动对其进行贴图拆嵌,可大大提高渲染速度以及开发效率。

2. 统一通用计算标准

在DirectX 11中,最重要的还是Compute Shader,它是一种包含线程间数据通信、随机访问和流式I/O操作单元等组件的3D图形加速引擎,能加快和简化图像后期处理。众所周知,Intel、AMD、NVIDIA、IBM等厂家纷纷推出了自己的通用并行计算平台或理论,如NVIDIA的CUDA、AMD的GPGPU、Stream等,为此展开了激烈的竞争。但是这种标准林立的情况无疑将加大程序或程序员适应不同厂家硬件的难度,增大软件开发的工作量。为此,在使用更广泛的DirectX图形领域,Compute Shader的面世将改变这种乱战局面。

程序员可以直接将GPU作为并行处理器加以利用,将复杂的数据结构交给Compute Shader后,就能直接运行各种通用算法。GPU不仅具有3D渲染能力,也具有其他的加速运算能力,这就是我们说的GPGPU概念和物理加速运算,而且多线程处理技术使游戏更好地利用了系统的多个核心。为此,程序员可通过Compute Shader加速引擎来实现像素渲染引擎无法实现的高级特效,如A-Buffer缓存取样技术,可以很大程度增加抗锯齿以及无规则透明度的性能。还可以带来更先进的Deferred Shading(延迟着色)技术、卷积运算、FFT(快速傅里叶转换)以及区域求和表算法。

3. Compute Shader增强GPU应用

Windows 7内置的GPU加速功能基于DirectX 11中的Compute Shader通用计算技术,在一段海洋Demo中,实时计算大规模波浪动态效果需要庞大的计算量,如果用传统的模拟算法来实现这一效果,渲染速度将难以让人接受。而使用Computer Shader技术,API将能借助GPU强大的浮点计算能力进行加速计算,便能轻易完成大量的FFT转换,极大地提高波浪生成速度以及画面质量。据测试表明,借助Compute Shader,DirectX 11可以提供最多三倍于DirectX 10.1的加速性能,特别是在基于屏幕空间的环境光遮蔽(SSAO)中,它可以使用更少的工作流程来处理大量数据流,并减轻纹理单元读取数据的工作压力。

另外,Compute Shader的优势在于可与NVIDIA的CUDA实现无缝结合。由于Windows 7支持GPU转码加速,在Windows 7的资源管理器中,把一段1080P的高清视频拖曳到第三方播放器,转码过程就自动开始。在NVIDIA离子平台上,转码只需要大约90秒钟便可完成,而在不支持加速的Intel集成GPU平台上,耗时长达六七分钟。

38-d19-03.jpg
DirectX 11将极大地提高GPU和CPU的协调运算能力
38-d19-04.jpg
模拟的动态海洋Demo展示了DirectX Compute加速性能的强大

发展加速引擎乃必然

加速引擎和通用计算已成为领导性软硬件厂商争夺的焦点,在硬件领域,AMD和NVIDIA等厂商都推出有相关的技术,并确保自己的产品能全面兼容DirectX Compute。在这方面,NVIDIA表现得更为积极主动,为此,它在2009年SIGGRAPH大会上推出了用于在多个GPU上提升性能的CompleX引擎、用于实时光线追踪的OptiX引擎、用于实时制造超逼真物理效果与环境特效的PhysX 64位引擎等一系列的API加速引擎。

其中,CompleX是一款场景加速引擎,可将单个GPU超常发挥实现大规模场景的互动性,不需要拆解便可直接访问大规模数据。例如,与在单个GPU上运行相比,基于CompleX的应用程序如果在一台Quadro Plex系统的四个GPU上运行,一般可实现15至25倍的性能提升。而使用OptiX加速引擎,从前需要耗费数分钟的软件操作现在只需要几毫秒即可完成,从而让程序员能够在标准硬件上交互地检查真实场景内的光照、反射、折射以及阴影的效果。

38-d19-05.jpg
加速引擎将为各种游戏及视频带来更佳的光影及图形效果

后记

随着Windows 7上市,各种支持DirectX 11规范的显卡面世,Windows 7+DirectX 11时代正悄然到来,对于普通用户来说,Windows 7除了可为我们带来更多的新特性和更好的易用性之外,还有更高的GPU利用率。在Windows7中,GPU不再仅用于图形渲染,GPU与CPU将更有效地组成整合或协同处理环境。而正是这种改变,将为各种应用带来前所未有的加速引擎体验,从而能让用户在视频播放编辑、文本照片应用、3D网页浏览、设备互动、游戏效果等方面获得更好的视觉和互动体验效果,让工作、娱乐变得更简单方便。

对于专业应用来说,加速引擎让开发人员能够轻松地将极具价值的高性能整合到自己的应用程序中,在Compute Shader的帮助下,程序员可直接将GPU作为并行处理器加以利用。由此,GPU将不仅具有3D渲染能力,也具有其他的加速运算能力,让专业用户缩短开发时间、提高工作效率。而从整个发展趋势来看,目前正逐步变热的各种加速引擎不会只是纸上谈兵,它们将在现在及未来切切实实改变我们的应用。