Из чего состоит кадр
16,7 миллисекунды на всё. Как TouchDesigner тратит кадр, почему порядок задаёт вывод, а не семейство, и как за минуту понять, кто тормозит — процессор или видеокарта.
На кадр при 60 fps отведено 16,7 мс, при 30 — 33,3. Не уложились, и кадр пропущен. Оптимизация начинается с того, куда уходят эти миллисекунды.
За кадр TouchDesigner зовёт onFrameStart у Execute DAT, затем вывод
(перформ-окно, панели, операторы *Out, видимые вьюеры) тянет данные, и по
цепочке зависимостей считается всё нужное и изменившееся. TOP и рендер
отдают работу видеокарте, картинка уходит в окно, в конце вызывается
onFrameEnd. Порядок задают зависимости, семейство тут ни при чём:
сначала то, что нужно соседу, и так до вывода, а никому не нужный узел
не считается вовсе — Кук.
Значение из CHOP попадает в картинку в том же кадре, если картинка его
спросила. TOP to CHOP в Next frame (Fast) отстаёт на кадр, зато не
стопорит рендер, Immediate (Slow) отдаёт сразу и заставляет процессор
ждать видеокарту — Конвертация между семействами.
Python выполняется в главном потоке, и пока скрипт считает, кадр стоит; долгое
выносят в поток — Отложенный запуск и потоки.
Кто тормозит
Процессор и видеокарта образуют конвейер, и он работает со скоростью самого медленного участка. Если тормозит процессор, разгрузка видеокарты не даст ни кадра, и наоборот. Поэтому первым делом ищут, кто из двух.
| Ресурс | На что уходит | Чем смотреть |
|---|---|---|
| Процессор | CHOP, SOP, DAT, Python, подготовка TOP | Performance Monitor, средний клик |
| Видеокарта | Пиксели TOP, рендер, шейдеры, POP | probe в GPU Time, средний клик по TOP |
| Видеопамять | Текстуры TOP, кэши | Память видеокарты |
У TOP Performance Monitor показывает лишь подготовку на процессоре, время на видеокарте смотрят отдельно.
Два приёма из документации. Разрешение рендера и тяжёлых TOP в 64 × 64 или 32 × 32: выросла частота — виновата видеокарта, нет — процессор. Hog CHOP, который грузит процессор: упала частота, значит, виноват процессор, иначе видеокарта. Видеокарту почти всегда нагружает пиксельный шейдер: половина разрешения по обеим осям — четверть пикселей и примерно четверть времени.
Realtime и задержка
Realtime на таймлайне держит реальное время, пропуская кадры, а
выключенный считает каждый кадр сколько угодно долго. На шоу он включён;
выключают для покадровой записи и у клиентов
Sync In CHOP — Синхронизация машин.
Задержка и частота — разные вещи: честные 60 кадров могут идти
с задержкой 200 мс. Путь камера → захват → обработка → рендер → окно → экран прибавляет минимум кадр на каждом звене. Интерактиву важна
задержка, картинке под музыку — частота, Камеры и платы захвата.
Обычный выбор 60, для медленной инсталляции сойдёт 30, но движение грубее. Главное, чтобы частота проекта была равна частоте экрана: 60 против 59,94 дают рывок раз в несколько секунд, Идеальное воспроизведение.
Средние 60 с провалами до 20 хуже ровных 45. Канал msec у Perform CHOP
через Trail CHOP показывает историю кадра, и провалы видны только там.
Нашли в статье ошибку, устаревшее или непонятное место?
На других пультах
весь переводчик →- ResolumeFPS