与双线性过滤一样,采样颜色是根据 4 个最接近的纹素的加权平均值计算的,那么为什么角纹素在放大时会得到相同的颜色呢?
例如:
在这种情况下(下图),当 3x3 图像放大/缩放为 5x5 像素图像(使用双线性过滤)时,角“红色”像素也会获得完全相同的颜色,而边框“绿色”也会获得完全相同的颜色吗?
![]()
在一些文档中,解释了角纹素以相同的颜色扩展以提供 4 个相邻的纹素,这解释了为什么角“红色”纹素在 5x5 图像中获得相同的颜色,但边界“绿色”纹素为何获得相同的颜色(如果它们是根据 4 个最接近的纹素的加权平均值计算的)
为了正确地将Normal(不是位置的方向)从Object空间转换为World space,我们将它与Model matrix/_World2Object matrix(在Unity中)的逆相乘.
那么为什么Tangent(它与法线相切并且也是方向 - 它不是一个位置)与Model Matrix/_Object2World(在Unity中)相乘以将其转换为世界空间?
例如:代码:用于在着色器中读取切线空间法线的代码:
o.normalWorld = normalize( mul(v.normal, _World2Object) );
o.tangentWorld = normalize( mul(_Object2World, v.tangent) );
o.binormalWorld = normalize( cross(o.normalWorld, o.tangentWorld) * v.tangent.w );
Run Code Online (Sandbox Code Playgroud)