目录
1.是什么
1.1 纹理本质上是数据
1.2 纹理与图像
2. 怎么用:映射、加载、采样
2.1 映射:让GPU知道模型上的位置对应纹理上某个位置
2.1.1 UV坐标系
2.2 加载:创建纹理资源、绑定
2.3 采样:关联资源与采样器
2.3.1 Address
2.3.2 采样过滤:解决纹素与像素不匹配
2.3.3 Mip Map:把原始纹理变成若干更小的纹理,采样时选择合适大小的纹理
3. 有啥用
3.1 颜色:表达颜色信息
3.2 数值
3.2.1 混合模式
3.3 法线纹理(Normal Txture)
3.4 凹凸
4. 其他
是什么-怎么用-有啥用-其他
1.是什么
纹理赋予了渲染内容更丰富的信息:
1.1 纹理本质上是数据
总尺寸=单位尺寸×数量
纹素(Texel)=纹理(Texture)的像素(pixel)
格式:以RGB888_UNORM为例
- RGB:有三个成员R\G\B
- 888:每个成员有8位
- UNORNM:每个成员按无符号整型来存储,读取出来是0-1的浮点数
1.2 纹理与图像
2. 怎么用:映射、加载、采样
- 在顶点上准备UV数据
- 设置号采样器的Address和Filter
- 通过采样操作获得纹理数据
2.1 映射:让GPU知道模型上的位置对应纹理上某个位置
纹理空间->模型空间
2.1.1 UV坐标系
在渲染管线中,会以三个顶点组成一个三角面作为最小图元来表示复杂的几何体。
对于任意三角面内,满足如下插值公式:
顶点上记录了UV,故通过插值得到三角面内的UV。
2.2 加载:创建纹理资源、绑定
DX11创建纹理资源的过程(伪代码):
2.3 采样:关联资源与采样器
2.3.1 Address
思考一个问题:如果P点在UV映射象限之外怎么办?(UV超过0-1)
有如下几种方式:
2.3.2 采样过滤:解决纹素与像素不匹配
- 最近过滤:选择离采样点最近的结果
- 双线性过滤(BIlinear Filter):选择在临近的4个纹素,按举例权重插值
2.3.3 Mip Map:把原始纹理变成若干更小的纹理,采样时选择合适大小的纹理
对比:
3. 有啥用
3.1 颜色:表达颜色信息
3.2 数值
3.2.1 混合模式
3.3 法线纹理(Normal Txture)
3.4 凹凸
4. 其他
Virtual Texture:虚拟纹理
- 类似于操作系统中虚拟内存的概念
- 在硬盘里的纹理资源,可能会很大,并且有多级mip,将它分为若干个小格子
- VT会考虑具体加载哪些内容,做一些标记:哪些页被用过、以及把页放到具体哪一个位置上
- 最后会得出最后的纹理资源
各向异性过滤(Anisotropic filtering)
- 考虑采样点和采样点某一个距离内的其他像素
- 当前镜头与采样平面的夹角
颜色空间与伽马矫正