UV坐标
- 即纹理坐标
- UV:映射模型的蒙皮贴图
- UV2:也叫2U,计算光照,映射光照贴图
- UV3:为实时全局光照服务
- UV4~UV8:程序可以自定义使用的UV数据
UV展开
纹素
- 纹素指纹理上的一个像素,比如512x512的纹理,U轴有512个纹素,V轴也有512个纹素。
贴图采样
- 当物体离摄像机很近时,一个像素会对应纹理上很小的一部分,包含很少纹素。
- 当物体离摄像机很远时,一个像素会对应纹理上很大的一部分,包含很多纹素。
- 贴图上的纹素和屏幕上的像素无法做到一比一的对应关系。当一个像素覆盖的纹理区域比较大时,就不能简单的采样。用一个像素点(采样点)去采样一大片贴图,铁定会走样 (信号变化太快,采样速度跟不上变化的速度)
- 因此,采样贴图时需要对纹素进行插值计算。
- Filter Mode 决定了采样时的插值方式。
采样理论
- 在图形学中,采样无处不在。Sampling is ubiquitous in Computer Graphics.
- Pre-Filter than Sample 先滤波再采样
- 不能先采样后模糊,先采样后模糊得到的是模糊的采样。
Frequency Domain - 频域
- 傅里叶变换:把函数展开成正弦与余弦函数的和。
- Filtering = Getting rid of certain frequency contents = Averaging = Convolusion
- 高通(低频)滤波 : 只有高频信号可以通过,低频信号被过滤掉。画面只留下边缘。
- 低通(高频)滤波: 只有低频信号可以通过,高频信号被过滤掉画面变得模糊。
- Box Filter = Low Pass Filter = 把高频信号平均化
Filter Mode - 滤波方式
- 纹理大小和像素大小很难匹配,采样纹理时会得到非整数的UV坐标,需要指定滤波方式完成采样。
- 随着采样次数的提高,画面越来越平滑,消耗的GPU也越来越多,要平衡好画质和性能开销。
Nearest (Point)
- 最近采样,也可以理解成不采样。纹素与像素大小不一致时,直接把UV坐标取整,取位置最接近的纹素颜色值。采样1次。
- 这种方式只是寻找了位置最接近的纹素,不能保证连续性,即使使用 Mipmap,像素和纹素也不能得到很好的匹配。
- 这种采样方式会让画面表现的很锐利。
Bi-linear
- 双线性插值。取要采样的纹素周围最近的4个纹素,这4个纹素在线性计算上的权重值为纹素与中心点的距离,把所有采样得到的纹素进行加权平均(模糊)后可得到最终的像素颜色。采样4次。
- 双线性采样比 Nearest 更平滑,更模糊,但双线性采样只选取纹素和像素之间大小最接近的那一层Mipmap Level进行采样。导致当像素大小匹配的纹素在两层Mipmap之间时,双线性采样在有些情况下的效果就不太理想。
Tri-linear
- 三线性插值。在双线性采样的基础上对像素大小与纹素大小最接近的上下两层 Mipmap Level 分别进行一次双线性过滤(模糊),然后对在两层Mipmap纹理上得到的像素结果进行插值计算,最终得到合理的纹素。采样8次。
- 可以根据连续的层数查询,不需要四舍五入到整数(比如可以查1.8层 (Level 1.8))
- 相比Bi-linear,无非多了一次查询和一次插值,开销不算太大(第一趟 s 第二趟 t 第三趟 D)
- 三线性采样的结果比 Bilinear 更平滑,更模糊。
Aniso Filter
- 各向异性插值。随着等级的提高,采样次数也逐步提高,消耗的GPU也越来越多。
- 当要贴图的三维表面平行于屏幕时就是各向同性。当要贴图的三维表面与屏幕有一定角度的倾斜时就是各向异性。
- 各向异性采样,除了会把Mipmap因素考虑进去外,还会把纹理与屏幕空间的角度考虑进去。它会考虑一个像素对应到纹理空间中在U和V方向上与U和V的比例关系,如果U:V不是1:1,将会按比例在各方向上选取不同数量的点来计算最终的结果。
- 各向异性采样的结果最平滑。以比较大的角度查看纹理时,可以提高纹理的质量。
Unity中的滤波方式
- Aniso(tropic) Level 为各向异性等级。等级越高,对一张贴图的不同长宽比做的预计算越多。只有开启了 Mipmap ,Filter Mode 不使用 Point,该参数才会生效。
Mipmap - 多级渐远纹理
- Mipmap原意就是很多小图,是一种常见的纹理映射技术。原理是根据物体与摄像机之间距离的不同,分别使用不同分辨率的纹理贴图。
- 当物体离摄像机很远时,像素与纹素的比率变得非常小(物体上的某片元覆盖的纹素变得很大),这样采样会使瑕疵非常明显。
- 因为使用MipMap,物体远离摄像机时会选择更小分辨率的贴图,在绘制场景时能够节省不少GPU和内存之间传输数据的带宽,所以也能节省一部分性能。
- 开启MipMap,会预计算好所有等级的图,一共会引入 1/3 的额外存储量。
Anti-aliasing - 反走样,抗锯齿
几种不同的瑕疵Artifact
- Jaggies
- Moire
- Wagon wheel effect
MSAA
- MultiSample Anti-Aliasing 多重采样抗锯齿。
- 把一个像素点拆分成NxN个点,利用box filter平均这NxN个采样点,计算该像素最终的颜色
- MSAA运行在GPU上,代价是消耗更多的GPU算力和显存,不过,它并不会消耗任何CPU算力。
DLSS
[NVIDIA DLSS 深度学习超级采样 (DLSS) 技术 NVIDIA](https://www.nvidia.cn/geforce/technologies/dlss/) - Deep Learning Super Sampling