WebGL

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
WebGL
WebGL logo.png
Тип

API

Автор

Mozilla Foundation

Разработчик

Khronos Group

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

Cross-platform

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

1.0.2[1] (1 марта 2013)

Тестовая версия

2.0[2] (26 сентября 2013)

Лицензия

Various

Сайт

khronos.org/webgl/

 Просмотр этого шаблона  HTML

WebGL (Web-based Graphics Library) — программная библиотека для языка программирования JavaScript, позволяющая создавать на JavaScript интерактивную 3D-графику, функционирующую в широком спектре совместимых с ней веб-браузеров. За счёт использования низкоуровневых средств поддержки OpenGL, часть кода на WebGL может выполняться непосредственно на видеокартах. WebGL — это контекст элемента canvas HTML, который обеспечивает API 3D графику без использования плагинов[3]. Спецификация версии 1.0 была выпущена 3 марта 2011 года. Проект по созданию библиотеки управляется некоммерческой организацией Khronos Group.

Принципы[править | править вики-текст]

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

Реализация[править | править вики-текст]

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

Мобильные браузеры[править | править вики-текст]

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

Рабочая группа[править | править вики-текст]

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

История[править | править вики-текст]

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

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

Безопасность[править | править вики-текст]

В мае 2011 года служба безопасности Context Information Security опубликовала отчет, который детально разбирает несколько проблем с безопасностью в текущих реализациях WebGL от Google Chrome и Mozilla Firefox, и вообще в самой спецификации WebGL как таковой. Согласно отчету, WebGL позволяет полным по Тьюрингу программам, появившимся на компьютере из Интернета, добраться до привилегированного режима графических драйверов и оборудования. Отчет также снабжен ссылками на примеры действий, создающих проблемы с безопасностью; эти действия способны вызывать отказ от обслуживания и воровство меж-доменных изображений. Отчет завершается тем, что «браузеры, в которых WebGL встроен и включен по умолчанию, подвергают пользователя риску, созданному благодаря данным проблемам.»[23]

Позже United States Computer Emergency Readiness Team (US-CERT) опубликовала предупреждение о том, что «WebGL содержит множество существенных проблем с безопасностью. Влияние этих проблем включает в себя произвольное выполнение кода, отказ от обслуживания и меж-доменные атаки.» US-CERT также призывал «пользователей и администраторов просмотреть отчет Context и отключать WebGL, чтобы постараться уменьшить риск».[24]

Группа Khronos, в которую входят представители Mozilla и Google Chrome, ответила на беспокойства, предлагая возможные решения и будущие методы разработки.[25] После просмотра отчета Context Mozilla решила убрать поддержку меж-доменных изображений в Firefox; в это время группа Khronos обновила спецификацию WebGL, чтобы улучшить защиту от отказа от обслуживания и атак на открытые ресурсы.[26] В настоящее время предложенные решения все ещё находятся на стадии разработки и не распространены повсеместно производителями GPU.[27]

Context была не довольна решением группы Khronos сделать шаг, зафиксировав WebGL, и решила, что это решение не эффективно по отношению к поставленным проблемам.[28] В последующей статье Context снабжает читателей ещё большим количеством примеров уязвимости системы безопасности в последних реализациях WebGL на различных платформах. Признаки этих проблем стоят в ряду неисправностей начиная с разрушения системы и заканчивая утечкой информации. Context продолжает задавать вопрос, была ли WebGL специфицирована, разработана и реализована с учетом службы безопасности.[26]

В июне 2011 года Microsoft заявил, что они не могут одобрить WebGL в его текущей форме с точки зрения безопасности. Исследование, проведенное командой инженеров MSRC, привело к заключению, что поддержка WebGL в продуктах Microsoft имела бы трудности с исполнением требований Security Development Lifecycle — стандарты безопасности для программного обеспечения, принятые внутри Microsoft. Microsoft ссылается на чрезмерно позволенную незащищенность функциональности оборудования и непроверенные возможности защиты от отказа от обслуживания, как на их ключевые проблемы.[29]

Apple показали, что они не откроют доступ WebGL в основные страницы Интернета на iOS5. WebGL будет доступен только через iAds, который должен быть утвержден для каждой реализации Apple.[30]

Известные независимые эксперты по безопасности и графике (в частности Джон Кармак[31] и Дэн Каминский[32]) утверждают, что WebGL — это серьёзный риск для безопасности и будет тяжело это изменить.

Вице-президент по техническим стратегиям Mozilla Марк Шавер забраковал критику Microsoft. В посте своего блога он написал, что Mozilla работала над проблемами с адресацией в спецификации WebGL и реализации для Firefox. Он подчеркнул, что веб нуждался в 3D возможностях, и заявил, что проблемы с безопасностью присущи новым технологиям. Он рекомендовал работу Microsoft над Direct3D API, используемый в Silverlight 5, которую он оценил как надежную, но добавил, что та же технология могла бы быть перенесена со стороны Microsoft и на реализацию WebGL.[33]

Библиотеки[править | править вики-текст]

Для разработки WebGL используется несколько библиотек. Первой общедоступной стала библиотека WebGLU[34][35]. Среди других библиотек для WebGL - GLGE, C3DL, Copperlicht[36], SpiderGL, gwt-g3d[37] (обёртка для GWT), SceneJS, X3DOM, Processing.js, Three.js, Turbulenz, OSGJS[38], XB PointStream и CubicVR.js[39].

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

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

  1. WebGL Specification
  2. WebGL 2 Specification
  3. 1 2 WebGL - OpenGL ES 2.0 for the Web. Khronos.org. Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  4. WebGL Specification. Khronos.org. Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  5. Mozilla Firefox 4 Release Notes
  6. Google releases Chrome 9; comes with Google Instant, WebGL — FierceCIO:TechWatch
  7. WebGL (Windows)
  8. suihkulokki. WebGL on N900. Suihkulokki.blogspot.com (7 июня 2010). Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  9. Halevy, Ronen PlayBook OS 2.0 Developer Beta Includes WebGL, Flash 11, & AIR 3.0. BerryReview. Проверено 15 ноября 2011. Архивировано из первоисточника 12 марта 2013.
  10. Brandon Jones. Get WebGL working on the Android Chrome Beta. Tojicode (10 января 2013). Проверено 12 февраля 2013. Архивировано из первоисточника 12 марта 2013.
  11. iclkevin. WebGL on Mobile Devices. iChemLabs (12 ноября 2011). Проверено 25 ноября 2011. Архивировано из первоисточника 12 марта 2013.
  12. Xperia™ phones first to support WebGL™ – Developer World. blogs.sonyericsson.com. The Sony Ericsson Developer Program (November 29, 2011). Проверено 5 декабря 2011. Архивировано из первоисточника 12 марта 2013.
  13. Opera Mobile 12. Opera Software. Проверено 27 февраля 2012. Архивировано из первоисточника 12 марта 2013.
  14. WebGL on iOS 8 Safari and webview.
  15. 1 2 3 Khronos опубликовала черновой вариант WebGL // Lenta.ru, 11.12.2009
  16. Canvas 3D: GL power, web-style. Blog.vlad1.com. Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  17. Taking the canvas to another dimension. My.opera.com (26 ноября 2007). Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  18. Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet. Khronos.org (4 августа 2009). Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  19. 1 2 WebGL 3D web standard reaches draft stages // Techradar
  20. Kurt Bakke. WebCL To Enable GPU-Accelerated Web Apps (англ.). ConceivablyTech (3 марта 2011). Проверено 4 марта 2011. Архивировано из первоисточника 12 апреля 2012.
  21. Accent. Khronos публикует спецификации WebGL 1.0 — ускорение 3D-графики для web-страниц без подключаемых модулей (рус.). iXBT.com (3 марта 2011). Проверено 4 марта 2011. Архивировано из первоисточника 12 апреля 2012.
  22. Context. Contextis.co.uk (9 мая 2011). Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  23. Forshaw, James WebGL - A New Dimension for Browser Exploitation. Context Information Security (8 мая 2011). Проверено 11 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  24. WebGL Security Risks. US-CERT (10 мая 2011). Проверено 11 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  25. WebGL - Security. Khronos Group (17 июня 2011). Проверено 19 июня 2011. Архивировано из первоисточника 12 апреля 2012.
  26. 1 2 WebGL – More WebGL Security Flaws. Context Information Security (16 июня 2011). Проверено 16 июня 2011. Архивировано из первоисточника 12 апреля 2012.
  27. WebGL Security. Khronos Group (9 мая 2011). Проверено 11 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  28. Context WEbGL security FAQ. Context Information Security. Проверено 16 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  29. WebGL Considered Harmful. Microsoft (16 июня 2011). Проверено 16 июня 2011. Архивировано из первоисточника 12 апреля 2012.
  30. Microsoft, Apple Dis WebGL. InformationWeek (16 июня 2011). Проверено 20 июня 2011. Архивировано из первоисточника 12 апреля 2012.
  31. Carmack, John Tweet (17 июня 2011). Проверено 20 июня 2011. Архивировано из первоисточника 21 февраля 2012.
  32. Kaminsky, Dan Tweet (16 июня 2011). Проверено 20 июня 2011. Архивировано из первоисточника 21 февраля 2012.
  33. Mozilla rejects Microsoft criticism of WebGL. The Inquirer (20 июня 2011). Проверено 29 июня 2011. Архивировано из первоисточника 12 апреля 2012.
  34. OneGeek/WebGLU · GitHub. Проверено 15 марта 2013. Архивировано из первоисточника 16 марта 2013.
  35. Benjamin DeLillo. First WebGLU release. Bjartr.blogspot.com (2 октября 2009). Проверено 14 мая 2011. Архивировано из первоисточника 12 апреля 2012.
  36. CopperLicht - JavaScript 3D Engine using WebGL. Проверено 14 марта 2013. Архивировано из первоисточника 16 марта 2013.
  37. gwt-g3d - 3D library for GWT - Google Project Hosting. Проверено 14 марта 2013. Архивировано из первоисточника 16 марта 2013.
  38. OSG.JS by cedricpinson. Проверено 14 марта 2013. Архивировано из первоисточника 16 марта 2013.
  39. cjcliffe/CubicVR.js · GitHub. Проверено 14 марта 2013. Архивировано из первоисточника 16 марта 2013.
  40. angleproject - ANGLE: Almost Native Graphics Layer Engine - Google Project Hosting. Проверено 14 марта 2013. Архивировано из первоисточника 16 марта 2013.

Ссылки[править | править вики-текст]