VirtualGL

VirtualGL
VirtualGL
Vgl.png
Написана на

C, C++, Unix Shell

Операционная система

Linux, Unix

Последняя версия

2.1 (18 марта, 2008)

Лицензия

GNU General Public License (GPL), wxWindows Library Licence

Сайт

virtualgl.org

VirtualGL это open source программа, которая перенаправляет команды 3D-рендеринга из Unix и Linux OpenGL приложений в аппаратный 3D ускоритель на выделенный сервер и отображает выходные данные интерактивно с помощью тонкого клиента, расположенного в других местах в сети.

Содержание

Основные проблемы

Как правило, на VNC и других тонких клиентах для Unix и Linux либо не работает поддержка OpenGL для приложений, либо отображение предоставляется без использования аппаратного ускорение OpenGL. Дистанционное отображение 3D приложений с аппаратным ускорением традиционно требует использования «косвенного рендеринга». Косвенный рендеринг использует GLX-расширение X Window System («X11» или «Х»), чтобы включить команды OpenGL внутри X Window System протоколов и архитектуры , и передать их от приложения к X дисплею. Традиционно приложения выполняется на удаленном сервере приложений, а X дисплей запускается на пользовательском компьютере. В этом случае, все команды OpenGL осуществляется пользователем на рабочем столе компьютера, так что машина должна иметь быстрый ускоритель 3D-графики. Это ограничивает тип машины, которые могут дистанционно показывать 3D-приложения с использованием этого метода.

Косвенный рендеринг может быть использован, если сеть достаточно быстрая (например Gigabit Ethernet), если приложение не изменять геометрию объекта динамически, если приложение использует display list — GL дисплей листы, и, если приложение не использует много texture mapping — текстур. Многие OpenGL приложения, однако, не удовлетворяют этим критериям. Чтобы ещё более усложнить положение, некоторые расширения OpenGL не работают с косвенным рендерингом. Некоторые из этих расширений требуется возможность прямого доступа к аппаратным 3D ускорителям и, следовательно, не могут работать косвенно. В других случаях, пользователи X дисплеев не моут обеспечить поддержку OpenGL расширений или возможность использовать может опираться на конкретные конфигурации оборудования, которое может не присутствует на рабочем месте пользователя компьютером.

Исполнительский OpenGL рендеринг на сервере приложений обходит проблемы основанные на косвенном рендеринге, как для приложений в настоящее время имеющими быстрый и прямой доступ к аппаратному 3D-рендерингу. Если 3D-рендеринг происходит на сервере приложений, то в результате только 2D изображения будут отправлены на рабочее место пользователя. Изображения могут быть доставлены с любой нужной частотой кадров независимо от того, насколько большой объём 3D данных был использован для их создания, а также все проблемы 3D-рендеринга и эффективного 3D вывода преобразуются в проблемы 2D отображения. Эта проблема появляется также, как только появляется поток графических данных в 1-2 мегапикселя через сеть на переменной скоростью кадров, таких как в технологии (HDTV).

Решения VirtualGL

VirtualGL использует «GLX forking», чтобы вынести OpenGL рендеринг на сервер приложений. Unix и Linux OpenGL приложения, как правило, отправляют оба типа команд GLX X11 и простые команды на X дисплей. GLX команды используются для связывания контекста рендеринга OpenGL с контекстм для конкретного X Window, получения списка цветовых форматов, которые поддерживает X дисплей и т. д. VirtualGL использует расширенные функции в Unix и Linux, что позволяет подгрузить «предварительные» библиотеки в приложение для эффективного перехвата (АКА «interposing») определенных функций, которое требует приложение, и как правило, вынесено в разделяемые библиотеки, с которым она связана. После того как VirtualGL подключается к Unix или Linux OpenGL приложению, он перехватывает вызовы функции GLX от приложений и переписывает их таким образом, что соответствующие GLX команды отправляются X дисплеем на сервер приложений, который предположительно имеет аппаратный 3D ускоритель. Таким образом, VirtualGL предотвращает отправку GLX команд по сети к пользователю X дисплея или на виртуальный X дисплей («X прокси»), как, например, VNC, которые не поддерживают GLX. В процессе переписывания GLX запроса, VirtualGL также перенаправляет OpenGL рендеринг во вне экранные буфера пикселов («Pbuffers.») Между тем, остальные функции вызываемые из приложений, в том числе обычные X11 команды использующиеся для разработки пользовательского интерфейса приложений, проходят через VirtualGL без изменений.

Встроенный внутрь VirtualGL движок также поддерживает карты окна для Pbuffers, связку визуальных атрибутов между назначенным X дисплеем и X дисплеем на котором будет происходить 3D-рендеринг, а также выполняет ряд других функций хэширования чтобы обеспечить ровные GLX перенаправления. Но по существу, после того как OpenGL контекст устанавливается в X дисплей и на сервер приложений, VirtualGL получает способ который позволяет обеспечить беспрепятственный проход всех последующих команд OpenGL с сервера приложений в 3D оборудование. Таким образом, приложение может автоматически использовать любые функции OpenGL и расширений поддерживающиеся оборудованием сервера и драйверами.

Помимо marshaling GLX команд и управления ими Pbuffers, VirtualGL также читает назад созданные пикселы в соответствующее время (как правило, путем мониторинга glXSwapBuffers() или glFinish()), а затем занимается отрисовкой пикселов в приложения X Window с использованием стандартных команд отрисовки X изображения. С помощью VirtualGL осуществляется перенаправление GLX команд от назначенного Х дисплея, он может быть использован, чтобы добавить поддержку 3D ускорения для X прокси (например, VNC), а также для предотвращения косвенного OpenGL рендеринга при использовании удаленного X дисплея.


Использование VirtualGL во взаимодействии с VNC или иной X-прокси позволяет нескольким пользователям одновременно запускать 3D приложения на одном сервере приложений и многочисленными клиентами для обмена каждой сессии. Вместе с тем, VNC и подобные программы для обработки 2D приложений с большим областям сплошного цвета, несколькими цветами, и небольшим областях, а 3D приложения, с другой стороны, генерируют изображения с высоким разрешением, сложными цветовыми моделями и гораздо с меньшей корреляцией между последующими кадрами. Работа в основном с той же рабочей нагрузкой, используя вынесение изображений с OpenGL приложений в среде X Window, таких как видеоплеер, с помощью готовых программных тонких клиентов, как правило, тоже не хватает достаточно быстрого изображения кодеком чтобы иметь возможность обрабатывать интерактивные кадры.

VirtualGL решает эти проблемы двумя способами:

  1. TurboVNC
  2. Транспорт для VGL изображений

TurboVNC

TurboVNC — ответвление TightVNC, который ускоряет Tight и JPEG кодирование путей последнего, частично используя в своих интересах надстроенные мультимедиа примитивы от Intel и Sun microsystems. На 100 Мбит/с Ethernet сети, TurboVNC способен отображать полноэкранное (1280x1024-пиксель) изображения с перцепционно качеством изображения без потерь со скоростью более чем 20 кадров/секунд. TurboVNC включает дальнейшую оптимизацию, которая позволяет ему отображать полноэкранные изображения в 7-10 кадрах/секундах по каналам широкополосной передаче, со значимой но пригодной для использования потерей качества изображения. TurboVNC также расширяет TightVNC, чтобы включать сторону клиента двойная буферизация и оптимизированные наборы из двух предметов для Solaris. TurboVNC и VirtualGL используются Texas Академический Вычислительный центр в UT, чтобы позволить пользователям TeraGrid дистанционно обращаться к трехмерным возможностям рендеринга Maverick terascale суперкомпьютер визуализации.

VGL Image Transport (раньше («Direct Mode»))

Используя VGL Image Transport, VirtualGL сжимает выполненные трехмерные изображения в процессе, используя оптимизированный кодер-декодер того же самого JPEG это использование TurboVNC. VirtualGL тогда посылает сжатые изображения по специализированному протоколу TCP к Приложению-клиенту VirtualGL, работающему на клиентской машине. Клиент VirtualGL ответственен за то, что распаковал изображения и вовлек пиксели в соответствующее X окон. Тем временем, элементы неспецификации OpenGL дисплея приложения посылают по сети, используя стандартный отдаленный протокол X11 и выполнены на клиентской машине.

Этот подход требует, чтобы X дисплеев присутствовали на клиентской машине, и уверенность относительно отдаленного протокола X11 для того, чтобы выполнить 2-ой рендеринг означает, что много приложений выступят плохо, используя VGL Image Transport на сетях высокого времени ожидания. Дополнительно, VGL Image Transport неотъемлемо не поддерживает сотрудничество (множественные клиенты в сеанс), так как изображения помещаются в машин пользователей вместо того, чтобы быть перемещенным. Но использование VGL Image Transport действительно обеспечивает прикладной опыт полностью без шва, посредством чего каждое окно приложения соответствует единственному настольному окну. Транспорт Изображения VGL также уменьшает сервер центральный процессор загрузка, так как 2-й рендеринг происходит на клиенте, и VGL Image Transport позволяет использовать продвинутые особенности спецификации OpenGL, такие как буферизированный quad-buffered стерео.

Разработчики VirtualGL представляют первичных пользователей VGL Image Transport как пользователей ноутбука с 802.11 г беспроводным или быстрым подключением к сети стандарта Ethernet с сервером приложений.

Коммерческие продукты использующие VirtualGL

VirtualGL и TurboVNC являются основными компонентами Sun Visualization System продукта от Sun Microsystems. Два open source пакета в сочетании с closed source плагином, который позволяет VirtualGL отправить сжатые изображения на Sun Ray тонкие клиенты и другие пакеты с закрытым исходным кодом, которые интегрируют VirtualGL с Sun Grid Engine, предоставляя управление ресурсами и 3D графику для удаленных рабочих мест. Сочетание этих пакетов, назвали «Sun Shared Visualization», можно также бесплатно скачать (Sun берёт плату только за поддержку.)

v2.1 Scalable Visualization Array программное обеспечение от HP также включает в себя компоненты, которые интегрируются с VirtualGL и TurboVNC, что позволяет создавать 3D рабочие места, которые работают и удаленно отображают с помощью кластера визуализации.

Использование VirtualGL в Bumblebee

С появлением "безголовых" видеокарт для ноутбуков VirtualGL стал использоваться в проектах типа Bumblebee. Суть в том, что при изготовлении комбинированных видеокарт одна "встроенная" делается полноценной, а вторая "дискретная" без возможности вывода на экран. При этом поддержки драйверами от производителя нет и не предвидится. VirtualGL же позволяет запускать приложение на "дискретной" видеокарте, а результат рендеренга направлять через тоннель на "встроенную".

См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "VirtualGL" в других словарях:

  • VirtualGL — ? Información general Última versión estable 2.2.1 6 de abril de 2011; hace 7 meses (2011 04 06) …   Wikipedia Español

  • VirtualGL — Infobox Software name = VirtualGL caption = collapsible = author = developer = released = latest release version = 2.1 latest release date = [March 18] , 2008 latest preview version = latest preview date = frequently updated = programming… …   Wikipedia

  • Wikiproyecto:Software libre y de código abierto — Bienvenid@s al Wikiproyecto Software Libre y de Código Abierto …   Wikipedia Español

  • Rendering (computer graphics) — Not to be confused with 3D rendering. A variety of rendering techniques applied to a single 3D scene …   Wikipedia

  • OpenGL — Original author(s) Silicon Graphics Developer(s) Khronos Group Stable release 4.2 …   Wikipedia

  • X Window System — X11 redirects here. For other uses, see X11 (disambiguation). A historical example of graphical user interface and applications common to the MIT X Consortium s distribution running under the twm window manager: X Terminal, Xbiff, xload and a… …   Wikipedia

  • Xgl — is an X server architecture designed to take advantage of modern graphics cards via their OpenGL drivers, layered on top of OpenGL via glitz. It supports hardware acceleration of all X, OpenGL and XVideo applications and graphical effects by a… …   Wikipedia

  • Compiz — Screenshot showing the Cube plugin for Compiz on Fedora. Dev …   Wikipedia

  • AIGLX — Accelerated Indirect GLX ( AIGLX ) is an open source project founded by Red Hat and the Fedora community to allow accelerated indirect GLX rendering capabilities to X.Org and DRI drivers. This allows remote X clients to get fully hardware… …   Wikipedia

  • Beryl (window manager) — Beryl Screenshot of Fedora Core 6 using Beryl Developer(s) …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»