Aby temu zapobiec, stosuje się filtrowanie dwuliniowe, polegające na interpolacji wartości pomiędzy punktami reprezentującymi teksele.
Niech dla danego piksela na ekranie obliczony zostanie punkt w przestrzeni tekstury. Niech odpowiednie punkty reprezentujące teksle będą znajdowały się odpowiednio w punktach oraz:
Wówczas obliczona wartość tekstury w punkcie będzie wynosić:
gdzie zaś
Przykład implementacji W języku C procedura filtrowania dwuliniowego może zostać zaimplementowana następująco: double getBilinearFilteredPixelColor( Texture tex, double u, double v ) { u *= tex.size; v *= tex.size; int x = floor(u); int y = floor(v); double u_ratio = u - x; double v_ratio = v - y; double u_opposite = 1 - u_ratio; double v_opposite = 1 - v_ratio; double result = ( tex[x][y] * u_opposite + tex[x+1][y] * u_ratio ) * v_opposite + ( tex[x][y+1] * u_opposite + tex[x+1][y+1] * u_ratio ) * v_ratio; return result; }
Zobacz też filtrowanie anizotropowe filtrowanie trójliniowe teksturowanie
Bibliografia Foley J.D., Van Dam A., Feiner S.K., Hughes J.F., Phillips R.L.: Introduction to Computer Graphics, Addison-Wesley Longman Publishing Co. Inc., 1994.
Kategoria:Grafika komputerowa