● 不要小看
泥瓦匠的活计在本文的开始部分我们曾经提到过,TMU单元的操作其实并不复杂,起码相对于前面几个单元来说并不复杂。从本质上讲,TMU单元所做的事情,就是在需要时扫描预先准备好的材质库,从中寻找出合适当前多边形需要的材质,然后把它从库中拷出来,加以适当的缩放调整及其他动作之后再贴到多边形表面上去。而对纹理单元的常规改进,也就是增加纹理操作单元的数量,使用更加先进的压缩算法来缩小纹理在操作期间的体积,加入适当的纹理过滤机制以保证其清晰度,以及为纹理单元配置更好的缓冲机制比如Tex Cache之类的琐事了。
是的,完了,就这么简单。明白了上面这些,你就已经算是明白TMU单元的作用和特点了。
纹理定址及拾取操作
相信从第一期GPU大百科全书开始一直阅读到这里的读者们都不难发现,我们在陈述某个GPU功能单元的作用和动作时,最基本的描述都非常简单明了。比如说几何单元就是根据CPU送出的顶点信息完成顶点设置调整、多边形连接以及基本蒙皮等几何和模型相关的动作;光栅化单元虽然收割了生命,但其作用本质上也不过就是完成了3D模型顶点坐标的平面化坐标变换;而像素处理单元的工作就更加直白了,它干脆就是个玩命跑RGB通道数据的计算器。这些单元的功能看上去是那么的简单,以至于笔者还能有闲心把香草MM也加入到描述当中为大家调节气氛。这种简单本质的描述,其实正是笔者一直以来所追求的效果。能够让每一个人都了解GPU单元各部分的特质,进而得以一窥图形世界的精彩,正是GPU大百科全书系列的初衷。
但是接下来,当我们触及到单元作用和动作的细节时,事情似乎就不再那么简单好玩了。各种由看似简单的基本特征出发引出的特殊功能以及概念,还有每一个单元发展所经历的各种历程,甚至是那些专有名词都让很多读者抓狂不已。其实,这恰恰反映了GPU构架的本质——GPU构架是数学原理最实体化的表现之一,它通过自身的结构,将晦涩难懂的数学体系翻译成了具体同时又绚丽多彩的画面。既然它是数学原理的实体化表现,那符合数学本身的特质也就没什么奇怪的了。数学虽然本身晦涩难解而且看上去深不可测,其最核心的本质实际上是建立相当简单但又牢不可破的几条公理之上的。今天气势恢宏的数学大厦,其基础不过是“1+1=2”和“平面上过两点有且仅有一条直线”这种小孩子都知道的道理而已。看似简单的本质可以推导衍生出近乎于无限复杂又精彩的世界,看似纷繁复扰的体系其本质又能以非常简单直接的方式来描述,这就是数学的魅力,同样也是GPU的魅力。
回到TMU单元上,尽管整个材质操作的本质,也就是TA单元根据需要对材质进行定址,然后交由TF去拾取并完成贴图的过程看上去十分简单,但这看似简单的过程背后同样蕴藏着无数的精彩推论和不平凡的延伸,比如多重纹理贴图,比如VTF的操作过程,比如纹理阵列,比如Gather指令……当然,还有那无限的可能性,比如——怎么看都是纯图形单元的TMU,能不能像ALU那样成为一名数学家呢?