一般直接把纹理颜色用作 $k_d$ 。
for each rasterized screen sample (x, y):
(u, v) = evaluate texture coordinate at (x, y);
texcolor = texture.sample(u, v);
set sample's color to texcolor;
这样的情况::纹理 256x256,但是渲染 4k ???
如果称 pixel 生成画面上的像素,相对地一般称之为 texel 为纹理上的像素。如图便为很多的 pixel 对应一个 texel 。
最邻近(Nearest)
双线性(Bilinear)
lerp = linear interpolation
$$ {\rm lerp}(\lambda, v_0, v_1) = v_0 + \lambda (v_1 - v_0) $$
$$ f(x, y) = {\rm lerp}(t, {\rm lerp}(s, u_{00}, u_{10}), {\rm lerp}(s, u_{01}, u_{11})) $$
双立方 / 双三次(Bicubic)
双立方插值会取邻近的 16 个点进行运算,效果也更好些。
纹理很大的话反而会产生严重问题。
当像素点对应的纹理部分过大的时候,对应点采样的方式又会发生问题。
也就是说,这次从左边来到了右边。
可以是可以,但是开销很大效果还不好。