Home 贴图映射
Post
Cancel

贴图映射

UV坐标

  1. 即纹理坐标
  2. UV:映射模型的蒙皮贴图
  3. UV2:也叫2U,计算光照,映射光照贴图
  4. UV3:为实时全局光照服务
  5. UV4~UV8:程序可以自定义使用的UV数据

image-20230205204630362

UV展开

纹素

  1. 纹素指纹理上的一个像素,比如512x512的纹理,U轴有512个纹素,V轴也有512个纹素。

贴图采样

image-20230205204644291

  1. 当物体离摄像机很近时,一个像素会对应纹理上很小的一部分,包含很少纹素。
  2. 当物体离摄像机很远时,一个像素会对应纹理上很大的一部分,包含很多纹素。
  3. 贴图上的纹素和屏幕上的像素无法做到一比一的对应关系。当一个像素覆盖的纹理区域比较大时,就不能简单的采样。用一个像素点(采样点)去采样一大片贴图,铁定会走样 (信号变化太快,采样速度跟不上变化的速度)
  4. 因此,采样贴图时需要对纹素进行插值计算。
  5. Filter Mode 决定了采样时的插值方式。

采样理论

  1. 在图形学中,采样无处不在。Sampling is ubiquitous in Computer Graphics.
  2. Pre-Filter than Sample 先滤波再采样
  3. 不能先采样后模糊,先采样后模糊得到的是模糊的采样。
Frequency Domain - 频域
  1. 傅里叶变换:把函数展开成正弦与余弦函数的和。
  2. Filtering = Getting rid of certain frequency contents = Averaging = Convolusion

image-20230205204656173

  1. 高通(低频)滤波 : 只有高频信号可以通过,低频信号被过滤掉。画面只留下边缘。
  2. 低通(高频)滤波: 只有低频信号可以通过,高频信号被过滤掉画面变得模糊。
  3. Box Filter = Low Pass Filter = 把高频信号平均化

Filter Mode - 滤波方式

  1. 纹理大小和像素大小很难匹配,采样纹理时会得到非整数的UV坐标,需要指定滤波方式完成采样。
  2. 随着采样次数的提高,画面越来越平滑,消耗的GPU也越来越多,要平衡好画质和性能开销。
Nearest (Point)
  1. 最近采样,也可以理解成不采样。纹素与像素大小不一致时,直接把UV坐标取整,取位置最接近的纹素颜色值。采样1次。
  2. 这种方式只是寻找了位置最接近的纹素,不能保证连续性,即使使用 Mipmap,像素和纹素也不能得到很好的匹配。
  3. 这种采样方式会让画面表现的很锐利
Bi-linear
  1. 双线性插值。取要采样的纹素周围最近的4个纹素,这4个纹素在线性计算上的权重值为纹素与中心点的距离,把所有采样得到的纹素进行加权平均(模糊)后可得到最终的像素颜色。采样4次。
  2. 双线性采样比 Nearest 更平滑,更模糊,但双线性采样只选取纹素和像素之间大小最接近的那一层Mipmap Level进行采样。导致当像素大小匹配的纹素在两层Mipmap之间时,双线性采样在有些情况下的效果就不太理想。
Tri-linear

image-20230205204711197

  1. 三线性插值。在双线性采样的基础上对像素大小与纹素大小最接近的上下两层 Mipmap Level 分别进行一次双线性过滤(模糊),然后对在两层Mipmap纹理上得到的像素结果进行插值计算,最终得到合理的纹素。采样8次。
  2. 可以根据连续的层数查询,不需要四舍五入到整数(比如可以查1.8层 (Level 1.8))
  3. 相比Bi-linear,无非多了一次查询和一次插值,开销不算太大(第一趟 s 第二趟 t 第三趟 D)
  4. 三线性采样的结果比 Bilinear 更平滑,更模糊
Aniso Filter
  1. 各向异性插值。随着等级的提高,采样次数也逐步提高,消耗的GPU也越来越多。
  2. 当要贴图的三维表面平行于屏幕时就是各向同性。当要贴图的三维表面与屏幕有一定角度的倾斜时就是各向异性。
  3. 各向异性采样,除了会把Mipmap因素考虑进去外,还会把纹理与屏幕空间的角度考虑进去。它会考虑一个像素对应到纹理空间中在U和V方向上与U和V的比例关系,如果U:V不是1:1,将会按比例在各方向上选取不同数量的点来计算最终的结果。
  4. 各向异性采样的结果最平滑。以比较大的角度查看纹理时,可以提高纹理的质量。
Unity中的滤波方式

image-20230205204722870

  1. Aniso(tropic) Level 为各向异性等级。等级越高,对一张贴图的不同长宽比做的预计算越多。只有开启了 Mipmap ,Filter Mode 不使用 Point,该参数才会生效。

Mipmap - 多级渐远纹理

  1. Mipmap原意就是很多小图,是一种常见的纹理映射技术。原理是根据物体与摄像机之间距离的不同,分别使用不同分辨率的纹理贴图。
  2. 当物体离摄像机很远时,像素与纹素的比率变得非常小(物体上的某片元覆盖的纹素变得很大),这样采样会使瑕疵非常明显。
  3. 因为使用MipMap,物体远离摄像机时会选择更小分辨率的贴图,在绘制场景时能够节省不少GPU和内存之间传输数据的带宽,所以也能节省一部分性能。
  4. 开启MipMap,会预计算好所有等级的图,一共会引入 1/3 的额外存储量。

Anti-aliasing - 反走样,抗锯齿

  1. 反走样,即对几何图元的边缘进行平滑处理。
    Aliasing - 混叠
  2. 信号变化太快(频率太高),在时域/空域采样太慢(过疏)。就会产生混叠(Aliasing)现象,即画面出现锯齿状的边缘。
几种不同的瑕疵Artifact
  1. Jaggies
  2. Moire
  3. Wagon wheel effect
MSAA

image-20230205204746982

  1. MultiSample Anti-Aliasing 多重采样抗锯齿。
  2. 把一个像素点拆分成NxN个点,利用box filter平均这NxN个采样点,计算该像素最终的颜色
  3. MSAA运行在GPU上,代价是消耗更多的GPU算力和显存,不过,它并不会消耗任何CPU算力。
DLSS
  1. [NVIDIA DLSS 深度学习超级采样 (DLSS) 技术NVIDIA](https://www.nvidia.cn/geforce/technologies/dlss/)
  2. Deep Learning Super Sampling
This post is licensed under CC BY 4.0 by the author.
Contents