ПрограммированиеТерминыГрафика

Bilinear Filtering (Билинейная фильтрация)

Билинейная фильтрация — это процесс выборки нескольких пикселей из исходной текстуры в процессе отображения с последующим усреднением для получения окончательного значения пикселя. 

Описание
Ссылки

Описание

При обычном текстурировании мы получаем координаты в текстуре, округляем их до ближайшего целого числа и выбираем нужный цвет из текстуры. Псевдокод такой:

Ниже в примере color означает RGB вектор. Поэтому данный псевдокод выполняется для трех каналов RGB одноверменно.

color  texture[w][h];
int ui = (int)u;
int vi = (int)v;
color  point  = texture[ui][vi];

То есть мы как бы берем значение цвета в самой близкой к рисуемой точке, и из-за этого цвет резко меняется и возникает эффект блочности. Кроме того, при анимации округление будет делаться то в одну, то в другую сторону, из-за чего текстурированный объект будет сильно мерцать.

В случае билинейной фильтрации, мы, наоборот, получаем дробные части координат текстуры u и v и с помощью их определяем, какие тексели будут интерполироваться. Тем самым будут учитываться цвета четырёх ближайших текселей, и цвет будет плавно изменяться между ними, что придаст плавность анимации:

color  texture[w][h];

float u,v;

int ui = (int)u;
int vi = (int)v;

float du = u – ui;
float dv = v – vi;

color  point  = (1 – du)*(1 - dv)*texture[u][v] + (du)*(1 - dv)*texture[u+1][v] 
 + (du)*(dv)*texture[u+1][v+1] + (1 – du)*(dv)*texture[u][v+1];

Заметим, что понятие "билинейная фильтрация", точно так же, как и сопутствующее ему понятие "трилинейная фильтрация", относится к фильтрации двумерных текстур. К трехмерным текстурам, например, понятие билинейной фильтрации неприменимо, а понятие трилинейной фильтрации означает совсем другое.

Ссылки

http://ru.wikipedia.org/wiki/Билинейная_интерполяция
http://www.nullterminator.net/gltexture.html

Что такое Bilinear Filtering (Билинейная фильтрация)?

#bilinear, #filtering

31 июля 2005 (Обновление: 13 июня 2009)