Применяет к изображению ядро размытия. tc_offset
необходимо правильно инициализировать приложением, чтобы сформировать область точек выборки 3x3 вокруг фактической координаты текстуры:
0 0 0
0 x 0
0 0 0
(при условии, что x является исходной координатой). Смещение для верхней левой точки выборки будет -1/width,-1/height
. Смещение для центральной точки должно быть тщательно выровнено по центру текселя (проблема отклонения на 0,5). Кроме того, аппаратный билинейный фильтр можно использовать для дешевого увеличения степени размытия (путем выборки между текселями).
Остальная часть шейдера масштабирует образцы по их расстоянию. Обычно это также вычисляется заранее:
for(int i = 0; i < NUM_SAMPLES; ++i) {
result += texture2D(sampler,texcoord+offsetscaling[i].xy)*offsetscaling[i].z;
}