Русская Википедия:WebGL

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Карточка программы Шаблон:HTML

WebGL (Web-based Graphics Library) — кроссплатформенный API для 3D-графики в браузере, разрабатываемый некоммерческой организацией Khronos Group. WebGL использует язык программирования шейдеров GLSL[1] Шаблон:Wayback. WebGL исполняется как элемент HTML5 и поэтому является полноценной частью объектной модели документа (DOM API) браузера. Может использоваться с любыми языками программирования, которые умеют работать с DOM API, например, JavaScript, Rust[2] Шаблон:Wayback, Java, Kotlin[3] Шаблон:Wayback и другими. Все ведущие разработчики браузеров Google (Chrome), Mozilla (Firefox), и Apple (Safari), являются членами Khronos и реализуют WebGL в своих браузерах. За счёт использования низкоуровневых средств поддержки OpenGL часть кода на WebGL может выполняться непосредственно на видеокартах. WebGL — это контекст элемента canvas HTML, который обеспечивает API 3D графики без использования плагинов[1]. Первая спецификация была выпущена 3 марта 2011 года. Современная версия 2.0 (несовместима с версией 1.0) доступна с 27 февраля 2017 года[2][3].

Принципы

API построена на основе OpenGL ES 2.0 и даёт возможность реализации 3D-графики[4] в браузере, использует HTML5-элемент canvas, также оперирует с DOM. Автоматическое управление памятью предоставляется языком JavaScript[1].

Версии

  • WebGL 1.0 — Построена на основе OpenGL ES 2.0, для шейдеров поддерживается язык GLSL ES версии 1.00[5].
  • WebGL 2.0 — Построена на основе OpenGL ES 3.0, для шейдеров поддерживается язык GLSL ES версии 1.00 и 3.00[6].

Реализация

  • Mozilla Firefox — WebGL был включён на всех платформах, у которых есть нужная графическая карта с актуальными драйверами, начиная с версии 4.0[7].
  • Google Chrome — WebGL включён по умолчанию во всех версиях, начиная с 9[8].
  • Safari — экспериментально поддерживает WebGL, начиная с версии 5.1, полная поддержка реализована и включена по умолчанию в версии 8.0.
  • Opera — WebGL реализован в версии Opera 12.0, но отключён по умолчанию.
  • Internet Explorer — начиная с Internet Explorer 11 WebGL официально поддерживается[9]. До выхода 11 версии независимыми разработчиками были выпущены плагины Chrome Frame и IEWebGL, предусматривающие опции, необходимые для поддержки WebGL в Internet Explorer.

Мобильные браузеры

  • Maemo 5 — WebGL доступен во встроенном браузере microB начиная с версии прошивки PR1.2 (май 2011)[10].
  • BlackBerry PlayBook — WebGL доступен посредством WebWorks и браузера в PlayBook OS 2.0[11].
  • Google Chrome — WebGL доступен для Android-устройств в бета-версиях начиная с января 2013[12].
  • Firefox for mobile — WebGL доступен для Android устройств в бета-версиях с начала 2011[13].
  • Sony Ericsson Xperia — многие устройства на базе Android имеют поддержку WebGL после обновления прошивки[14].
  • Opera Mobile 12 final поддерживает WebGL (только на Android)[15].
  • Safari для iOS — поддержка реализована в версии 8.0[16].

Рабочая группа

В состав рабочей группы, разрабатывающей стандарт, входят: Khronos Group, разработчики браузеров Apple Safari, Google Chrome, Mozilla Firefox и Opera, а также специалисты AMD и Nvidia[17].

История

WebGL возник из экспериментов над Canvas 3D Владимира Вукичевича (Vladimir Vukićević) из Mozilla, разработавшего прототип Canvas 3D в 2006 году. В конце 2007 года и Mozilla[18], и Opera[19] создали свои собственные отдельные реализации.

В начале 2009 года Mozilla и Khronos организовали рабочую группу WebGL[20], 10 декабря 2009 года консорциум опубликовал первую черновую спецификацию WebGL[17][21]. Председатель группы Арун Ранганатан заявил, что завершение работы над спецификацией ожидается в первом квартале 2010 года[17][21]. Окончательная ревизия первой редакции спецификаций была представлена 3 марта 2011 года в Сан-Франциско[22][23].

Разработка следующей версии спецификации началась в 2013 году. Стандарт WebGL 2.0, базирующийся на OpenGL ES 3.0, был ратифицирован консорциумом Khronos в январе 2017 г.[24]. Новая версия стандарта была реализована в браузерах Firefox 51, Chrome 56 и Opera 43[25].

Безопасность

В июне 2011 года корпорация Microsoft выразила свою обеспокоенность с точки зрения безопасности технологии WebGL, сославшись на чрезмерные по её мнению права доступа к оборудованию и ненадёжность механизмов защиты от отказа от обслуживания (DoS).[26] Вице-президент Mozilla Марк Шавер отверг критику Microsoft, назвав представленные аргументы преувеличенными. Он также отметил наличие у Microsoft собственной 3D веб-технологии Silverlight 5, основанной на тех же принципах, что и WebGL, которую, тем не менее, Microsoft считает достаточно надёжной.[27] Позднее Microsoft изменила своё отношение к технологии WebGL, реализовав её поддержку в своём браузере Internet Explorer 11.[28]

Корпорация Apple, несмотря на затягивания решения о поддержке WebGL в браузере Safari по причинам безопасности, объявила о принятии такого решения на конференции WWDC в 2014 г.[29]

Библиотеки

Для упрощения разработки WebGL-приложений существуют различные фреймворки и библиотеки. Первой общедоступной стала библиотека WebGLU[30][31]. Среди других библиотек для WebGL — GLGE, C3DL, Copperlicht[32], SpiderGL, gwt-g3d[33] (обёртка для GWT), SceneJS, X3DOM, Processing.js, Babylon.js, Three.js, Turbulenz, OSGJS[34], XB PointStream и CubicVR.js[35].

Blend4Web позволяет визуально редактировать контент для WebGL в открытом пакете 3D моделирования и анимации Blender и экспортировать его для работы в браузерах за одну операцию[36].

Verge3D — WebGL рендерер, экспортирующий сцены напрямую из стандартных редакторов (поддерживаются Autodesk 3ds Max и Blender) с возможностью добавления интерактивных сценариев без программирования[37].

Слой совместимости ANGLE

ANGLE (Almost Native Graphics Layer Engine)[38] — библиотека, выпущенная под лицензией BSD, которая позволяет переводить содержимое WebGL в OpenGL ES 2.0, вызывать API DirectX 9 и 11, которые взаимодействуют с платформами Microsoft Windows без необходимости в дополнительных драйверах OpenGL. Используется по умолчанию в браузерах Google Chrome и Firefox.

См. также

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Rq Шаблон:Стандарты Khronos Group

  1. 1,0 1,1 Ошибка цитирования Неверный тег <ref>; для сносок WebGLWebsite не указан текст
  2. Шаблон:Cite web
  3. Шаблон:Cite web
  4. Ошибка цитирования Неверный тег <ref>; для сносок WebGLSpecification не указан текст
  5. Шаблон:Cite web
  6. Шаблон:Cite web
  7. Шаблон:Cite web
  8. Шаблон:Cite web
  9. Шаблон:Cite web
  10. Шаблон:Cite web
  11. Шаблон:Cite web
  12. Шаблон:Cite web
  13. Шаблон:Cite web
  14. Шаблон:Cite web
  15. Шаблон:Cite web
  16. Шаблон:Cite web
  17. 17,0 17,1 17,2 Khronos опубликовала черновой вариант WebGL Шаблон:Wayback // Lenta.ru, 11.12.2009
  18. Шаблон:Cite web
  19. Шаблон:Cite web
  20. Ошибка цитирования Неверный тег <ref>; для сносок WebGLAnnouncement не указан текст
  21. 21,0 21,1 WebGL 3D web standard reaches draft stages Шаблон:Wayback // Techradar
  22. Шаблон:Cite web
  23. Шаблон:Cite web
  24. Шаблон:Cite web
  25. Шаблон:Cite web
  26. Шаблон:Cite web
  27. Шаблон:Cite web
  28. Шаблон:Cite web
  29. Шаблон:Cite web
  30. Шаблон:Cite web
  31. Шаблон:Cite web
  32. Шаблон:Cite web
  33. Шаблон:Cite web
  34. Шаблон:Cite web
  35. Шаблон:Cite web
  36. Шаблон:Cite web
  37. Шаблон:Cite web
  38. Шаблон:Cite web