小编use*_*784的帖子

为什么使用双线性过滤放大/缩放时边界纹素会获得相同的颜色?

与双线性过滤一样,采样颜色是根据 4 个最接近的纹素的加权平均值计算的,那么为什么角纹素在放大时会得到相同的颜色呢?

例如:

在这种情况下(下图),当 3x3 图像放大/缩放为 5x5 像素图像(使用双线性过滤)时,角“红色”像素也会获得完全相同的颜色,而边框“绿色”也会获得完全相同的颜色吗?

3x3 像素到 5x5 像素缩放

在一些文档中,解释了角纹素以相同的颜色扩展以提供 4 个相邻的纹素,这解释了为什么角“红色”纹素在 5x5 图像中获得相同的颜色,但边界“绿色”纹素为何获得相同的颜色(如果它们是根据 4 个最接近的纹素的加权平均值计算的)

opengl shader

2
推荐指数
1
解决办法
960
查看次数

从对象空间转换为正常和切线到世界空间?

为了正确地将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)

shader cg matrix hlsl game-engine

1
推荐指数
1
解决办法
4298
查看次数

标签 统计

shader ×2

cg ×1

game-engine ×1

hlsl ×1

matrix ×1

opengl ×1