发布网友 发布时间:2022-12-27 00:04
共1个回答
热心网友 时间:2023-11-08 20:45
一般的贴图又称纹理贴图,是早期渲染工程师为了处理顶点渲染以及差值渲染所引起 的视觉误差而使用的位图影像。
纹理通常含有颜色信息,并且一般会投射在网格的三角形上,这种使用纹理的方法就好像我们小时候把假纹身印在手臂上一样。但其实纹理也可以存储颜色以外的视觉信息。而且纹理也不一定用于投射网格上。
纹理中每个单独的像素称为纹素,以区别屏幕上的像素。
如何将二维的纹理投射到网格上。首先,我们要定义一个称为纹理空间(texture space)的二维坐标系。纹理坐标通常以两个归一化的数值(u,v)表示,这些坐标的范围是从纹理的左下角(0,0)伸展至右上角(1,1)。使用归一化纹理坐标的好处是这些坐标不会受纹理尺寸的影响。
纹理坐标可以延伸至[0,1]范围之外,图形硬件可以以以下几种方式处理范围以外的纹理坐标,这些处理方式被称为纹理寻址模式。
纹素密度是纹素与像素的比。
纹素密度会随着物体相对摄像机的距离而改变。纹素密度影响内存的使用量,也会影响三维场景的视觉品质。
当纹素密度小于1,每个纹素就会明显的比屏幕像素大,那么就会察觉到纹素的边缘,这会影响游戏的真实感。当纹素密度远大于1,许多纹素会影响单个屏幕像素,这样会产生莫列波纹。更甚者由于像素边缘内的多个像素会按细微的摄像机移动而不断改变像素的颜色,像素的颜色就会显得浮动不定和闪烁。
而且,若玩家不会接近一些远距离的物体,用非常高的纹素密度渲染那些物体只会浪费内存。
理想状况下,我们希望无论物体时远近,都能维持纹素密度接近于1,但是要准确的维持约束是不可能的,所以我们采用多级渐远纹理技术来*近。
其方法是,对于每张纹理,我们建立较低分辨率位图的序列,其中每张位图的宽度和高度都是前一张的一半,我们称这些影像为多级渐远纹理(mipmap)
当渲染纹理三角形上的像素时,图形硬件会计算像素中心落入纹理空间的位置,对纹理贴图采样。通常纹素和像素之间没有一对一的映射,像素中心可以落入纹理空间的任何位置,包括两个或两个以上纹素之间的边缘。因此,图形硬件通常需要采样出多于一个纹素,并把采样结果混合以得出实际的采样纹素颜色,这一过程称为纹理过滤。
这里可以看 移动GPU对纹理压缩相关原理