Автор (ы) оригинала | Фонд Mozilla |
---|---|
Разработчики) | Рабочая группа Khronos WebGL |
Первый выпуск | 3 марта 2011 г. [1] |
Стабильный выпуск | 2.0 / 17 января 2017 г. |
Платформа | Кроссплатформенность |
Доступно в | английский |
Тип | API |
Веб-сайт | www |
HTML |
---|
Сравнения |
WebGL (сокращение от Web Graphics Library ) - это JavaScript API для рендеринга интерактивной 2D- и 3D-графики в любом совместимом веб-браузере без использования подключаемых модулей . [2] WebGL полностью интегрирован с другими веб-стандартами , что позволяет с ускорением на GPU использовать физику, обработку изображений и эффекты как часть холста веб-страницы. Элементы WebGL можно смешивать с другими элементами HTML и комбинировать с другими частями страницы или фоном страницы. [3]
Программы WebGL состоят из управляющего кода, написанного на JavaScript, и кода шейдера , написанного на OpenGL ES Shading Language (GLSL ES), языке, похожем на C или C ++ , и выполняются на графическом процессоре компьютера (GPU). WebGL разработан и поддерживается некоммерческой организацией Khronos Group . [4]
Дизайн [ править ]
WebGL 1.0 основан на OpenGL ES 2.0 и предоставляет API для трехмерной графики. [5] Он использует элемент холста HTML5 и доступен через интерфейсы объектной модели документа (DOM).
WebGL 2.0 основан на OpenGL ES 3.0 и обеспечивает гарантированную доступность многих дополнительных расширений WebGL 1.0 и предоставляет новые API. [6] Автоматическое управление памятью неявно обеспечивается JavaScript . [4]
Как и OpenGL ES 2.0, WebGL не имеет API с фиксированными функциями, представленных в OpenGL 1.0 и объявленных устаревшими в OpenGL 3.0. Эта функциональность, если таковая требуется, должна быть реализована конечным разработчиком путем предоставления кода шейдера и настройки привязки данных в JavaScript.
Шейдеры в WebGL выражаются непосредственно в GLSL и передаются в API WebGL в виде текстовых строк. Реализация WebGL компилирует эти инструкции шейдера в код графического процессора. Этот код выполняется для каждой вершины, отправленной через API, и для каждого пикселя, растеризованного на экране.
История [ править ]
WebGL развился из экспериментов Canvas 3D, начатых Владимиром Вукичевичем из Mozilla . Вукичевич впервые продемонстрировал прототип Canvas 3D в 2006 году. К концу 2007 года и Mozilla [7], и Opera [8] сделали свои собственные отдельные реализации.
В начале 2009 года некоммерческий технологический консорциум Khronos Group основал рабочую группу WebGL с первоначальным участием Apple , Google , Mozilla, Opera и других. [4] [9] Версия 1.0 спецификации WebGL была выпущена в марте 2011 года. [1] По состоянию на март 2012 года председателем рабочей группы является Кен Рассел.
Ранние приложения WebGL включают Zygote Body . [10] [11] В ноябре 2012 года Autodesk объявила о переносе большинства своих приложений в облако, работающее на локальных клиентах WebGL. Эти приложения включают Fusion 360 и AutoCAD 360. [12]
Разработка спецификации WebGL 2 началась в 2013 году, а окончательная версия - в январе 2017 года. [13] Эта спецификация основана на OpenGL ES 3.0. [14] Первые реализации находятся в Firefox 51, Chrome 56 и Opera 43. [15]
Реализации [ править ]
Почти родной графический слой [ править ]
Почти Native Graphics Layer Engine (ANGLE) - это графический движок с открытым исходным кодом, который реализует WebGL 1.0 (2.0, который близко соответствует ES 3.0) и стандарты OpenGL ES 2.0 и 3.0. Это серверная часть по умолчанию как для Google Chrome, так и для Mozilla Firefox на платформах Windows и работает, переводя вызовы WebGL и OpenGL в доступные API-интерфейсы для конкретных платформ. В настоящее время ANGLE обеспечивает доступ к OpenGL ES 2.0 и 3.0 для настольных OpenGL, OpenGL ES, Direct3D 9 и Direct3D 11 API. [16] ″ [Google] Chrome использует ANGLE для отрисовки всей графики в Windows, включая ускоренную реализацию Canvas2D и среду песочницы Native Client. ″ [16]
Программное обеспечение [ править ]
WebGL широко поддерживается современными браузерами. Однако его доступность зависит от других факторов, таких как поддерживающий его графический процессор. Официальный сайт WebGL предлагает простую тестовую страницу. [17] Более подробная информация (например, какой модуль визуализации использует браузер и какие расширения доступны) предоставляется на сторонних веб-сайтах. [18] [19]
Настольные браузеры [ править ]
- Google Chrome - WebGL 1.0 был включен на всех платформах, которые имеют совместимую видеокарту с обновленными драйверами, начиная с версии 9, выпущенной в феврале 2011 года. [20] [21] По умолчанию в Windows Chrome использует ANGLE (почти нативный графический движок) ) renderer для перевода OpenGL ES в Direct X 9.0c или 11.0, которые имеют лучшую поддержку драйверов. [22] Однако в Linux и Mac OS X средством визуализации по умолчанию является OpenGL. [23] Также возможно принудительно использовать OpenGL в качестве средства визуализации в Windows. [22] С сентября 2013 года в Chrome также появился новый модуль рендеринга Direct3D 11, который, однако, требует более новой видеокарты. [24] [25] Chrome 56+ поддерживает WebGL 2.0.
- Mozilla Firefox - WebGL 1.0 был включен на всех платформах, на которых есть соответствующая видеокарта с обновленными драйверами, начиная с версии 4.0. [26] С 2013 года Firefox также использует DirectX на платформе Windows через ANGLE . [22] Firefox 51+ поддерживает WebGL 2.0.
- Safari - Safari 6.0 и более новые версии, установленные в OS X Mountain Lion , Mac OS X Lion и Safari 5.1 в Mac OS X Snow Leopard, реализовали поддержку WebGL 1.0, которая была отключена по умолчанию до Safari 8.0. [27] [28] [29] [30] [31] Safari версии 12 (доступной в MacOS Mojave) имеет доступную поддержку WebGL 2.0, которая в настоящее время является «экспериментальной» функцией.
- Opera - WebGL 1.0 был реализован в Opera 11 и 12, хотя был отключен по умолчанию в 2014 году. [32] [33] Opera 43+ поддерживает WebGL 2.0.
- Internet Explorer - WebGL 1.0 частично поддерживается в Internet Explorer 11 . [34] [35] [36] [37] Первоначально он не прошел большинство официальных тестов на соответствие WebGL, но позже Microsoft выпустила несколько обновлений. Последний движок 0.94 WebGL в настоящее время проходит ~ 97% тестов Khronos. [38] Поддержка WebGL также может быть добавлена вручную в более ранние версии Internet Explorer с помощью сторонних плагинов, таких как IEWebGL. [39]
- Microsoft Edge - начальный стабильный выпуск поддерживает WebGL версии 0.95 (контекстное имя: «экспериментально-webgl») с транспилятором GLSL в HLSL с открытым исходным кодом . [40] Версия 10240+ поддерживает WebGL 1.0 с префиксом. WebGL 2.0 планируется со средним приоритетом в будущих выпусках. [41]
Мобильные браузеры [ править ]
- BlackBerry 10 - WebGL 1.0 доступен для устройств BlackBerry, начиная с версии ОС 10.00 [42]
- BlackBerry PlayBook - WebGL 1.0 доступен через WebWorks и браузер в PlayBook OS 2.00 [43]
- Браузер Android - в основном не поддерживается, но смартфоны Sony Ericsson Xperia на Android имеют возможности WebGL после обновления прошивки. [44] Смартфоны Samsung также имеют включенный WebGL (проверено на Galaxy SII (4.1.2) и Galaxy Note 8.0 (4.2)). Поддерживается в Google Chrome, который заменил браузер Android на многих телефонах (но не является новым стандартным браузером Android).
- Internet Explorer - WebGL 1.0 с префиксом доступен на Windows Phone 8.x (11+)
- Firefox для мобильных устройств - WebGL 1.0 доступен для устройств Android и MeeGo, начиная с Firefox 4. [45] [46]
- Firefox OS [46]
- Google Chrome - WebGL 1.0 доступен для устройств Android начиная с Google Chrome 25 и включен по умолчанию с версии 30. [47]
- Maemo - В Nokia N900 WebGL 1.0 доступен в стандартном браузере microB, начиная с обновления прошивки PR1.2. [48]
- MeeGo - WebGL 1.0 не поддерживается в стандартном браузере «Интернет». Однако он доступен через Firefox . [46]
- Microsoft Edge - WebGL 1.0 с префиксом доступен в Windows 10 Mobile. [49]
- Opera Mobile - Opera Mobile 12 поддерживает WebGL 1.0 (только на Android). [50]
- Sailfish OS - WebGL 1.0 поддерживается в браузере Sailfish по умолчанию. [51]
- Tizen - поддерживается WebGL 1.0 [52]
- iOS - WebGL 1.0 доступен для мобильного Safari в iOS 8 . [53]
Инструменты и экосистема [ править ]
Утилиты [ править ]
Низкоуровневый характер WebGL API, который сам по себе мало что дает для быстрого создания желаемой трехмерной графики, способствовал созданию библиотек, которые обычно используются для создания вещей в трехмерной графике (например, преобразования представления для шейдеров , пирамиды представления и т. Д. ). Базовые задачи, такие как загрузка графов сцены и 3D-объектов в популярных отраслевых форматах, также абстрагируются библиотеками (некоторые из которых были перенесены на JavaScript с других языков) для обеспечения дополнительных функций. Неполный список библиотек, которые предоставляют множество высокоуровневых функций, включает A-Frame (VR) , BabylonJS , PlayCanvas ,three.js , OSG.JS и CopperLicht . X3D также создала проект под названием X3DOM, чтобы сделать контент X3D и VRML работающим на WebGL. 3D-модель будет в теге XML <X3D>
в HTML5, а интерактивный скрипт будет использовать JavaScript и DOM. BS Content Studio и InstantReality X3D экспортер могут экспортировать X3D в HTML и запускать через WebGL. [ необходима цитата ]
Игровые движки [ править ]
Также быстро появились игровые движки для WebGL, как 2D, так и 3D [54], включая Unreal Engine 4 и Unity . [55] Stage3D / основе флэш- Away3D библиотека высокого уровня также имеет порт для WebGL через машинописи . [24] [56] Более легкая служебная библиотека, которая предоставляет только векторные и матричные математические утилиты для шейдеров, - это sylvester.js. [57] [58] Иногда он используется вместе со специальным расширением WebGL, называемым glUtils.js. [57] [59]
Есть также несколько 2D-библиотек, построенных поверх WebGL, таких как Cocos2d -x или Pixi.js , которые были реализованы таким образом из соображений производительности, что аналогично тому, что произошло со Starling Framework над Stage3D в мире Flash. 2D-библиотеки на основе WebGL возвращаются к холсту HTML5, когда WebGL недоступен. [60]
Устранение узких мест при рендеринге путем предоставления почти прямого доступа к графическому процессору также выявило ограничения производительности в реализациях JavaScript. Некоторые из них были решены с помощью asm.js и WebAssembly (аналогично, введение Stage3D выявило проблемы с производительностью в ActionScript , которые решались такими проектами, как CrossBridge ). [60]
Создание контента [ править ]
Как и для любого другого графического API, создание контента для сцен WebGL требует использования обычного инструмента создания 3D-контента и экспорта сцены в формат, читаемый программой просмотра или вспомогательной библиотекой. Для этой цели можно использовать программное обеспечение для создания трехмерных настольных компьютеров, такое как Blender , Autodesk Maya или SimLab Composer . В частности, Blend4Web позволяет полностью создавать WebGL-сцену в Blender и экспортировать в браузер одним щелчком мыши, даже как отдельную веб-страницу. [61] Существует также некоторое программное обеспечение для WebGL, такое как CopperCube и онлайн-редактор Clara.io на основе WebGL . Интернет-платформы, такие как Sketchfab и Clara.io позволяют пользователям напрямую загружать свои 3D-модели и отображать их с помощью размещенной программы просмотра WebGL.
Инструменты на основе окружающей среды [ править ]
Кроме того, Mozilla Foundation в своем браузере Firefox реализовала встроенные инструменты WebGL, начиная с версии 27, которые позволяют редактировать вершинные и фрагментные шейдеры. [62] Также появился ряд других инструментов для отладки и профилирования . [63]
См. Также [ править ]
- Список фреймворков WebGL
- Испытайте любопытство - WebGL-симуляцию марсохода Curiosity
- WebVR
- Java OpenGL - библиотека OpenGL для языка программирования Java
- WebGPU
Ссылки [ править ]
- ^ a b «Khronos выпускает окончательную спецификацию WebGL 1.0» . Проверено 18 мая 2015 .
- ^ Таварес, Грегг (2012-02-09). «Основы WebGL» . HTML5 Rocks.
- Перейти ↑ Parisi, Tony (2012-08-15). «WebGL: готово» . O'Reilly Media, Incorporated. Архивировано из оригинала на 2013-02-01 . Проверено 13 июля 2012 .
- ^ a b c «WebGL - OpenGL ES 2.0 для Интернета» . Khronos.org . Проверено 14 мая 2011 .
- ^ "Спецификация WebGL" . Khronos.org . Проверено 14 мая 2011 .
- ^ «Спецификация WebGL 2.0» . Khronos.org . Проверено 27 февраля 2017 .
- ^ "Холст 3D: сила GL, веб-стиль" . Blog.vlad1.com. Архивировано из оригинала на 2011-07-17 . Проверено 14 мая 2011 .
- ^ "Перемещение холста в другое измерение" . My.opera.com. 2007-11-26. Архивировано из оригинала на 2007-11-17 . Проверено 14 мая 2011 .
- ^ "Khronos Details WebGL Initiative, чтобы принести аппаратно-ускоренную 3D-графику в Интернет" . Khronos.org. 2009-08-04. Архивировано из оригинала на 2012-04-12 . Проверено 14 мая 2011 .
- ^ "Google Body - Google Labs" . Bodybrowser.googlelabs.com. Архивировано из оригинала на 2011-05-13 . Проверено 14 мая 2011 .
- ^ Bhanoo, Sindya Н. (2010-12-23). «Новинка от Google: основной браузер» . Well.blogs.nytimes.com . Проверено 14 мая 2011 .
- ^ "AUTODESK FUSION 360: БУДУЩЕЕ САПР, PT. 1" . 3dcadworld.com . Проверено 21 августа 2013 .
- ^ "Спецификация WebGL 2" . khronos.org. 2013-09-26 . Проверено 28 октября 2013 .
- ^ «Спецификация WebGL 2.0» .
- ^ «WebGL - веб-API» . MDN .
- ^ a b «УГОЛ - Почти нативный графический слой» . 2019 . Проверено 21 июня 2019 года .
- ^ "Тестовая страница WebGL" . webgl.org .
- ^ "Отчет WebGL" . webglreport.com .
- ^ «Отчет браузера WebGL - Обнаружение WebGL - Тестер WebGL - Утечки браузера» . browserleaks.com .
- ↑ Ма, Пол (8 февраля 2011 г.). «Google выпускает Chrome 9; поставляется с Google Instant, WebGL - FierceCIO: TechWatch» . FierceCIO. Архивировано из оригинала на 2011-10-25 . Проверено 20 марта 2012 .
- ^ «WebGL в стабильной версии Chrome! - Изучение WebGL» . Learningwebgl.com . Архивировано из оригинала на 2015-05-28 . Проверено 7 августа 2014 .
- ^ a b c «(WebGL) Как включить собственный OpenGL в вашем браузере (Windows)» . geeks3d.com .
- ^ «Блог Chromium: Представляем проект ANGLE» . Блог Chromium .
- ^ a b «WebGL в сети, 17 октября 2013 г. - Изучение WebGL» . Learningwebgl.com . Архивировано из оригинала 8 -го августа 2014 года . Проверено 5 августа 2014 .
- ^ "Наконец-то! Настал день Chrome D3D11!" . tojicode.com .
- ^ «Примечания к выпуску Mozilla Firefox 4» . Mozilla.com. 2011-03-22 . Проверено 20 марта 2012 .
- ^ «Новое в OS X Lion: Safari 5.1 включает WebGL, Do Not Track и многое другое» . Fairerplatform.com. 2011-05-03. Архивировано из оригинала на 2012-03-19 . Проверено 20 марта 2012 .
- ^ «Включить WebGL в Safari» . Ikriz.nl. 2011-08-23. Архивировано из оригинала на 2012-03-04 . Проверено 20 марта 2012 .
- ^ "Получение реализации WebGL" . Khronos.org. 2012-01-13 . Проверено 20 марта 2012 .
- ^ «Реализации / WebKit» . Khronos.org. 2011-09-03 . Проверено 20 марта 2012 .
- ^ «WebGL теперь доступен в WebKit Nightlies» . Webkit.org. Архивировано из оригинала на 2012-03-08 . Проверено 20 марта 2012 .
- ^ «WebGL и аппаратное ускорение» . My.opera.com. 2011-02-28. Архивировано из оригинала на 2011-03-03 . Проверено 20 марта 2012 .
- ^ "Представляем Opera 12 alpha" . My.opera.com. 2011-10-13. Архивировано из оригинала на 2011-10-15 . Проверено 20 марта 2012 .
- ^ «WebGL (Windows)» . microsoft.com . Microsoft.
- ^ «Руководство по предварительной версии Internet Explorer 11 для разработчиков» . Microsoft. 2013-07-17 . Проверено 24 июля 2013 .
- ^ "WebGL" . Microsoft. 2013-07-17 . Проверено 24 июля 2013 .
- ^ «Internet Explorer 11 для поддержки WebGL и MPEG Dash» . Engadget. 2013-06-26 . Проверено 26 июня 2013 .
- ^ "IE11 не прошел более половины тестов в официальном наборе тестов на соответствие WebGL" . Microsoft Connect.
- ^ "IEWebGL" . Iewebgl . Проверено 14 августа 2014 .
- ^ «GitHub - реализация Microsoft Edge WebGL» . Microsoft. 2016-06-04 . Проверено 10 июня 2016 .
- ^ «Статус WebGL 2.0 в Microsoft Edge находится на рассмотрении» . Разработка Microsoft Edge. Архивировано из оригинала на 2018-12-27 . Проверено 9 февраля 2017 .
- ^ Макдонаф, Ларри. «WebGL: 3D-игры в Интернете прибывают» . BerryReview . Архивировано из оригинала на 2013-04-13 . Проверено 9 апреля 2013 .
- ↑ Халеви, Ронен. «Бета-версия разработчика PlayBook OS 2.0 включает WebGL, Flash 11 и AIR 3.0» . BerryReview . Проверено 15 ноября 2011 .
- ^ «Телефоны Xperia ™ первыми поддерживают WebGL ™ - Developer World» . blogs.sonyericsson.com . Программа для разработчиков Sony Ericsson. 2011-11-29. Архивировано из оригинала на 2011-12-03 . Проверено 5 декабря 2011 .
- ^ «WebGL на мобильных устройствах» . iChemLabs. 2011-11-12. Архивировано из оригинала на 2013-03-12 . Проверено 25 ноября 2011 .
- ^ a b c «Совместимость с мобильным HTML5 на iPhone, Android, Windows Phone, BlackBerry, Firefox OS и других мобильных устройствах» . Проверено 16 сентября 2015 .
- ^ Керси, Джейсон. «Бета-версия Chrome для обновления Android» . Блог о выпусках Chrome . Проверено 23 августа 2013 .
- ^ Voipio Рика (2010-06-07). «WebGL на N900» . Suihkulokki.blogspot.com . Проверено 14 мая 2011 .
- ^ «Руководство разработчика: WebGL - Microsoft Edge Development» . Microsoft . Проверено 10 июня 2016 .
- ^ "Opera Mobile 12" . Программное обеспечение Opera. Архивировано из оригинала на 1 марта 2012 года . Проверено 27 февраля 2012 года .
- ^ "HTML5test - Насколько хорошо ваш браузер поддерживает HTML5?" . Проверено 16 сентября 2015 .
- ^ "HTML5test - Насколько хорошо ваш браузер поддерживает HTML5?" . Проверено 16 сентября 2015 .
- ^ Каннингем, Эндрю (2014-09-17). «iOS 8, тщательная проверка» . Ars Technica . Проверено 19 сентября 2014 .
- Рианна Паризи, Тони (13 февраля 2014 г.). Программирование 3D-приложений с помощью HTML5 и WebGL: 3D-анимация и визуализация для веб-страниц . "O'Reilly Media, Inc.". С. 364–366. ISBN 978-1-4493-6395-6.
- ^ Барретт, Стивен. «Tegra K1 появляется в новейшем Chromebook от Acer» . anandtech.com .
- ^ "Блог> Away3D Typescript 4.1 Alpha> Away3D" . away3d.com . Архивировано из оригинала на 2014-08-08 . Проверено 5 августа 2014 .
- ^ a b Боресков Алексей; Шикин, Евгений (2014). Компьютерная графика: от пикселей до программируемого графического оборудования . CRC Press. п. 370. ISBN 978-1-4398-6730-3.
- ^ Anyuru, Andreas (2012). Профессиональное программирование WebGL: разработка трехмерной графики для Интернета . Джон Вили и сыновья. п. 140. ISBN 978-1-119-94058-6.
- ^ Фултон, Стив; Фултон, Джефф (2013). HTML5 Canvas (2-е изд.). "O'Reilly Media, Inc.". п. 624. ISBN 978-1-4493-3588-5.
- ^ a b «Возможности WebGL - TypedArray.org» . typedarray.org .
- ^ "Официальный сайт Blend4Web - О программе" . Blend4Web.com . Проверено 22 июня 2015 .
- ^ «Живое редактирование шейдеров WebGL с помощью инструментов разработчика Firefox» . Mozilla Hacks - блог веб-разработчиков .
- ^ «Рендеринг в реальном времени · Инструменты отладки и профилирования WebGL» . realtimerendering.com .
Дальнейшее чтение [ править ]
Внешние ссылки [ править ]
- Официальный веб-сайт
- WebGL, заархивировано 26 июня 2010 г. на Wayback Machine в сети разработчиков Mozilla.