显存带宽的意义
显存带宽是指GPU与显存之间的数据传输速率,它以字节/秒为单位。
当显示卡在进行像素渲染时,都需要从显存的不同缓冲区中读写数据。这些缓冲区中有的放置描述像素ARGB(阿尔法通道,红,绿,蓝)元素的颜色数据,有的放置像素Z值(用来描述像素的深度或者说可见性的数据)。
基本的渲染过程是:计算一个像素的的颜色值,从颜色和Z缓冲区中对应该像素的存储位置读取颜色值和Z值,然后计算出这个像素新的颜色值和Z值,计算中可能还需要与像素原来的颜色进行混合或者合成处理(这个计算还和Z值以及Alpha值有关)。一旦新的像素颜色和Z值计算完成后,新的数据就需要写回到内存中。也就是说进行一次基本的渲染操作,每个像素被渲染一次的话,就需要传送(读取32bit 颜色 + 读取32bit Z + 写入32bit 颜色 + 写入32bit Z)=128bit,即16个字节。
材质贴图和深度复杂性会使每个像素渲染所需要的带宽加倍。当前大部分游戏都使用了多重贴图(在每个像素上应用两层或者更多的纹理)以及双线性或者三线性过滤来达到丰富的图象细节和逼真度。纹理数据也是从同时放有像素颜色和Z缓冲区的内存中读取。
为了了解纹理读取所需带宽的近似值,我们可以假设每个像素应用了两层纹理,同时还采用了三线性过滤,每个像素的每个纹理在三线性过滤时会使用8个纹理样本,每个样本都是32bit。这样,每个像素一次会读取:32bit×8(纹理样本数量)×2(纹理层数量)=512bit,即64个字节的纹理数据。