К содержанию
fohbookбета/ TouchDesigner

Из чего состоит кадр

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 показывает историю кадра, и провалы видны только там.

Нашли в статье ошибку, устаревшее или непонятное место?

На других пультах

весь переводчик →
Кадры в секундуздесь — Cook time
  • ResolumeFPS
рядом по смыслу