Hacker News Digest

03 сентября 2025 г. в 11:27 • blog.frost.kiwi • ⭐ 256 • 💬 38

OriginalHN

#gpu#graphics-programming#shaders#image-processing#game-development#real-time-rendering#unreal#unity#frostbite

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 = лучшее соотношение качество/скорость для больших радиусов в реальном времени.