WebGL

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
WebGL
WebGL logo
ТипAPI
АвторMozilla Foundation
РозробникKhronos Group
Перший випуск3 березня 2011; 13 років тому (2011-03-03)
Стабільний випуск2.0 (17 січня 2017; 7 років тому (2017-01-17))
Операційна системакрос-платформова
Ліцензіярізні
Онлайн-документаціяkhronos.org/webgl/wiki/Main_Page(англ.)
Вебсайтwww.khronos.org/webgl/
HTML

WebGL — це стандарт на базі OpenGL ES 2.0, що дозволяє розробникам вебконтенту вбудовувати в вебоглядачі, які підтримують HTML5, повноцінну 3D-графіку, не вдаючись до посередництва плагінів. В намірах розробників поширити стандарт WebGL не тільки в браузерах персональних комп'ютерів, а й у мобільних інтернет-пристроях. До робочої групи WebGL входять Khronos Group, представники провідних розробників інтернет-браузерів, таких як Apple Safari, Google Chrome, Mozilla Firefox і Opera, а також фахівці AMD і Nvidia.

Ця технологія дозволяє упроваджувати апаратно-прискорену 3D графіку у вебсторінки без необхідності використовувати спеціальні плагіни веббраузера на будь-якій платформі, що підтримує OpenGL або OpenGL ES. Технічно це буде прив'язкою скриптів JavaScript до функцій, визначених в бібліотеках OpenGL ES 2.0, реалізовану на рівні браузера.

WebGL є подальшим розвитком експерименту Canvas 3D[2] в Mozilla і вже представлена у збірках розробників Mozilla Firefox[3] і WebKit[4], а також в попередніх релізах Google Chrome 4[5].

В листопаді 2009 компанія Khronos Group анонсувала першу чорнову специфікацію WebGL.[6] Робота над специфікацією продовжується.

Про підтримку специфікації у своєму браузері Chrome, починаючи з версії 9[7], оголосив Google. Підтримку WebGL у ближчих версіях продуктів оголосили Mozilla (починаючи з Firefox 4) та Apple Safari.

Принципи

[ред. | ред. код]

WebGL створений на основі OpenGL ES 2.0 з підтримкою API для 3D-графіки. Він використовує елемент canvas з HTML5, а також взаємодіє з DOM. Автоматичне управління пам'яттю відбувається завдяки мові JavaScript. Шейдери у WebGL запрограмовані безпосередньо на GLSL.

Історія

[ред. | ред. код]

WebGL виник в результаті експериментів з Canvas 3D Владимира Вукичевича[en] з Mozilla, котрий розробив прототип Canvas 3D у 2006 році. В кінці 2007 року і Mozilla[8], і Opera[9] розробили свої окремі реалізації.

На початку 2009 року некомерційне об'єднання Khronos організувало робочу групу WebGL, за участі Apple, Google, Mozilla, Opera та ін. Версія WebGL 1.0 була випущена у березні 2011 року. Станом на березень 2012 року робочою групою керував Кен Рассел(Ken Russell).

Перші випуски WebGL включали Zygote Body.[10][11] Останнім часом, Autodesk реалізував за допомогою хмарних рішень більшу частину своїх програм, які працюють завдяки WebGL. Наприклад такі програми як: Fusion 360 і AutoCAD 360.[12]

Розробка WebGL 2 розпочалася у 2013 році.[13] Ця специфікація мала за основу OpenGL ES 3.0.

Реалізація

[ред. | ред. код]

WebGL широко підтримується у сучасних браузерах. Хоча можливість його використання залежить від інших факторів, а саме від GPU. Офіційний сайт WebGL пропонує просту тестову сторінку для перевірки на сумісність.[14][14] Більш детальна інформація (наприклад, те, який рендер використовує браузер, чи які розширення доступні) надається на сторонніх вебсайтах[15][16]. Робота WebGL у різноманітних браузерах:

  • Google Chrome — WebGL доступний для всіх платформ, котрі мають необхідну графічну карту з оновленими драйверами, починаючи з 9 версії, випущеної у 2011 році.[17][18] За замовченням у Windows Chrome використовує ANGLE рендер для перекладу з OpenGL ES у DirectX 9.0c або 11.0, котрий має більш якісну підтримку драйверів.[19] На Linux та Mac OS X за замовченням засобом візуалізації є OpenGL. Також можливо змусити Windows використовувати OpenGL як рендер. Починаючи з вересня 2013 року, Chrome також має новіший Direct3D 10 рендер, котрий, однак потребує більш нову графічну карту.
  • Mozilla Firefox — WebGL доступний для всіх платформ, котрі мають необхідну графічну карту з оновленими драйверами, починаючи з версії 4.0.[20] Починаючи з 2013 року, Firefox також використовує ANGLE на платформі Windows за допомоги DirectX.
  • Safari — Safari 6.0, а також більш нові версії встановлені на OS X Mountain Lion, Mac OS X Lion і Safari 5.1 на Mac OS X Snow Leopard підтримують WebGL, котрий був недоступний до випуску Safari 8.0.[21][22][23][24][25]
  • Opera — WebGL реалізований у Opera 11 та 12, хоча вимкнений за замовчуванням.[26][27]
  • Internet Explorer — WebGL частково підтримується у Internet Explorer 11. Спершу він не витримував жодного тесту на сумісність від WebGL, пізніше Microsoft випустив декілька оновлень. Остання версія 0.94 WebGL на даний момент проходить близько ~97% тестів від Khronos. Підтримка WebGL також може бути підключена вручну до попередніх версій Internet Explorer, використовуючи сторонні плагіни, такі як IEWebGL наприклад.[28][29][30][31]
  • Microsoft Edge – З моменту випуску підтримував WebGL версії 0.95 (контекстне ім'я: "experimental-webgl") з вільними вихідними кодами GLSL до HLSL transpiler.[32] Версії 10240+ підтримують WebGL 1.0 згідно специфікації. Версія WebGL 2.0 запланована і має середній пріоритет важливості щодо імплементації в майбутніх релізах.[33]

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

[ред. | ред. код]
  • BlackBerry 10 — WebGL доступний для пристроїв BlackBerry, починаючи з 10.00 версії ОП.[34]
  • BlackBerry PlayBook — WebGL доступний за допомоги WebWorks і браузера у PlayBook OS 2.00.[35]
  • Android Browser — Взагалі то не підтримується, але ряд Android смартфонів, наприклад: Sony Ericsson Xperia підтримує можливість WebGL завдяки вбудованим можливостям. Смартфони Samsung також мають підтримку WebGL (перевірено на Galaxy SII (4.1.2) і Galaxy Note 8.0 (4.2)).[36] Підтримується у Google Chrome браузері, що заміщає у багатьох телефонах вбудований браузер Android.
  • Internet Explorer — WebGL доступний, починаючи з Windows Phone 8.1.
  • Firefox for mobile — WebGL доступний для Android пристроїв, починаючи з Firefox 4.[37]
  • Google Chrome — WebGL доступний для Android пристроїв, починаючи з Google Chrome 25 і включений за замовчуванням, починаючи з 30 версії.[38]
  • Opera Mobile — Opera Mobile 12 підтримує WebGL (тільки для Android).[39]
  • Tizen
  • Ubuntu Touch
  • webOS
  • Safari для IOS — підтримує WebGL у версії iOS 8.[40]

Створення контенту та його експорт

[ред. | ред. код]

Використання WebGL API може дуже стомлювати якщо не використовувати деякі корисні бібліотеки наприклад створені для легкої роботи з шейдерами, чи для завантаження графічних сцен та 3D об'єктів у популярних на сьогодення форматах. JavaScript бібліотеки вбудовані (або портовані у WebGL) забезпечують додатковими функціональними можливостями. Неповний перелік бібліотек, які надають багато високотехнічних можливостей: three.js, O3D, OSG.JS[en], CopperLicht[en] і GLGE[en]. Також розвиваються [Гральний рушій|ігрові рушії] на WebGL,[41] включаючи Unreal Engine 4 і 5. Stage3D[en] /Flash-based Away3D[en] — бібліотека високого рівня, також має порт на WebGL реалізований на TypeScript.[42][43] Існують і простіші бібліотеки, котрі надають тільки векторні та матричні математичні можливості для шейдерів — sylvester.js. Іноді вона використовується в поєднанні з розширенням WebGL — glUtils.js.[44]

Є також деякі 2D бібліотеки, побудовані на основі WebGL, такі як Cocos2d-х або Pixi.js, які були реалізовані для підвищення продуктивності (так само, як Starling Framework відносно Stage3D у світі Flash). Коли WebGL не доступний, вирішення задач 2D бібліотек перекладається на HTML5 canvas.[45]

Видалення помилок рендерингу через надання майже повного доступу до GPU обмежує продуктивність реалізацій JavaScript. Деякі з них були переадресовані на asm.js[en]. (Точно так само, як впровадження Stage3D відкрило проблеми продуктивності в межах ActionScript, які були розглянуті в рамках проектів, таких як CrossBridge[en]).[45]

Створення контенту для WebGL сцен часто означає, використання стандартних 3D інструментів для створення та експорту сцен, відтворення їх у відповідних форматах для зовнішніх програм. Наприклад у авторському програмному забезпеченні для 3D, такому як Blender або Autodesk Maya. Але існує також деяке специфічне WebGL забезпечення, наприклад онлайн редактор Clara.io[en] на основі WebGL. Онлайн платформи, такі як Sketchfab[en] і Clara.io[en] дозволяють користувачам безпосередньо завантажувати свої 3D моделі і зображати їх за допомогою вбудованого WebGL переглядача.

Крім того, Mozilla Firefox реалізувала інструменти з вбудованим WebGL, починаючи з версії 27, котрі дозволяють редагування vertex і фрагменти шейдерів.[46] З'явився також ряд інших інструментів задля налагодження й профілювання проектів.[47]

X3D також виконали проект під назвою X3DOM для створення X3D і VRML контенту, що працює на WebGL. 3D модель розташовують між XML тегами <X3D> у HTML5, а інтерактивний скрипт використовує JavaScript і DOM для відображення. BS Content Studio разом з InstantReality X3D експортером може експортувати X3D у HTML і опрацювати його на WebGL.

Подібні технології для 3D у браузерах

[ред. | ред. код]

Прошарок Java OpenGL дуже схожий на WebGL у світі Java, в той час як Stage3D є еквівалентом Adobe Flash Player 11 і пізніших версій. Google Native Client також підтримує OpenGL ES 2.0.

Див. також

[ред. | ред. код]

Виноски

[ред. | ред. код]
  1. Library of Congress Library of Congress Name Authority File
  2. Canvas 3D. Архів оригіналу за 12 квітня 2012. Процитовано 14 грудня 2009.
  3. Firefox nightly builds. Архів оригіналу за 10 листопада 2016. Процитовано 14 грудня 2009.
  4. WebKit nightly builds. Архів оригіналу за 2 червня 2015. Процитовано 14 грудня 2009.
  5. WebGL slips into Chrome, too, for 3D Web. Архів оригіналу за 20 грудня 2012. Процитовано 14 грудня 2009.
  6. WebGL 3D web standard reaches draft stages [Архівовано 15 грудня 2009 у Wayback Machine.] — Techradar, 11.12.2009
  7. Архівована копія. Архів оригіналу за 20 лютого 2011. Процитовано 6 лютого 2011.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  8. Canvas 3D: GL power, web-style. Blog.vlad1.com. Архів оригіналу за 12 квітня 2012. Процитовано 14 травня 2011.
  9. Taking the canvas to another dimension. My.opera.com. 26 листопада 2007. Архів оригіналу за 17 листопада 2007. Процитовано 14 травня 2011.
  10. Google Body – Google Labs. Bodybrowser.googlelabs.com. Архів оригіналу за 13 травня 2011. Процитовано 14 травня 2011.
  11. Bhanoo, Sindya N. (23 грудня 2010). New From Google: The Body Browser. Well.blogs.nytimes.com. Архів оригіналу за 6 лютого 2015. Процитовано 14 травня 2011.
  12. AUTODESK FUSION 360: THE FUTURE OF CAD, PT. 1. 3dcadworld.com. Архів оригіналу за 16 березня 2015. Процитовано 21 серпня 2013.
  13. WebGL 2 Specification. khronos.org. 26 вересня 2013. Архів оригіналу за 8 серпня 2017. Процитовано 28 жовтня 2013.
  14. а б WebGL test page. Архів оригіналу за 18 квітня 2015. Процитовано 21 квітня 2015.
  15. Архівована копія. Архів оригіналу за 20 травня 2015. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  16. Архівована копія. Архів оригіналу за 28 травня 2015. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  17. Paul Mah (8 лютого 2011). Google releases Chrome 9; comes with Google Instant, WebGL – FierceCIO:TechWatch. FierceCIO. Архів оригіналу за 25 жовтня 2011. Процитовано 20 березня 2012.
  18. Архівована копія. Архів оригіналу за 28 травня 2015. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  19. Архівована копія. Архів оригіналу за 10 серпня 2014. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  20. Mozilla Firefox 4 Release Notes. Mozilla.com. 22 березня 2011. Архів оригіналу за 23 березня 2011. Процитовано 20 березня 2012.
  21. New in OS X Lion: Safari 5.1 brings WebGL, Do Not Track and more. Fairerplatform.com. 3 травня 2011. Архів оригіналу за 19 березня 2012. Процитовано 20 березня 2012.
  22. Enable WebGL in Safari. Ikriz.nl. 23 серпня 2011. Архів оригіналу за 4 березня 2012. Процитовано 20 березня 2012.
  23. Getting a WebGL Implementation. Khronos.org. 13 січня 2012. Архів оригіналу за 28 травня 2015. Процитовано 20 березня 2012.
  24. Implementations/WebKit. Khronos.org. 3 вересня 2011. Архів оригіналу за 21 березня 2015. Процитовано 20 березня 2012.
  25. WebGL Now Available in WebKit Nightlies. Webkit.org. Архів оригіналу за 8 березня 2012. Процитовано 20 березня 2012.
  26. WebGL and Hardware Acceleration. My.opera.com. 28 лютого 2011. Архів оригіналу за 3 березня 2011. Процитовано 20 березня 2012.
  27. Introducing Opera 12 alpha. My.opera.com. 13 жовтня 2011. Архів оригіналу за 15 жовтня 2011. Процитовано 20 березня 2012.
  28. Архівована копія. Архів оригіналу за 11 квітня 2015. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  29. Internet Explorer 11 Preview guide for developers. Microsoft. 17 липня 2013. Архів оригіналу за 31 жовтня 2014. Процитовано 24 липня 2013.
  30. WebGL. Microsoft. 17 липня 2013. Архів оригіналу за 31 жовтня 2014. Процитовано 24 липня 2013.
  31. Internet Explorer 11 to support WebGL and MPEG Dash. Engadget. 26 червня 2013. Архів оригіналу за 21 травня 2015. Процитовано 26 червня 2013.
  32. GitHub - Microsoft Edge WebGL Implementation. Microsoft. 4 червня 2016. Архів оригіналу за 10 травня 2019. Процитовано 10 червня 2016.
  33. The status of WebGL 2.0 in Microsoft Edge is Under Considieration. Microsoft Edge Development. Архів оригіналу за 27 грудня 2018. Процитовано 2 жовтня 2019.
  34. McDonough, Larry. WebGL: 3D Gaming on the Web Arrives. BerryReview. Архів оригіналу за 13 квітня 2013. Процитовано 9 квітня 2013.
  35. Halevy, Ronen. PlayBook OS 2.0 Developer Beta Includes WebGL, Flash 11, & AIR 3.0. BerryReview. Архів оригіналу за 21 липня 2013. Процитовано 15 листопада 2011.
  36. Xperia™ phones first to support WebGL™ – Developer World. blogs.sonyericsson.com. The Sony Ericsson Developer Program. 29 листопада 2011. Архів оригіналу за 12 березня 2013. Процитовано 5 грудня 2011.
  37. iclkevin (12 листопада 2011). WebGL on Mobile Devices. iChemLabs. Архів оригіналу за 12 березня 2013. Процитовано 25 листопада 2011.
  38. Kersey, Jason. Chrome Beta for Android Update. Chrome Releases Blog. Google. Архів оригіналу за 3 квітня 2015. Процитовано 23 серпня 2013.
  39. Opera Mobile 12. Opera Software. Архів оригіналу за 1 березня 2012. Процитовано 27 лютого 2012.
  40. Cunningham, Andrew. iOS 8, Thoroughly Reviewed. Архів оригіналу за 1 червня 2015. Процитовано 19 вересня 2014.
  41. Tony Parisi (13 лютого 2014). Programming 3D Applications with HTML5 and WebGL: 3D Animation and Visualization for Web Pages. "O'Reilly Media, Inc.". с. 364—366. ISBN 978-1-4493-6395-6. Архів оригіналу за 17 березня 2015. Процитовано 28 травня 2015.
  42. Архівована копія. Архів оригіналу за 8 серпня 2014. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  43. Архівована копія. Архів оригіналу за 8 серпня 2014. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  44. Steve Fulton; Jeff Fulton (2013). HTML5 Canvas (вид. 2nd). "O'Reilly Media, Inc.". с. 624. ISBN 978-1-4493-3588-5. Архів оригіналу за 17 березня 2015. Процитовано 28 травня 2015.
  45. а б Архівована копія. Архів оригіналу за 23 грудня 2019. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  46. Архівована копія. Архів оригіналу за 28 травня 2015. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  47. Архівована копія. Архів оригіналу за 28 травня 2015. Процитовано 28 травня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)

Посилання

[ред. | ред. код]