Искать на сайте Unity

Будущее сжатия данных в Unity

16 декабря 2015 г. через Технологии | 4 мин. читать
Placeholder image Unity 2
Placeholder image Unity 2
Поделиться

Is this article helpful for you?

Thank you for your feedback!

Здравствуйте!

Меня зовут Рик Гельдрайх (Rich Geldreich), я разработчик игр, графический программист и специалист по сжатию данных.  Я работаю в игровой индустрии более 20 лет; за это время я участвовал в создании, оптимизации и улучшении различных игровых движков в таких компаниях, как Ensemble Studios (Microsoft) и Valve.

На протяжении этих лет, обычно по ночам между выпуском игр, я работал над несколькими библиотеками сжатия данных, предназначенным для разработчиков игр. Некоторых из них имеют открытый код, другие - закрытый. Среди них были такие, как crunch, LZHAM, miniz и jpeg-compressor. Еще я написал picojpeg — декодер для JPEG-изображений, оптимизированный для маломощных встроенных 8-битных процессоров. Эти библиотеки применяются не только в играх, но и в других интересных приложениях: picosatellites, доставке контента WebGL, декодировании UHD-видео с помощью графического процессора, а также в обучающих программах.

Что такое сжатие и зачем оно нам нужно

Мировой специалист Мэтт Мэхони сформулировал определение сжатия данных таким образом: «Искусство уменьшения количества битов, необходимого для хранения или передачи данных». Значимость этой технологии трудно переоценить: она экономит время, уменьшает загруженность постоянной и оперативной памяти и каналов связи. С помощью сжатия возможно решение задач, которые в противном случае считались бы непрактичными или неэкономичными с учетом существующих возможностей по хранению, передаче и обработке информации.

Существует два основных класса систем сжатия данных: специализированные системы, допускающие потерю данных в определенных пределах (JPEG, MP3) и не допускающие потерь (ZIP). Эти классы подразделяются на огромное количество подходов, алгоритмов и приложений. Некоторые наиболее значимые системы входят в мировые стандарты и включаются в вычислительное оборудование на аппаратном уровне.

Unity использует как сторонние, так и собственные алгоритмы сжатия для обработки звуков, текстур, анимации и пакетов ресурсов. Без них объем памяти, необходимый для функционирования Unity, был бы непрактично велик — особенно для мобильных устройств.

Одна из задач команды Data Compression Team — настройка и оптимизация используемого набора систем сжатия данных. В настоящее время создается новая офлайн-система сжатия двоичной информации с использованием дельта-кодирования для внутреннего использования командами Unity. Также поставлена долговременная задача: исследование всей платформы Unity с целью определить, каким образом можно ликвидировать программные ограничения, которые понижают эффективность сжатия данных.

Чего мы добились

Присоединившись к Unity, я вместе с Александром Суворовым занялся изучением технологий сжатия, не допускающих потерь. Такое сжатие используется, например, для скачиваемых пакетов данных Unity. Целью работы было определение текущего состояния технологии и составление прогнозов о развитии. Особое внимание мы уделили сжатию текстур с помощью графического процессора.

Мы разработали нашу первую библиотеку сжатия данных с использованием дельта-алгоритмов, пригодную для мобильных устройств. Unity использует эту библиотеку для эффективной передачи «нового» набора данных при наличии связанного «старого» набора на обоих сторонах передачи. Кроме того, мы испытываем версию не допускающего потерь компрессора LZHAM, использующую JavaScript и предназначенную для сетевых приложений.

Изучая технологии сжатия без потерь мы нашли возможность, которая может быть включена в существующие системы сжатия для быстрого создания новых индивидуальных систем сжатия текстур, геометрии и анимации. Мы также рассматриваем возможность применения новых принципов передачи данных системам сжатия без потерь. Продуктивно обсудив все это с командами Unity Cloud Build и Services, мы приступили к исследованию возможности перевода используемой в сейчас офлайн-системы сжатия данных с использованием дельта-алгоритмов в режим реального времени.

Наконец, мы нашли ключевую задачу, которую команда Data Compression Team будет решать в долгосрочной перспективе: создать новые системы сжатия, допускающие и не допускающие потери, оптимизированные специально для работы с данными Unity

16 декабря 2015 г. через Технологии | 4 мин. читать

Is this article helpful for you?

Thank you for your feedback!

Unity, логотипы Unity и другие торговые знаки Unity являются зарегистрированными торговыми знаками компании Unity Technologies или ее партнеров в США и других странах (подробнее здесь). Остальные наименования и бренды являются торговыми знаками соответствующих владельцев.