Video Game Blurs (and how the best one works)
- Размытие в играх — основа эффектов: Bloom, DoF, UI.
- Цель: быстрое размытие в реальном времени на GPU.
- Путь: от простого Box Blur до Dual Kawase Blur.
Box Blur
Среднее цветов в квадрате.
Проблема: O(n²) по радиусу, медленно.
Ядро (kernel)
Матрица весов для свёртки.
Box = все веса 1.
Gaussian = веса по нормальному распределению.
Gaussian Blur
Два прохода: горизонталь + вертикаль → O(n) вместо O(n²).
Но: при радиусе > 10 всё ещё дорого.
Частоты
Размытие = низкочастотный фильтр.
Можно свернуть сразу в частотной области, но FFT на маленьких изображениях не выигрывает.
Оптимизации
- Билинейная интерполяция: считаем не каждый пиксель, а с шагом 2×, экономим 4× выборок.
- Даунсемплинг: уменьшаем изображение в 2×, размываем, растягиваем обратно — почти бесплатно.
Kawase Blur
4–5 проходов с offset-выборками по спирали.
Выглядит как Gaussian, но дешевле при больших радиусах.
Dual Kawase Blur
Пара Kawase-проходов на уменьшенной копии + один upscale.
Результат: кинематографическое размытие за O(log n).
Используют Unreal, Unity, Frostbite — де-факто стандарт.
Итог
Dual Kawase = лучшее соотношение качество/скорость для больших радиусов в реальном времени.