linear,swizzle,tile

本文介绍了三种纹理存储方式:linear、swizzle 和 tile。linear 是默认的贴图存储方式;swizzle 则通过 Z 字形顺序排列提高相邻像素的内存接近度;tile 专门针对 rendertarget 进行优化,通过 block 内 linear 存储和 bank 分区等技术进一步提升内存访问效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值