(англ. Vertex Attribute Compression / Vertex Packing) - **Суть**: удаляем неиспользуемые каналы (tangent, color и т. п.) и переводим оставшиеся данные в более компактный формат — например, позицию из трёх `float32` (12 байт) в три `float16` (6 байт) или нормаль из трёх `float32` в 2-байтовую октэдрическую проекцию. - **Что даёт**: уменьшает объём вершинного буфера ⇒ меньше пропускная способность памяти ⇒ быстрее GPU-обработка, особенно заметно на мобильных устройствах. - **В Unity**: частично закрывается настройкой _Mesh Compression_, но для агрессивного «упаковывания» (кастомные half-precision, octa-normals, uint-пакеты UV) пишут собственный импортер/пост-процессор. ### Стенограмма разговора с Владиславом К., где мне рассказали об этой оптимизации 01:40:36 — Еще есть другая оптимизация, она уже более низкоуровневая ![[Снимок экрана 2025-05-28 в 14.26.49.png]] 01:41:57 — Это называется вершинные атрибуты, то есть какие данные у каждой вершины хранятся, здесь есть позиция, нормаль, тангент-вектор и UV. 01:42:10 — Как минимум надо понять, что тангенты, может быть, вам и не нужны. У вас используются нормал-мапы? 01:42:17 — Нормал-мапы для чего используются? 01:42:19 — Напомни. 01:42:20 — Для того, чтобы добавить более мелких деталей на объектах. 01:42:25 — А, это искусственное углубление, я понял. 01:42:30 — А нет, не используется. ![[Снимок экрана 2025-05-26 в 17.19.31.png|500]] 01:42:33 — Вот, это уже можно взять, выбрать медведя. 01:42:39 — Здесь есть tangents. 01:42:42 — И вот здесь можно поменять на none, чтобы их не было. 01:42:47 — Вот, и уже чуть-чуть будет полегче. 01:42:51 — Если Unity, конечно, сама не обрезает при билде, может обрезать, может не обрезать. 02:17:39 — Вероятно, что Unity уже вырезает эти танги во время билда, потому что видишь, что шейдер на самом деле его не использует. 02:17:46 — Но Unity я бы не доверял, я бы лучше выключил в любом случае. ![[Снимок экрана 2025-05-28 в 14.29.15.png]] 01:42:57 — теперь тангенты ушли, остались позиции, нормали, UV. 01:43:05 — И видишь, каждый из этих атрибутов занимает какое-то количество байтов. 01:43:09 — И мобильные устройства, они прямо очень сильно упираются в скорость памяти. 01:43:14 — И значит, что если у тебя вершины будут занимать меньше памяти, они будут быстрее вытягиваться, быстрее загружаться и быстрее обрабатываться. 01:43:22 — Это тоже то, над чем можно поработать. 01:43:25 — Мы убрали тангенты, уже какая-то часть памяти ушла. 01:43:30 — Есть разные техники, которые позволяют запаковывать немножко другие форматы, позиции, нормали, чтобы они занимали меньше памяти. 01:43:39 — Вот здесь, например, позицию можно будет как-то чуть-чуть по-другому запаковать, чтобы она весила не 12 байт, а поменьше, например, 6 или 8. 01:43:51 — С нормальными тоже так же можно будет сделать. 01:43:53 — Таким образом, получится сделать, чтобы вершины занимали меньше памяти, и они будут быстрее на видеокарте обрабатываться, быстрее вытягиваться из памяти. 01:44:02 — То есть, такую вещь можно попробовать сделать. 01:44:04 — Это прям кастомный код для этого надо писать, в Unity для этого инструмента нет. 01:44:08 — Но это просто то, что можно сделать в игре, в которой сильный упор на вершине идёт. 01:44:16 — У Юнти такого инструмента нет. Насколько это большая работа, чтобы написать инструмент, чтобы умел и читать, и конвертировать в обе стороны, чтобы это всё работало? 01:44:34 — Это зависит в часах. 01:44:43 — Наверное, в каком-то совсем базовом варианте это можно было сделать рабочим, в базовом варианте. 01:44:51 — Что-то уже поумнее, где сильно можно ужаться, это уже, конечно, подольше, плюс еще тут же нужно постоянно делать замеры, проверять. 01:45:00 — То есть, ну, неделю, может быть, рабочую, две недели 01:45:05 — рабочую. 01:45:06 — Ну, я это оцениваю. 01:45:07 — Только я бы это делал, например. 01:45:09 — Если простой вариант, то, наверное, пару дней это 01:45:12 — было бы сделать реалистично. **Спикер 3:** 01:45:15 — С учетом тестов, с учетом подводных камней, с учетом 01:45:18 — всего пару дней. **Спикер 1:** 01:45:22 — Какой-нибудь, да, простой и безопасный вариант можно 01:45:25 — сделать. 01:45:26 — За пару рабочих дней, пару-тройку, может быть, да. **Спикер 3:** 01:45:29 — А так что-то более умное – это пару недель. **Спикер 1:** 01:45:31 — Да, да, там потому что уже такая грань, что дальнейшее урезание размеров этих вершин начинает влиять на точность мешей, начинают появляться артефакты, они начинают плохо выглядеть, если что-то делать не так. **Спикер 3:** 01:45:50 — Ну да, я видел это, когда ват-аниматор разрабатывали, было такое, да, я понимаю про что ты говоришь. **Спикер 1:** 01:45:56 — Вот это все нужно, с этим нужно аккуратно.