作为新一代的图形加速器,Kyro并不支持硬件T&L,这对于很多消费者来说可能会觉得有点扫兴,不过,Kyro在技术上并不缺乏自己的特别之处,这些特性在某些方面也许并不比硬件T&L的实用性差。Kryo的许多技术特征其实是十分令人感兴趣的。它的隐藏面预消除技术和8层材质支持以及环境凹凸贴图(EMBM)等都很有特色,其中,隐藏面预消除和8层材质支持都是基于它独特的小区块渲染技术的。
Kyro的隐藏面消除技术是目前最特别的,但是可能也是最高效的。在传统的3D处理流程中,图形处理器首先会对场景中的所有3D物体进行渲染,并赋予它们相应的材质(进行贴图操作),在渲染结束后,由于这些3D实体可能会是互相重叠的,在得到最终的显示画面之前必须只将处在离视点最近的那些多边形显示出来,而将隐藏的(被其它面遮挡的)部分消除掉,这个工作是通过比较Z缓冲里面保存的每一个多边形的各个像素的深度数据来决定哪一个像素会被显示。在传统3D渲染的整个流程当中,图形处理器必须频繁地不断对显存进行访问,如读入纹理数据、几何数据、Z缓冲数据、写入帧缓冲等,因此渲染流程的效率严重依赖于显示缓存的带宽。对于在Z方向有很多层面的情况下,比如说很多幢互相重叠房屋的情况,图形处理器必须对房屋的每一个面都进行渲染,但最终如果我们只能从屏幕上看见离我们最近的几幢,这时,实际上对其他看不见得房屋的渲染工作都是无效的,对最终的显示结果没有任何帮助。一般来说,在典型的游戏场景里面,Z方向互相重叠的面的平均层数(一般这个数据被称为深度复杂性,Depth complexity)大约是3-4左右,这说明大多数情况下无效渲染会占用大部分的图形处理器的能力和显存的带宽。Kyro的渲染过程和传统的大部分3D图形处理器颇有不同,在Kryo中,Z测试(Z Test)是首先进行的,通过Z轴的测试,那些被遮挡的面上的像素就会被剔除,在随后进行的纹理贴图、混合和渲染的过程中,处理器就只需要对可见的部分进行处理。因此,对Kyro来说,是不存在无效渲染的,仅此一项对于图形处理器的能力和显存带宽的节约是十分明显的。ATI的Radeon也采用了类似的技术,其效果还是十分明显的。Kyro还有一个特别之处在于,在进行图形渲染的时候,它采用的是一种叫"显示列表渲染(Display List Render)"的方式。所谓的"显示列表渲染"其实就是在对图形进行渲染之前,将多边形分成多个组打包,并列入显示列表中,因此,整个场景实际上就分成了多个块(tiles)或者是区"regions",这些区块可以单独进行渲染,最后在显示的时候拼合成一个完整的帧。采用区块的好处是多方面的,首先,在Kyro内有个相对较大的tile缓冲区,它由于内置于芯片内部,因此和图形处理部分的数据宽度可以做得很大,带宽也可以达到很高,在对某个区块进行渲染的时候,由于区块的数据量相对于整个场景来说不大,因此在芯片内部的缓冲区的容量就足够可以作为这个区块渲染的帧缓存和Z缓冲区,这样,在渲染过程中,图形处理器很少甚至根本不需要对外部缓存进行读写,因此,对显存带宽的节约是十分巨大的。采用区块进行渲染的另一个好处是由于区块之间可以独立进行渲染工作,因此,对一个场景的渲染可以十分容易地做到采用多个图形处理器同时并行操作,图形系统的伸缩性可以做得很大。由于Kyro采用了隐藏面预消除和基于小区块(Tile)的渲染两项技术,因此,它对显示缓存带宽的依赖就大大降低了。PowerVR的数据显示,在1600x1200的分辨率下,如果场景的深度复杂性为4的话,真彩色模式运行游戏的时候传统的方法渲染图形需要近12GB/s的显存带宽才能满足需要,而如果是Kyro的话,不到4GB/s就够了,也就是说Kyro的带宽需求仅仅为传统渲染方式所需的1/3~1/4。
Kyro的另一个特别之处就是在多纹理的处理上。我们习惯地认为,有多少条像素处理管线(Piping line)才能够在一个周期里面处理多少个纹理。如最新的GeForce2 GTS有四条像素处理管线,每个管线又包含有两条纹理处理管线,因此,GTS可以在一个时钟周期内完成8个纹理的处理,DirectX目前最高也就是支持8层纹理。对于那些没有8条纹理处理管线的图形加速器来说,像8层纹理这样的处理只能采用多个周期来完成。同样,Kyro也支持8层纹理,不过,与GTS采用8条纹理管线的复杂设计不同的是,Kyro充分利用了其区块渲染的好处来实现这个功能的。在Kyro中,它的内部tile缓冲区可以容纳每个tile所需要的8层纹理数据,这些纹理数据一次性读入芯片后,在芯片内部就完成了纹理操作,因此不在需要这么多的纹理管线(Kyro的实际纹理管线不详,好像为两条)。
Kyro还有一个有用的特性就是它的完全真彩色渲染。在对16bit色进行渲染的时候,在传统的图形加速器中,即使在内部完全采用真彩色渲染,但是由于在渲染的中间阶段会将渲染的结果转化为16bit后保存到帧缓存里,等到需要再一次进行纹理混合的时候,又会把16bit的数据转化为32bit的数据,进行操作,然后结果再一次转换为16bit的数据。经过几次的16->32->16位的转换,图像的质量会受到很大的影响。而Kyro由于采用Tile渲染方式,所有的渲染工作都在芯片内部以32bit的精度进行,只是在输出最后结果时转换一次,这样对图象质量的影响程度可以降到最低程度。
Kyro支持环境凹图贴图(Environmental Bump Mapping,EMBM)。环境凹图贴凸是首先在Matrox的G400上应用的,是目前效果最好的一种凹图贴图方式。EMBM需要三种材质纹理,分别是基本的纹理、凹图纹理(Bump map)以及光线纹理(Light map)进行合成。EMBM可以非常逼真地表现复杂的凹凸表面,如轮胎、桔子皮的等效果。Kyro可以在性能损失较小的情况下使用EMBM。
|