games101-note-L9 Shading 3 (Texture Mapping cont.)

Shading 3

Barycenric Coordinates 重心坐标

Interpolation Across Triangles 在三角形内部插值

原因:

指定顶点的值后能够获得三角形内部的平滑的变化值

Specify values at vertices

Obtain smoothly varying values across triangles

可以用于:

Texture coordinates, colors, normal vectors, …

Barycenric Coordinates

计算重心坐标

面积又可以用叉积进行计算 S=1/2 || aXb ||

cross product

问题:

做投影变换时,重心坐标会发生发生变化。

所以三维空间中的属性需要在三维空间进行插值后,再投影变换到二维空间中去。

Applying texture

Applying texture

认为纹理值是漫反射系数

会出现的问题:Texture Magnification 纹理放大

Generally don’t want this — insufficient texture resolution 纹理分辨率不足

A pixel on a texture — a texel (纹理元素、纹素)

1716744895709

Nearest:一定pixel范围内使用相同的texel

Bilinear:双线性插值

Bilinear Interpolation

双线性插值

Bicubic:取周围16个点来进行插值。

问题2:纹理缩小 Texture minification(hard case)

会产生走样

alias

downsampling 造成了问题

超采样可以解决问题,但是会消耗很多算力

一个像素的信号频率太高

更好的方法(范围查询):

避免采样,直接获取一定区域的平均值

Point Query vs. (Avg.) Range Query

Mipmap:allowing (fast, approx., square) range queries

Mipmap

也叫Mip hierarchy

Mip hierarchy

存储开销:

只多了1/3的存储量(每级缩小1/4)

计算Mipmap的Level D:

Computing Mipmap Level D

查询1.8层,在两层间进行一次插值。也就是三线性插值

Trilinear Interpolation

Mipmap的缺陷:

在远处会出现过度模糊。此处主要因为不满足square,不是方形区域的缩小

Overblur

Anisotropic Filtering 各向异性过滤:

Anisotropic Filtering 各向异性过滤

存储开销:3倍

各向异性多少x(例如2x,4x,16x)代表了这里的图片压缩多少次,如2x,压缩一次,取左上2x2区域内4个图,4x就是压缩3次,3x3区域内9个图。

Can look up axis-aligned rectangular zones

Diagonal footprints still a problem

可部分解决该问题,相当于使用矩形,而不只是正方形来获取平均值。但是对于倾斜的区域还是不太好用,如下图最左上角的区域。

Irregular Pixel Footprint in Texture

质量更好的方法:

EWA filtering

EWA filtering

EWA使用多个区域来取平均。但是存储开销更大。