
Всем привет, эта статья является краткой выжимкой другой статьи: Guertin, Jean-Philippe & McGuire, M. & Nowrouzezahrai, D.. (2014). A fast and stable feature-aware motion blur filter. High-Performance Graphics 2014, HPG 2014 - Proceedings. 51-60.
В ней описан алгоритм Motion blur эффекта, который был предложен авторами оригинальной статьи.
Итак, сам алгоритм:
- Изображение разбивается на - тайлов для максимального радиуса размытия пространства изображения - , что обеспечивает влияние на каждый пиксель не более чем его - окрестности тайла. 

- У каждого пикселя вычисляется своя скорость: 
где , а 
 — время экспозиции в секундах. 
- 
Каждому тайлу присваивается одна доминирующая скорость окрестности  Доминирующие векторы скоростей в тайле. Зеленым показан доминирующий вектор скорости среди соседних тайлов 
- 
Пиксельная ( ) и доминантная ( ) скорости пикселя p обрабатываются следующим образом: размещается ряд сэмплов вдоль центрального направления, интерполируя между нормированными направлениями и перпендикуляром к доминанте по мере уменьшения скорости пикселя до минимального порога пользователя :  Сэмлирование направлений (зеленый), (желтый) и (голубой) 
- На каждом тайле вычисляется угловая разница между максимальными скоростями тайла и ее соседей: 
где  — множество 
) соседних тайлов вокруг (и включая) тайла
.  

- Задается изначальный вес центра: 
где  - пользовательский параметр для изменения его важности. 
- Вычисляется цвет центра: 
где  — цвет пикселя.  
- 
Для каждого нового сэмпла S выполняются следующие шаги: 8.1 Задается значение , которое равно если номер сэмпла нечетный или если нечетный. 8.2 Стохастически смещается поиск текстуры с максимальной скоростью соседства для пикселей, расположенных у края плитки, используя простой линейный спад с управляемым наклоном .  Сэмплирование изменяется с большей вероятностью ближе к границам плитки 8.3 Рассчитываются параметры точки : 
8.4 Рассчитываются классификаторы для переднего и заднего плана:
       где  — значение глубины пикселя, а 
 имеет следующий вид:
8.5 Вычисляется вес данного сэмпла:
         где функциязадается следующим образом:  
          а функцияимеет следующий вид:  
          8.6 К изначальному весу центраприбавляется вес сэмпла
8.7 Рассчитывается цвет сэмпла учитывающий его вес:
           8.8 К цвету центраприбавляется цвет сэмпла
- Рассчитывается результат: 
Вот и все, это весь алгоритм. Надеюсь, эта статья поможет разработчикам компьютерной графики или тем, кто только начинает свой путь в этом ремесле. Всем спасибо за внимание!
 
           
 
friend001002
А зачем? Я слышал гипотезу, что фильмы, снятые в высоком FPS выглядят странно, поскольку наш мозг привык видеть много размытия в фильмах. Когда же размытия становится меньше -- выглядит странно.
Для этого эффекты размытия применяются? Просто в играх я их всегда отключаю.
ainurdada Автор
Эффект размытия передает ощущение скорости/движения. Таким играм как гонки этот эффект, к примеру, просто необходим. Также в некоторых играх разработчик не даст вам полностью отключить этот эффект (вы можете в настройках отключить его, но Motion blur все-равно останется, например, на колесах автомобиля, иначе, когда эти колеса начнут вращаться, на них будут появляться графические артефакты)
friend001002
Можно попробовать, давно в гонки не гонял. Но совсем недавно гонялся в Киберпанке, и было весело совсем без блюра, так что не факт, что блюр "просто необходим." Но да, может быть с ним будет лучше.
MonkeyWatchingYou
Часто в играх размытие реализовано только когда игрок в движении. Вся сцена размывается по вектору движения игрока. Но если остановиться, то видно, что весь мир, даже в лютом движении не размыт. Это и приводит к дисбалансу восприятия.
Я тоже отключаю всегда.
Кстати, может я упускаю чего и если вам встречались примеры глобального применения эффекта когда игрок статичен. Буду рад глянуть.
Вот.
ainurdada Автор
В файтингах, например, обычно используется Per-Object Motion Blur, то есть этот эффект размытия не привязан к движению/вращению камеры игрока, Motion blur там привязывается к анимациям персонажей, чтобы их движения казались более плавными
MonkeyWatchingYou
Кстати да. Вот если бы киношный блюр завезли в следующий киберпанк "Орион".
friend001002
А это кошерно? Не будет ли блюр мешать увидеть с точностью до кадра момент, когда пора на кнопку жать? Не зря же профи в КС и Overwatch ставят графон на минимум, чтобы как можно быструю и простую картинку получить. Хотя да, простые смертные могут блюр и не отключать.