卸下包袱的TMU单元一直处在高速发展的节奏中,这些发展除了围绕着相对传统的更高材质分辨率、更好的过滤效果以及更好的贴图手段来进行之外,最引人瞩目的地方来自对TMU的多样化使用。TMU单元第一次在操作手法上重要的大发展,来自于DirectX 9.0C。
DirectX 9.0C游戏效果
DirectX 9.0C是一个足以名流计算机图形学发展史册的API版本,虽然它仅仅是DirectX 9.0的一次升级,但这次升级却带来了诸多令人印象极其深刻且意义深远的改进,比如长度达65536、已经近乎于无限长度的指令,分支、跳转以及流控制等指令形式的引入,MRT的首次出现等等。在这一系列重大的改进中,有两样是关于TMU单元的,一个是Shader Modle3.0引入的VTF(Vertex Texture Fetch),另一个则是TA/TF单元的分离。
VTF特效对比
使用VTF之后的效果
VTF可以被简单直接的翻译成顶点纹理拾取,尽管这种基于Vertex Shader的技术严格意义上并不属于TMU单元本身的改进,但它对TMU单元的操作以及可实现特效的发展有着深远的意义。VTF允许Vertex Shader单元直接访问材质库,并从中读取含有基本光照信息的材质然后贴在完成处理的几何模型表面。由于Vertex Shader包含全部操作之后的顶点信息,其中的重要的信息之一就是顶点相对于网格平面的高度值,因此VTF最大的意义,便在于可以让TMU以比过去方便快捷许多的方式来实现对高度及视差极其敏感的环境凹凸贴图特效。
环境凹凸贴图
物体表面的凹凸感,很大程度上来自凹凸带来的光线明暗度的不同,突出部更亮凹陷部更暗对于我们来说是非常自然的视觉经验。如果采用常规的贴图手段,表现暗部细节需要借助阴影贴图来完成,这样做不仅效率低下,而且过多的表面细节显然会给TMU单元带来沉重。现在好了,结合顶点的高度值,VTF可以直接将材质的所有颜色全部转化成灰度,然后根据高度差对灰度进行重新排序和修改,高度值较大的材质灰度也较大,而高度值较小的材质灰度也较小,最终的效果也就自然的变成了物体表面凸出位置的材质亮度正常或者较高,而凹陷部分的材质亮度则相对较低,这就带来了非常自然的视差凹凸效果。VTF的操作方式对于TMU来说几乎就是革命性的,它的出现不仅让TMU在不付出沉痛代价的前提下实现更好的物体表面细节,甚至成了让TMU进军通用计算领域以及GPGPU出现的发端。
环境凹凸贴图效果
相对于VTF,TA/TF分离的改进不仅目的简单直接,而且操作过程也非常简单。随着纹理技术的发展,Texture Address(纹理定址)以及Texture Filtering(纹理拾取)过程以及这两种操作的比例发生了巨大的变化,传统的TMU单元已经无法满足新的定址及拾取操作的需要,因此从DirectX 9.0C开始,TMU单元正式分割成了TA和TF两个部分,TA单元专门负责材质的定址操作,在完成定址之后,TF单元根据定址结果对材质进行拾取并完成贴图作业。
纹理定址实例
TA/TF的分离不仅提升了整个纹理单元的操作效率,更为材质单元规模的扩展提供了更加多样化的选择,人们可以通过分析指令中定址及拾取操作的比例,来调节构架中TA/TF的比例,从而达到晶体管利用率最大化的目的。也正是从这里开始,TMU这个沿用了很长时间的名词变得不再能够精确的描述纹理单元了,于是Texture Array这个全新的名词也就应运而生了。
三秦IT网的官方微信:更多资讯请关注:三秦IT网官方微博