Инстансинг
Тысячи копий одного объекта за один вызов рендера: как задать позиции, цвета и повороты данными.
Инстансинг — способ нарисовать много копий одной геометрии за один вызов
видеокарты. Тысяча кубов через 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), а не разными материалами. Как только понадобилось «этому кубу другой шейдер» — это уже не инстансинг, а отдельная геометрия.
Миллион инстансов за камерой всё равно обрабатывается вершинным шейдером. Отсекайте лишнее данными: не рисуйте то, чего не должно быть, вместо того чтобы прятать это за пределами кадра.