BMW відкрила вихідні тексти проекту RAMSES (Rendering Architecture for Multi-Screen EnvironmentS)
BMW відкрила вихідні тексти проекту RAMSES (Rendering Architecture for Multi-Screen EnvironmentS)
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-контент поверх звичайних мереж для відображення без затримок та розривів. Для прискорення завантаження та запуску, дані сцен та пов'язані з ними ресурси (тектури, шейдери тощо) можуть бути серіалізовані у файли та прокешовані на стороні, що відповідає за відображення.
Мінімальним Оброблюваним елементом контенту є сцена. Наприклад, мультимедійний програвач може сформувати дві сцени – одну з основним інтерфейсом для мультимедійного екрану, а іншу зі списком пісень для відображення на панелі приладів. Сцени різних програм можуть поєднуватися на одному екрані, наприклад, у наведеному вище прикладі список пісень може бути суміщений з інтерфейсом приладової панелі.
