Компания BMW открыла исходные тексты проекта RAMSES (Rendering Architecture for Multi-Screen EnvironmentS), в рамках которого подготовлена распределённая система отрисовки 3D-контента, сфокусированная на обеспечении высокой эффективности с позиции потребления ресурсов при использовании на встраиваемых системах и пропускной способности при трансляции вывода по сети. Код написан на языке C++ и распространяется под лицензией MPL 2.0 (Mozilla Public License).

Проект разработан в процессе оптимизации отрисовки контента в автомобильных информационно-развлекательных системах, содержащих несколько экранов и вычислительных устройств. RAMSES представляет собой прослойку, позволяющую применить клиент-серверную модель для отрисовки, при которой один процесс формирует 3D-контент, а другой занимается его отрисовкой. При этом процессы могут выполняться на другом устройстве или в разных виртуальных окружениях.

Более того, один вещающий процесс может передавать содержимое на несколько процессов отрисовки (отображение на разных экранах), несколько процессов отрисовки могут вещать через один процесс отрисовки (работа с несколькими приложениями на одном экране) или смешивая оба варианта (работа с несколькими приложениями на нескольких экранах). В итоге формируется своеобразный дисплейный кластер, в которых входит набор имеющихся экранов и вычислительных устройств. Элементы в дисплейном кластере работают как единая экосистема, при том, что в состав кластера могут входить устройства на базе разных платформ (встраиваемые, настольные) и операционных систем (Windows, Linux) с различными графическими стеками (Wayland, X11, WGL, Integrity OS).

RAMSES предоставляет обвязку вокруг существующих реализаций OpenGL, позволяющую применять предлагаемую модель распределённой отрисовки для любых OpenGL-приложений. Поддерживается работа с различными версиями OpenGL (OpenGL ES 3.0+, OpenGL 4.2, 4.5 и т.п.), что позволяет использовать одну кодовую базу на различных платформах, предоставляющих разные версии OpenGL.

RAMSES также предоставляет собственный низкоуровневый API, близкий к OpenGL. Данный API упаковывает команды и ресурсы OpenGL для минимизации трафика между клиентом и сервером, что позволяет передавать высококачественный 3D-контент поверх обычных сетей для отображения без задержек и разрывов. Для ускорения загрузки и запуска, данные сцен и связанные с ними ресурсы (текстуры, шейдеры и т.п.) могут быть сериализированы в файлы и прокэшированы на стороне, отвечающей за отображение.

Минимальным обрабатываемым элементом контента является сцена. Например, мультимедийный проигрыватель может сформировать две сцены — одну с основным интерфейсом для мультимедийного экрана, а другую со списком песен для отображения на приборной панели. Сцены от разных приложений могут совмещаться на одном экране, например, в вышеприведённом примере список песен может быть совмещён с интерфейсом приборной панели.

Компания BMW открыла систему распределённой 3D-отрисовки RAMSES

Источник

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here