Сжатые атласы в Unity Runtime

Как сжать, но не пережать текстурные атласы в рантайме.

Сжатые атласы в Unity Runtime
169169

Расскажите пожалуйста поподробнее об этом видео оптимизации, выходит что объединив модель персонажа на котором висит много Game Object'ов и текстур мы получаем одну 3д модель и 1 текстуру, или все так же несколько 3д моделей 1 одну текстуру что умещается в 1 draw call?

Ответить

Правильнее говорить не про GameObject'ы, а про Renderer'ы. Несколько SkinnedMeshRenderer'ов (висящих на разных GameObject'ах) превращаются в один SkinnedMeshRenderer, у которого в качестве меша используется подготовленный в рантайме меш. Этот меш представляет собой комбинацию всех исходных мешей, которые использовались в изначальных рендерерах. Для такого объединения мешей можно найти общее решение на просторах ассет стора, а может быть и остального интернета.

На выходе мы получаем один SkinnedMeshRenderer с одним комбинированным мешом, одним материалом и одним набором текстур (диффузка + нормалка). Иерархия GameObject'ов при этом остается, потому что они - суть кости скелета, к которому привязан скин. Но за счет того, что рендерер один, материал один, набор текстур один, то и рисуется всё в один drawcall.

1
Ответить