Pull to refresh
222.75
Serverspace
IT-инфраструктура | Удвоение платежа по коду HABR

Трёхмерные, часть 2. О 3D-интерфейсах в операционных системах

Level of difficultyEasy
Reading time6 min
Views2.7K


Прошлая статья была посвящена первым робким попыткам создать удобный трехмерный интерфейс для операционных систем, однако ни одна из этих попыток не увенчалась успехом. Тем не менее существуют проекты, которые все-таки «выстрелили», и о них — наш сегодняшний рассказ.

Композитные оконные менеджеры


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

Традиционные менеджеры окон вроде X Window System используют прямое отображение экранных объектов (впрочем, X Window поддерживает и композитные менеджеры как расширение). Это значит, что каждое окно рисует свое содержимое непосредственно на экране в определенной области видимого пространства. Когда окно перемещается или перекрывается другим окном, система должна быстро «перерисовать» его, чтобы продемонстрировать пользователю произошедшие изменения. При этом окна не знают о содержимом друг друга, что может вызывать всевозможные сбои в процессе рендеринга и повлечь появление визуальных артефактов.



Композитные оконные менеджеры используют так называемое косвенное отображение окон. При таком подходе каждое окно рендерится сначала в отдельном буфере — специальной области памяти, а не непосредственно на экране. Композитный менеджер берет содержимое этих буферов и создает финальное изображение для дисплея, комбинируя все окна вместе. Это позволяет более широко использовать различные визуальные эффекты, такие как прозрачность, тени, плавные анимации, и даже псевдотрехмерность — поскольку менеджер заранее располагает информацией о взаимном расположении окон, они уже «подготовлены» и «собраны» в единое изображение.

Есть и еще одно важное отличие: в традиционных оконных менеджерах основная нагрузка по рендерингу ложится на центральный процессор. Видеокарта практически не задействована в этом процессе, в связи с чем при большом количестве одновременно открытых окон процессор перегружается задачами, и интерфейс начинает работать медленно. Композитные менеджеры, наоборот, активно задействуют видеокарту: буферы с содержимым окон отправляются на обработку в GPU, и большинство эффектов рендерятся видеочипом, что снимает нагрузку с процессора. Именно это делает возможной быструю отрисовку сложных графических эффектов, включая трехмерное отображение пользовательского интерфейса ОС. Наконец, композитные менеджеры, создавая буфер для каждого отдельного окна, помогают изолировать процессы. Если одно окно зависнет или крашнется, это никак не повлияет на отображение других открытых в системе окон.

В современных версиях Windows и macOS композитные оконные менеджеры встроены в систему, и пользователь порой даже не догадывается об их существовании. В Linux используются свои композитные менеджеры, базирующиеся на X Window, вроде Mutter и KWin, которые отвечают за интерфейсы в GNOME и KDE соответственно. Но есть и другие легендарные «композиты», завоевавшие в свое время заметную популярность.

Compiz и Compiz Fusion


Широко известный проект Compiz относится к категории композитных оконных менеджеров для Linux, он опирается на X Window System и использует OpenGL. По большому счету, Compiz — это не самостоятельный 3D-интерфейс, а набор плагинов, декораторов, инструментов настройки окон и эффектов для X, в связи с чем он и не попал в предыдущий обзор. Тем не менее Compiz был особенно популярен в середине 2000-х и долгое время служил эталоном того, на что способны современные оконные менеджеры с композитингом — для своего времени он стал настоящим прорывом в области интерфейсов с поддержкой 3D-эффектов.



Проект Compiz зародился в 2006 году в недрах компании Novell как часть дистрибутива SUSE Linux. Создатели хотели продемонстрировать возможности графического стека OpenGL в Linux — он использовался для создания разнообразных визуальных эффектов: плавных переходов, анимации окон, размытия и прозрачности. На фоне привычного Linux-окружения, вроде оконных интерфейсов GNOME 2 и KDE 3, это выглядело, прямо скажем, новаторски.



Одна из наиболее востребованных функций Compiz — та самая пресловутая возможность трехмерного представления интерфейса, в частности, в виде 3D-куба, позволявшего пользователю быстро переключаться между Рабочими столами. Еще одна интересная особенность проекта — его модульная архитектура. Базовая версия Compiz позволяет устанавливать множество различных плагинов, дополняющих его новыми функциями, среди которых эффекты для анимации окон, переключения рабочих столов, масштабирования и настройки прозрачности.

В 2007 году, после слияния команд Compiz и Beryl, этот продукт разделился на две версии: собственно, Compiz (Compiz-core), представлявший собой базовый оконный менеджер с поддержкой композитных эффектов, и Compiz Fusion, который добавлял к нему набор дополнительных плагинов и инструментов для более гибкой настройки и расширенной функциональности. Иными словами, Compiz оставался главным оконным менеджером, выполняя базовые задачи отображения и управления окнами. При этом он был сконцентрирован на стабильности и оптимизации рендеринга, обеспечивая работу таких эффектов, как трехмерное представление Рабочего стола, прозрачность и основные анимации. Тогда как Compiz Fusion представлял собой коллекцию плагинов и инструментов для кастомизации интерфейса. Он расширял функционал Compiz, добавляя новые, уникальные визуальные эффекты, а также более гибкие настройки. В набор Compiz Fusion входили такие популярные плагины, как Expo, Scale, Wobbly Windows (эффект «желе» для окон) и Burn (эффект «сгорания» окна при его закрытии).

В 2010 году главный разработчик Compiz Сэм Спислбери перешел в компанию Canonical для дальнейшего развития Ubuntu, и это стало началом конца проекта. В 2013-м Canonical решила отказаться от дальнейшего развития Compiz и переместить фокус на собственный проект Mir. Это событие стало поворотным моментом, после которого активная эволюция Compiz фактически прекратилась. Однако именно благодаря этому проекту пользователи Linux смогли оценить, на что способна система в плане визуальных эффектов. Вдохновленные возможностями Compiz, другие оконные менеджеры начали интегрировать популярные композитные эффекты, и сегодня они стали стандартом в большинстве современных дистрибутивов Linux, благодаря чему такие функции, как плавные анимации и прозрачность, доступны пользователям без необходимости устанавливать какой-то дополнительный софт.

Beryl


Beryl был форком Compiz, созданным независимыми разработчиками, которые хотели добавить в исходный проект более продвинутые визуальные эффекты и расширенные настройки. В то время как Compiz оставался консервативным, фокусируясь на стабильности, Beryl предлагал больше визуальных эффектов, уникальных анимаций и расширенный набор настроек для персонализации интерфейса.



Сообщество решило создать форк, чтобы реализовать те возможности, которые в Compiz считались второстепенными. Beryl, как и Compiz, использовал OpenGL для отрисовки интерфейса с аппаратным ускорением. Этот оконный менеджер также был модульным, однако Beryl разрабатывался сообществом, которое быстро откликалось на отзывы пользователей и активно внедряло новые идеи, вследствие чего проект обновлялся чаще, чем его «прародитель». Для управления настройками использовался удобный графический модуль Beryl Settings Manager, который позволял включать и кастомизировать плагины, изменять комбинации клавиш и гибко менять параметры для каждого эффекта. Это было особенно важно для пользователей, которые не хотели копаться в конфигурационных файлах. Поскольку Beryl основывался на коде Compiz и поддерживал многие плагины и эффекты из родительского проекта, это позволяло пользователям легко перейти с одного менеджера на другой.

Растущая популярность Beryl не могла не повлиять на сообщество разработчиков Compiz. В 2007 году было решено объединить усилия: вместо двух конкурирующих проектов появилась платформа, сочетающая надежность Compiz и эффекты Beryl — Compiz Fusion. Этот продукт собрал в себе лучшие элементы обоих менеджеров: от Compiz — стабильную основу, от Beryl — множество уникальных эффектов и улучшений интерфейса.

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

Вместо заключения


Несмотря на неудачу с первыми трехмерными интерфейсами, композитные оконные менеджеры активно внедрядись и в другие операционные системы. Так, знаменитый эффект Aero Glass в Windows Vista реализовывался с использованием нового оконного менеджера Desktop Window Manager (DWM), который использовал композитные технологии. На базе подобной механики развивались и независимые проекты вроде Real Desktop от германской компании Schillergames, — возможности этого интерфейса показаны на следующем видео:



Но в целом и Beryl, и Compiz, и Compiz Fusion нельзя назвать полноценными 3D-интерфейсами: это были оконные менеджеры с поддержкой трехмерных визуальных эффектов, и не более того. Тем не менее они остаются частью истории, а значительная часть заложенных в них функций теперь доступна пользователям операционных систем «из коробки».

Статья поддерживается командой Serverspace.

Serverspace — провайдер облачных сервисов, предоставляющий в аренду виртуальные серверы с ОС Linux и Windows в 8 дата-центрах: Россия, Беларусь, Казахстан, Нидерланды, Турция, США, Канада и Бразилия. Для построения ИТ-инфраструктуры провайдер также предлагает: создание сетей, шлюзов, бэкапы, сервисы CDN, DNS, объектное хранилище S3.

IT-инфраструктура | Удвоение первого платежа по коду HABR

Tags:
Hubs:
Total votes 10: ↑10 and ↓0+14
Comments2

Articles

Information

Website
serverspace.ru
Registered
Founded
Employees
201–500 employees
Location
Россия
Representative
Danial Fedorov