纹理和采样器 Textures and Samplers
纹理映射将一个或多个指定图像的部分映射到片元或顶点上。在着色器中,通过在指定的(s、t、r)纹理坐标位置采样图像的颜色来实现这种映射。纹理查找通常用于修改片元的RGBA颜色,但也可以用于着色器中的任何目的。
本章首先描述了如何在章节8.1-8.11中指定和查询像素矩形、纹理图像以及纹理和采样器对象参数。章节8.12-8.26中剩余的部分描述了着色器中如何执行纹理采样。
纹理的内部数据类型可以是有符号或无符号的规范化固定点、有符号或无符号的整数,或浮点数,这取决于纹理的内部格式。内部格式和内部数据类型之间的对应关系见表8.12-8.13。固定点和浮点纹理返回浮点值,整数纹理返回有符号或无符号整数值。片元着色器负责将纹理查找的结果解释为正确的数据类型,否则结果是未定义的。
每种支持的纹理类型都是由一维、二维或三维数组的纹素构成的纹理图像集合(参见章节2.6.6)。一维、二维和三维纹理分别由一维、二维或三维纹理图像组成。一维和二维数组纹理是由一维或二维图像组成的数组。每个图像由一个或多个层组成。二维多重采样和二维多重采样数组纹理是特殊的二维和二维数组纹理,每个纹素中包含多个样本。立方体贴图是特殊的二维数组纹理,其有六个表示立方体面的层。访问立方体贴图时,纹理坐标被投影到立方体的六个面之一上。立方体贴图数组是作为二维数组纹理存储的立方体贴图层集合。访问立方体贴图数组时,纹理坐标s、t和r类似于立方体贴图,而最后一个纹理坐标q被用作立方体贴图片段的索引。矩形纹理是特殊的二维纹理,仅包含单个图像,并使用非规范化坐标进行访问。缓冲区纹理是特殊的一维纹理,其纹理图像存储在单独的缓冲区对象中。
实现必须支持使用多个图像进行纹理处理。
以下各小节(直到第8.14节)指定了单个纹