Компания BMW открыла систему распределенной 3D-отрисовки RAMSES
Компания BMW открыла исходные тексты проекта RAMSES (Rendering Architecture for Multi-Screen EnvironmentS), в рамках которого подготовлена распределенная система отрисовки 3D-контента для встраиваемых платформ, сфокусированная на обеспечении высокой эффективности с позиции потребления ресурсов и пропускной способности. Код написан на языке C++ и распространяется под лицензией MPL 2.0 (Mozilla Public License).
Проект разработан для оптимизации отрисовки контента в информационной развлекательных системах, содержащих несколько экранов. RAMSES представляет собой прослойку, позволяющую применить клиент-серверную модель для отрисовки, при которой один процесс формирует 3D-контент, а другой занимается его отрисовкой. При этом процесс отрисовки может выполняться на другом устройстве или в виртуальном окружении.
Более того, один вещающий процесс может передавать содержимое на несколько процессов отрисовки (отображение на разных экранах), несколько процессов отрисовки могут вещать через один процесс отрисовки (работа с несколькими приложениями на одном экране) или смешивая оба варианта (работа с несколькими приложениями на нескольких экранах). В итоге формируется своеобразный дисплейный кластер, в которых входит набор имеющихся экранов и вычислительных устройств, которые работают как единая экосистема, пори том, что в состав кластера могут входить устройства на базе разных платформ и операционных систем (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-контент поверх обычных сетей для отображения без задержек и разрывов. Для ускорения загрузки и запуска данные сцен и связанных с ними ресурсов (текстуры, шейдеры и т. п.) также могут быть сериализированы в файлы и прокэшированы на стороне, отвечающей за отображение.