Разрешение и формат пикселя
Output Resolution и Pixel Format на странице Common решают, сколько узел стоит. Когда уменьшать, когда брать 16 бит и почему 32 бита не для картинки.
Из всех параметров TOP важнее всего два на странице Common:
Output Resolution и Pixel Format. От них зависит, сколько памяти
займёт узел и сколько времени будет считаться.
Разрешение
По умолчанию стоит Use Input, и размер наследуется от входа: его задают
один раз в источнике, дальше он идёт по цепочке. Генератор без входа —
Noise, Ramp, Constant — берёт размер из поля Resolution. В меню есть
кратные варианты Half, Quarter, Eighth, 2X, 4X, 8X и режимы
Fit Resolution, Limit Resolution, Custom Resolution. Кратные удобны
тем, что идут за входом: поменяли источник — уменьшенная ветка
поменялась вместе с ним.
Явно размер задают в источнике генерации, перед дорогой операцией вроде блюра или конвертации в CHOP и в конце, под конкретный выход.
В кадре 512 × 512 примерно в тридцать раз меньше пикселей, чем в 4K. Маске, блюру, свечению и фидбэку полное разрешение почти не нужно: блюр, посчитанный маленьким и растянутый до 4K, часто на глаз не отличить.
Формат
| Формат | Бит на канал | Диапазон | Когда нужен |
|---|---|---|---|
| 8-bit fixed (RGBA) | 8 | 0…1, 256 градаций | Генераторы по умолчанию: видео, вывод |
| sRGB 8-bit fixed (RGBA) | 8 | 0…1 с кривой sRGB | 8 бит, где тёмным тонам достаётся больше градаций |
| 10-bit RGB, 2-bit Alpha | 10 | 0…1, 1024 градации | Плавнее 8 бит при той же памяти, если альфа не нужна |
| 11-bit float (RGB) | 11/11/10 | от 0 и выше 1, без отрицательных | Свечение и сложение выше 1.0 при памяти 8-битного RGBA; альфа всегда 1 |
| 16-bit fixed (RGBA) | 16 | 0…1, 65 536 градаций | Точные маски и данные в пределах 0…1 |
| 16-bit float (RGBA) | 16 | любые, включая отрицательные | Фидбэк, накопление, градиенты, HDR |
| 32-bit float (RGBA) | 32 | любые, включая отрицательные | Данные, позиции, точные расчёты |
| Mono / RG / A | 8/16/32 | — | Маски и пары значений: экономит память |
По умолчанию формат тоже Use Input. Фиксированные форматы держат только
0…1, плавающие — любые числа. Память растёт линейно: 16 бит вдвое
дороже 8, 32 — вчетверо, и тридцать узлов в 4K на 32 битах занимают
гигабайты видеопамяти. У 32-битного float, по
документации Derivative, нет фильтрации текстур — выборка всегда
по ближайшему пикселю, поэтому картинку, которую масштабируют и вращают,
держат в 16 битах.
8 бит не хватает на плавных градиентах, где появляются полосы — особенно на ярком LED-экране и тёмных заливках. Не хватает в фидбэке: каждый проход теряет точность, и петля на 8 битах быстро превращается в грязь. Не хватает при накоплении и сложении: всё, что выше 1.0, фиксированный формат отрезает. А позиции, нормали и скорости в инстансинге хранят только в 32-битном float.
Последний шаг перед выводом обычно снова 8 бит — экран больше не покажет. Исключение составляют HDR и 10-битные экраны, формат окна для них настраивается в Window COMP — Perform-окно.
Форма картинки
Разрешение здесь — пиксели, а не форма: 1920 × 1080 и 1408 × 896 одинаково
законны, а LED-экрану разрешение задаёт его процессор, и чаще всего
нестандартное — LED-экран. Output Aspect отдельно
задаёт соотношение сторон, с которым картинку показывают вьюеры
и используют другие операторы. Не совпало оно с отношением пикселей —
пиксели стали неквадратными, и всё «почему-то сплющено».
Каждое изображение в проекте, а не только окно вывода. Свободна лишь ширина картинок высотой в 1–2 пикселя — Редакции и лицензии. Узнают об этом обычно на площадке.
Слабая машина и проверка
Edit → Preferences → TOPs → Global Resolution Multiplier умножает
разрешение всех TOP, у которых на Common включён
Use Global Res Multiplier, — проект с мощной станции открывается
на ноутбуке в половинном размере без правок.
Что на самом деле, показывает средний клик по TOP: разрешение, формат,
видеопамять, время кука. Info CHOP отдаёт то же каналами resx, resy,
gpu_memory_used, cook_time. С этого начинают, когда «почему-то
тормозит».
Нашли в статье ошибку, устаревшее или непонятное место?