linear,swizzle,tile

来源:互联网 发布:马克斯cms整合播放器 编辑:程序博客网 时间:2024/05/17 22:57

linear,swizzle,tile是有些类似的三个属性,其中linear和swizzle是关于贴图的,tile是关于内存的。

linear一般是默认的,也就是贴图的texel从左上到右下一行行的存储。

swizzle是指贴图的一种属性,一般采用2x2的小quad 按照Z字型顺序来存储4个象素,类似:

0   1  |  4   5
2   3  |  6   7

 这样,这样的优势就是相邻的几个texel在内存中也是比较相邻的,当然是很有局限性的,但是相比linear已经有很大提高。

tile: 最常用于对于render target的内存设置,宗旨是让相邻的象素在内存中也是相邻的,以便提高读写效率。

它的做法有:

在一个规定大小的block中linear存放,可以看作是一种“超级”swizzle。

在有硬件支持的情况下,把block可以分成多个bank,相邻的bank放到不同的memory partition中,这样就可以让内存访问并行化。

另外就是可以进行错位设置,让depth和color不在相同bank中,也可以提高memory access 并行化。

必要情况下还需要地址转换。

速度上,tile比非tile快很多,swizzle的sample texture比linear快。

原创粉丝点击