决战性能之巅!NV双芯旗舰GTX590评测
华丽图形画面和DirectX API的进步相伴相生。几乎每一次的版本升级,都会带来一个或几个让玩家牢记心中的核心级的技术进步,比如DX9C带来的HDR效果,DX10带来的体积光。玩家们甚至可以说,出现了HDR效果的就是DX9C游戏,出现了体积光的则是DX10游戏。美轮美奂的即时渲染画面和DirectX API是分不开的。
而图形API世代交替对于图形厂商来说,既是机遇也是挑战。DX9让9700成为经典,让5800跌入低谷;DX9C让6800风光无限,让X800暗淡无光;DX10成就了8800的霸主地位,让HD2900一败涂地;DX11则让HD5800抢得先机。图形硬件和DirectX API也是息息相关。
希望对显卡和游戏有深入研究的朋友,一定不能错过这一章,在这里,我将带大家了解,过去的十年中,DirectX API究竟给我们带来了什么,而图形芯片厂商为什么对它如此奉为纲领!
5.1 DirectX10 - DirectX 3D发展史
在图形编程API出现之前,三维程序直接向图形硬件发送图形命令来完成绘制工作。虽然这样绘制效率相当高,但是程序中要应对各种不同硬件上的不同命令,这使得开发工作十分困难,且程序中很容易出错。当越来越多不同的图形硬件冒出来的时候,这就成了一件十分不能忍的事。
于是便出现了像DirectX和OpenGL这样的图形API。它们在图形硬件和应用程序之间架起了一个中间层,这样,应用程序可以使用统一的图形编程代码,而对底层各种硬件的适应,则由图形API来完成。这就将游戏程序员们从与大量的图形硬件交换意见的恶梦中解救出来,使他们能够将精力集中在“制作伟大的游戏作品”上面。
作为泛用性底层API,DirectX让市场上原本杂乱的方案趋于统一。凭借微软自身强大的影响力以及其对图形编程领域的认知,DirectX不断将图形领域的成熟技术引入到桌面。虽然微软未必是一个被所有人所喜欢的企业,但他在推动图形发展方面做出的卓越贡献却有目共睹的。
DirectX中应用在3D图形方面的特定DirectX API即Direct3D,这也是DirectX中最重要的部分。不过,DirectX 3D得到广泛应用是在DirectX 6.0之后:
DirectX 6.0:加入了双线性过滤、三线性过滤等优化3D图像质量的技术,加入环境影射凹凸贴图,使3D游戏的画面更具有真实感。
DirectX 7.0:最大的特色就是支持了T&L,中文名称是“坐标转换和光源”,3D游戏中坐标和灯光的转换工作从此由CPU转交给了GPU,比DX6.1性能提升20%。这也成就了nVIDIA GeForce 256与ATi Radeon 256的辉煌,令3DFX彻底退出市场竞争。
DirectX 7.0a:增强了力反馈游戏控制设备的性能和兼容性。
DirectX 7.1:与Windows Millennium一同发布。
DirectX 8.0/8.0a:支持Shader Model 1.0和1.1,从此在显卡中引入可编程像素着色器(Pixel Shaders)和顶点着色器(Vertex Shaders)的概念,同时应用在Xbox游戏机中。同硬件T&L仅仅实现的固定光影转换相比,VS和PS单元的灵活性更大,它使GPU真正成为了可编程的处理器。
DirectX 8.1: Pixel Shader升级到1.2、1.3、1.4版,可以支持最高每时钟28指令执行,其中1.4版当时仅ATi Radeon 8500显卡支持。
DirectX 9.0 Shader Model 2.0: SM2.0的shader性能更强,支持最高96指令的pixel shader长度,同时DirectPlay和一些音频方面也有大幅提升。
DirectX 9.0 Pixel Shader 2.0b: ATI Radeon X600/700/800系列显卡首先采纳,开始支持更多指令(最高1536)和更多临时寄存器(32相比之前为12),同时还加入新的贴面寄存器(facing register)和几何实例(geometry instancing)的支持。
DirectX 9.0 Shader Model 3.0:支持更多指令,支持指令的流量控制和动态分支,从而使得编程人员可以在shaders中加入循环操作,使得编程更加容易,首次被Geforce 6800显卡采用。