标签:
微软亚洲研究院windows7最新技术创新成果gpudirectx11 |
分类: 技术 |
随着微软新一代操作系统Win 7正式面市,微软研究员们也欢欣鼓舞地庆祝这一时刻,因为在这备受瞩目的新产品中,倾注了全球许多研究员们多年的创新和研究。孵化于微软亚洲研究院的DirectX 11就是其中非常重要的一项技术发明。
作者:龚敏敏 网络图形组
随着Windows 7越来越快地奔向广大用户,它所带来的新特性也越来越为人们所知。其中,它有一个鲜为人知的特性——Windows 7自带了DirectX 11,支持名为DirectCompute的GPGPU(图形处理器通用计算)编程接口。也就是说,Windows 7成了第一个原生支持GPGPU的操作系统。有了对GPGPU的支持,Windows 7向众多的开发人员和用户开启了并行计算的大门。
逐步细化现完美
在DirectX 11的开发过程中,产品组的相关人员都在思考着,如何体现出GPGPU的强大威力,怎样才能向其他开发人员演示如何使用新的GPGPU接口?微软亚洲研究院网络图形组(简称IG组) 在GPGPU领域有着多年的研究,积累了大量的技术和经验。于是总部产品组的同事就很自然地找到了我们,想看看我们组有没有什么好的主意。
针对产品组提出的这一需求,很快,我们就提出了可以尝试把三角形细分算法搬到GPU上。细分算法在电影行业应用广泛。从早期的《玩具总动员》到最新的《冰河世纪3》,大屏幕上那些圆润精细的模型都少不了细分算法的功劳。对细分算法的分析可以发现,这个算法在传统上只能由CPU完成,因为它涉及到许多不规则的操作,需要串行地一步步执行。如果硬要用GPU来实现,就必须要涉及到大量的外部IO,降低了细分的效率。DirectCompute带来的新功能使得开发人员可以更灵活和高效地利用GPU,把那些不规则操作并行化,而不用任何多余的外部IO。这样一来,GPU就可以并行地全速执行细分。为了验证想法的呈现效果如何,没过多长时间,我们就诞生出了第一个原型demo。我们给这个算法起了个名字,叫iTess,意思是无限细分算法(infinity tessellation)。它可以把输入的粗糙模型进行自适应细分,得到更为精细的模型。后来,这个demo顺利地成为了DirectX 11 SDK的一个例子。下面的两幅图演示了细分算法的输入和输出。
你可以看到左图,输入的mesh比较粗糙,缺乏细节。右图,经过细分后的模型,精细了许多,更加栩栩如生。
图片压缩显身手
有了与产品组第一次成功的合作,他们又在新项目上寻求了我们的帮助。在计算机图形学中,传统的颜色分量是用0-255来表示的,因而只能表示出256种不同的亮度变化,范围很有限,称为LDR(低动态范围)图像。而新兴的HDR(高动态范围)图像可以表现出数以万计的亮度范围,在很大程度上弥补了传统方法的缺点。但是,随之而来的就是巨大的内存占用。自从《孤岛惊魂》第一次引入HDR以来,它在游戏等软件中的运用日益增加,如何压缩HDR数据已刻不容缓。为此,DirectX 11引入了新的纹理压缩格式,即用于压缩HDR图像的BC6H格式。
同样的,我们可以在左图中看到,LDR图像,对比度小,窗户部分显得灰蒙蒙的。右图,HDR图像可以表示出更大的亮度变化,经过调整后细节更为丰富。
压缩BC6H所需的计算量是非常惊人的。在产品组原先的实现中,这一过程完全靠的是CPU来计算,压缩一张图片往往需要10-20分钟,甚至更久。这对于游戏厂商来说显然是个不可接受的等待时间。为了解决这一难题,我们仍然想到了用DirectCompute来加速压缩的方法,把整个压缩算法拿来分析,改进,使之成为一个并行化的算法,并搬上了GPU。GPU的并行程序不像CPU的程序那样,有成熟的开发环境和各种各样的辅助工具,而且由于并行本身的特点,在调试中经常会同时要观察上万个数据。结果一不小心出了问题,就得花十倍甚至百倍的时间和精力去对付它。比如,我们有一次就遇到了这样一个情况:
经过压缩的图片,有的地方正确,有的地方不正确。有的地方是一种错误,有的地方是另一种错误。比如边缘出现红点,该是绿色的地方却成了蓝色。同时盯着最后结果又不是办法,我们只能把shader里的变量一个一个导出来查看。经过在黑暗道路上的不懈摸索,最后终于把问题解决,并积累了对付此类问题的经验。最终,在不改变压缩质量的情况下,10秒之内就能处理一张图片,速度提高了100倍左右,成为了一个实用的工具。产品组对我们做的东西非常感兴趣,这个压缩程序也成了DirectX 11 SDK的一个例子,并可能在未来版本中进入D3DX库。从此之后,HDR图像不再是内存消耗大户,它能以更快的速度进入平常游戏中,造福所有的游戏玩家。
随着Windows 7的逐渐普及,随着软硬件的不断发展,GPGPU并行计算必将遍地开花,成为每个软件都不可缺少的一部分。虽然那一天的到来还需以时日,但我们通过努力,已经为这个目标迈出了坚实的一步。
作者介绍:
龚敏敏,2006年硕士毕业于中国科学技术大学计算机学院软件工程专业,同年加入了微软亚洲研究院网络图形组,从事图形相关的研究和技术转换工作。兴趣的领域包括实时图形渲染、自然现象模拟、GPU通用计算等。
相关阅读:《CTCP进驻Windows的故事》
快来围攻微软亚洲研究院微博吧:http://t.sina.com.cn/msra