К содержанию
fohbook/ TouchDesigner
профи

Инстансинг

Тысячи копий одного объекта за один вызов рендера: как задать позиции, цвета и повороты данными.

Инстансинг — способ нарисовать много копий одной геометрии за один вызов видеокарты. Тысяча кубов через Copy SOP уронит проект; тысяча кубов через инстансинг работает без напряжения.

Где это включается

На Geometry COMP, страница Instance:

  • Instancing — включить;
  • Instance Count или источник данных;
  • Translate OP / Rotate OP / Scale OP — откуда брать преобразования;
  • Color OP — откуда брать цвет;
  • Tex OP — координаты текстуры на инстанс.

Источником может быть CHOP (канал = свойство, сэмпл = экземпляр), DAT (строка = экземпляр) или TOP (пиксель = экземпляр).

Три источника данных

Источник Сколько инстансов Когда
CHOP тысячи Данные уже в CHOP: звук, трекинг, DMX
DAT сотни Фиксированный список из таблицы
TOP миллионы Позиции считаются на GPU — CHOP to TOP

Вариант с TOP — самый быстрый: данные никогда не покидают видеокарту. Один пиксель = один инстанс, RGB = XYZ.

Простой пример

noise CHOP (3 канала × 500 сэмплов) ──▶ null ──┐
                                                ├─▶ geo1 (Instance)
sphere SOP ─────────────────────────────────────┘

В Geometry COMP: Translate OP = null, каналы chan1 chan2 chan3. Пятьсот сфер, разбросанных шумом. Дальше цвет — из другого CHOP, размер — из третьего.

Что раздавать по инстансам

  • Позиция — сетка, окружность, точки геометрии (SOP to CHOP), позиции светильников из патча.
  • Цвет — из аудиоанализа, из палитры, из сэмплирования картинки.
  • Поворот — направление на камеру, направление движения, случайный шум.
  • Масштаб — громкость, расстояние, возраст частицы.
  • UV-смещение — какой кусок атласа показывать: так делают спрайты и разные символы из одной текстуры.

Инстансинг для света

Отдельное важное применение: один инстанс = один прибор. Позиции берутся из патча, цвет — из того, что должно светить, и та же самая сцена служит и картинкой для пре-виза, и источником данных для DMX — Наведение по 3D-цели.

Один материал на все инстансы

Инстансы делят материал. Различия задаются данными (цвет, UV), а не разными материалами. Как только понадобилось «этому кубу другой шейдер» — это уже не инстансинг, а отдельная геометрия.

Инстансы считаются, даже если их не видно

Миллион инстансов за камерой всё равно обрабатывается вершинным шейдером. Отсекайте лишнее данными: не рисуйте то, чего не должно быть, вместо того чтобы прятать это за пределами кадра.

рядом по смыслу