Фильтры и искажения
Каждый фильтр — проход по всем пикселям. Чем двигают и размывают картинку, почему Displace сдвигает картинку вбок и как блюр сделать дешёвым.
Обработка картинки — это проходы по пикселям, и каждый узел стоит примерно «разрешение × сложность». Вся оптимизация отсюда.
| Оператор | Что делает | Стоимость |
|---|---|---|
| Transform | Сдвиг, поворот, масштаб, повтор | Низкая |
| Blur | Размытие: гауссово, прямоугольное и другие ядра | Растёт с радиусом |
| Bloom | Свечение вокруг ярких мест, как в объективе | Средняя |
| Edge | Контуры | Низкая |
| Threshold | Порог: чёрное или белое | Низкая |
| Displace | Смещение пикселей по второй картинке | Средняя |
| Convolve | Свёртка произвольным ядром | Зависит от ядра |
| Emboss | Рельеф | Низкая |
| Chroma Key | Ключ по цвету | Низкая |
| Luma Blur | Размытие, зависящее от яркости второго входа | Высокая |
| Slope | Градиент яркости в вектор | Низкая |
| Analyze | Свёртка всей картинки в одно значение | Низкая |
| Resolution / Fit | Пересчёт размера | Низкая |
| Flip / Reorder | Переворот, перестановка каналов | Очень низкая |
Displace
Displace TOP двигает пиксели первого входа по данным второго, обычно
шума, и из него растёт почти всё «жидкое», «дымное»
и «стеклянное». Какие каналы второго входа двигают по X и Y, выбирают
Horizontal Source и Vertical Source, силу — Displace Weight.
Source Midpoint — значение, которое считается нулём; у беззнаковой
картинки 0…1 это 0,5. Картинка смещается в одну сторону — почти всегда
середина выставлена не там.
Дешёвый блюр
Размытие дорожает с радиусом, Filter Size. У Blur TOP есть Pre-Shrink:
картинка уменьшается вдвое столько раз, сколько указано, и размывается
уже маленькой — выходит как больший радиус за меньшую цену, хоть и чуть
грубее честного большого ядра. То же вручную — Resolution TOP перед
блюром и растяжка после. Для свечения есть Bloom TOP: сам находит яркое,
размывает и складывает с картинкой. Руками это уменьшение, блюр и Add
к оригиналу в 16 битах.
Analyze
Analyze TOP сворачивает картинку в среднее, минимум, максимум, сумму или число пикселей — целиком, по строкам или по столбцам. Свёртка идёт на видеокарте, и TOP to CHOP забирает после неё пару чисел вместо кадра. На этом строят автояркость, детект движения и реакцию на камеру.
Порядок
Сначала уменьшают, потом обрабатывают, в конце увеличивают. И что можно посчитать один раз, считают один раз и выводят в Null.
Один блюр для трёх эффектов считают один раз и раздают из Null. Три копии одного узла в разных ветках — частая причина «почему у меня 25 кадров».
Цепочку из десятка узлов, которые по сути делают над пикселем одну формулу, дешевле и понятнее заменить одним GLSL TOP. Порог — пять-шесть узлов в полном разрешении ради одной формулы.
Нашли в статье ошибку, устаревшее или непонятное место?