Articulo de referencia

WebGL

"},"discontinued":{"wt":""},"latest_release_version":{"wt":"2.0"},"latest_release_date":{"wt":"{{Start date and age|2017|01|17}}"},"latest preview version":{"wt":""},"latest pre...

WebGL (abreviatura de Web Graphics Library ) es una API de JavaScript para renderizar gráficos interactivos 2D y 3D en cualquier navegador web compatible sin necesidad de complementos . [ 2 ] WebGL está totalmente integrado con otros estándares web , lo que permite el uso acelerado por GPU de física, procesamiento de imágenes y efectos en el lienzo HTML . Los elementos WebGL se pueden combinar con otros elementos HTML y componer con otras partes de la página o el fondo de la página. [ 3 ]

Los programas WebGL constan de código de control escrito en JavaScript y código de sombreado escrito en OpenGL ES Shading Language (GLSL ES, a veces denominado ESSL), un lenguaje similar a C o C++ . El código WebGL se ejecuta en la GPU del ordenador.

WebGL es diseñado y mantenido por el grupo sin fines de lucro Khronos Group . [ 4 ] El 9 de febrero de 2022, Khronos Group anunció la compatibilidad con WebGL 2.0 en todos los navegadores principales. [ 5 ]

A partir de 2024, se está desarrollando una nueva API gráfica, WebGPU , para reemplazar a WebGL. WebGPU ofrece capacidades ampliadas, una interfaz más moderna y acceso directo a la GPU, lo que resulta útil para aplicaciones gráficas exigentes y de inteligencia artificial.

Diseño

WebGL 1.0 se basa en OpenGL ES 2.0 y proporciona una API para gráficos 3D. [ 6 ] Utiliza el elemento canvas de HTML5 y se accede a él mediante interfaces del Modelo de Objetos del Documento (DOM).

WebGL 2.0 se basa en OpenGL ES 3.0 . Garantiza la disponibilidad de muchas extensiones opcionales de WebGL 1.0 y expone nuevas API. [ 7 ] La gestión automática de memoria la proporciona implícitamente JavaScript . [ 4 ]

Al igual que OpenGL ES 2.0, WebGL carece de las API de función fija introducidas en OpenGL 1.0 y obsoletas en OpenGL 3.0. Esta funcionalidad, si se requiere, debe ser implementada por el desarrollador mediante código de sombreado y JavaScript.

Los sombreadores en WebGL se escriben en GLSL y se pasan a la API de WebGL como cadenas de texto. La implementación de WebGL compila estas cadenas a código para GPU. Este código se ejecuta para cada vértice enviado a través de la API y para cada píxel que se muestra en la pantalla.

Historia

WebGL evolucionó a partir de los experimentos de Canvas 3D iniciados por Vladimir Vukićević en Mozilla . Vukićević demostró por primera vez un prototipo de Canvas 3D en 2006. A finales de 2007, tanto Mozilla [ 8 ] como Opera [ 9 ] habían realizado sus propias implementaciones separadas.

A principios de 2009, el consorcio tecnológico sin fines de lucro Khronos Group inició el Grupo de Trabajo WebGL, con la participación inicial de Apple , Google , Mozilla, Opera y otros. [ 4 ] [ 10 ] La versión 1.0 de la especificación WebGL se publicó en marzo de 2011. [ 1 ]

Una de las primeras aplicaciones de WebGL fue Zygote Body . [ 11 ] [ 12 ] En noviembre de 2012, Autodesk anunció que había portado la mayoría de sus aplicaciones a la nube, ejecutándose en clientes WebGL locales. Estas aplicaciones incluían Autodesk Fusion y AutoCAD . [ 13 ]

El desarrollo de la especificación WebGL 2 comenzó en 2013 y finalizó en enero de 2017. [ 14 ] La especificación se basa en OpenGL ES 3.0. [ 15 ] Las primeras implementaciones se encuentran en Firefox 51, Chrome 56 y Opera 43. [ 16 ]

Implementaciones

Motor de capas gráficas casi nativo

Almost Native Graphics Layer Engine (ANGLE) es un motor gráfico de código abierto que implementa los estándares WebGL 1.0 (2.0 que se ajusta estrechamente a ES 3.0) y OpenGL ES 2.0 y 3.0. Es un backend predeterminado tanto para Google Chrome como para Mozilla Firefox en plataformas Windows y funciona traduciendo las llamadas WebGL y OpenGL a las API disponibles específicas de la plataforma. Actualmente, ANGLE proporciona acceso a OpenGL ES 2.0 y 3.0 para las API de escritorio OpenGL, OpenGL ES, Direct3D 9 y Direct3D 11. [ 17 ] ″[Google] Chrome utiliza ANGLE para toda la representación gráfica en Windows, incluida la implementación acelerada de Canvas2D y el entorno sandbox de Native Client.″ [ 17 ]

Software

WebGL cuenta con un amplio soporte en los navegadores modernos. Sin embargo, su disponibilidad también depende de otros factores, como la compatibilidad de la GPU. El sitio web oficial de WebGL ofrece una página de prueba sencilla. [ 18 ] En sitios web de terceros se puede encontrar información más detallada (como el motor de renderizado que utiliza el navegador y las extensiones disponibles). [ 19 ] [ 20 ]

Navegadores de escritorio

Fuente: [ 2 ]

  • Google Chrome – WebGL 1.0 ha estado habilitado en todas las plataformas que tienen una tarjeta gráfica capaz con controladores actualizados desde la versión 9, lanzada en febrero de 2011. [ 21 ] [ 22 ] Por defecto en Windows, Chrome usa el renderizador ANGLE (Almost Native Graphics Layer Engine) para convertir OpenGL ES a Direct X 9.0c o 11.0, que tienen mejor soporte de controlador. [ 23 ] Sin embargo, en Linux y Mac OS X, el renderizador predeterminado es OpenGL. [ 24 ] También es posible forzar OpenGL como renderizador en Windows. [ 23 ] Desde septiembre de 2013, Chrome también tiene un renderizador Direct3D 11 más nuevo, que requiere una tarjeta gráfica más nueva. [ 25 ] [ 26 ] Chrome 56+ es compatible con WebGL 2.0.
  • Firefox – WebGL 1.0 se ha habilitado en todas las plataformas que tienen una tarjeta gráfica compatible con controladores actualizados desde la versión 4.0. [ 27 ] Desde 2013, Firefox también usa DirectX en la plataforma Windows a través de ANGLE . [ 23 ] Firefox 51+ admite WebGL 2.0.
  • Safari – Safari 6.0 y versiones posteriores instaladas en OS X Mountain Lion , Mac OS X Lion y Safari 5.1 en Mac OS X Snow Leopard implementaron soporte para WebGL 1.0, que estaba deshabilitado por defecto antes de Safari 8.0. [ 28 ] [ 29 ] [ 30 ] [ 31 ] [ 32 ] Safari versión 12 (disponible en macOS Mojave) tiene soporte disponible para WebGL 2.0 como una característica "experimental". Safari 15 habilita WebGL 2.0 para todos los usuarios. [ 33 ]
  • Opera – WebGL 1.0 se implementó en Opera 11 y 12, pero se deshabilitó por defecto en 2014. [ 34 ] [ 35 ] Opera 43+ admite WebGL 2.0.
  • Internet Explorer – WebGL 1.0 es parcialmente compatible con Internet Explorer 11. [ 36 ] [ 37 ] [ 38 ] [ 39 ] Inicialmente , Internet Explorer no superó la mayoría de las pruebas de conformidad oficiales de WebGL, pero Microsoft lanzó posteriormente varias actualizaciones. El último motor WebGL 0.94 actualmente supera aproximadamente el 97 % de las pruebas de Khronos. [ 40 ] La compatibilidad con WebGL también se puede agregar manualmente a versiones anteriores de Internet Explorer mediante complementos de terceros como IEWebGL. [ 41 ]
  • Microsoft Edge – Para Microsoft Edge Legacy, la versión estable inicial admite WebGL versión 0.95 (nombre de contexto: "experimental-webgl") con un transpilador GLSL a HLSL de código abierto . [ 42 ] La versión 10240+ admite WebGL 1.0 como prefijo. La última versión de Edge basada en Chromium admite WebGL 2.0.

Navegadores móviles

  • Google Chrome – WebGL 1.0 es compatible con Android desde Chrome 25. [ 43 ] WebGL 2.0 es compatible con Android desde Chrome 58. [ 44 ] Chrome se utiliza para la vista web del sistema Android desde Android 5. [ 45 ]
  • Firefox para móviles : WebGL 1.0 está disponible para dispositivos Android desde Firefox 4. [ 46 ] [ 47 ]
  • Safari en iOS : WebGL 1.0 está disponible para Safari móvil en iOS 8. [ 48 ] WebGL 2.0 está disponible para Safari móvil en iOS 15. [ 44 ]
  • Microsoft Edge – WebGL 1.0 con prefijo estaba disponible en Windows 10 Mobile. [ 49 ] . La última versión de Edge basada en Chromium admite WebGL 2.0.
  • Opera Mobile – Opera Mobile 12 es compatible con WebGL 1.0 (solo en Android). [ 50 ]
  • Sailfish OS – WebGL 1.0 es compatible con el navegador Sailfish predeterminado. [ 51 ]
  • Tizen – WebGL 1.0 es compatible [ 52 ]

Herramientas y ecosistema

Servicios públicos

La naturaleza de bajo nivel de la API WebGL, que por sí sola ofrece pocas funcionalidades para crear rápidamente gráficos 3D atractivos, motivó la creación de bibliotecas de nivel superior que abstraen operaciones comunes (por ejemplo, cargar grafos de escena y objetos 3D en ciertos formatos; aplicar transformaciones lineales a sombreadores o frustums de vista ). Algunas de estas bibliotecas se portaron a JavaScript desde otros lenguajes. Ejemplos de bibliotecas que ofrecen funcionalidades de alto nivel incluyen A-Frame (VR) , BabylonJS, PlayCanvas , three.js , OSG.JS , el visor de modelos de Google y CopperLicht . Web3D también creó un proyecto llamado X3DOM para que el contenido X3D y VRML se ejecutara en WebGL.

Juegos

Ha surgido una serie de motores de juegos 2D y 3D para WebGL, [ 53 ] como Unreal Engine 4 y Unity . [ 54 ] La biblioteca de alto nivel Stage3D /Flash Away3D también tiene una versión para WebGL mediante TypeScript . [ 25 ] [ 55 ] Una biblioteca de utilidades más ligera que proporciona únicamente las utilidades matemáticas de vectores y matrices para sombreadores es sylvester.js. [ 56 ] [ 57 ] A veces se utiliza junto con una extensión específica de WebGL llamada glUtils.js. [ 56 ] [ 58 ]

También existen algunas bibliotecas 2D construidas sobre WebGL, como Cocos2d -x o Pixi.js , que se implementaron de esta manera por razones de rendimiento, en una decisión similar a la que se tomó con el Starling Framework sobre Stage3D en el mundo de Flash. Las bibliotecas 2D basadas en WebGL recurren al lienzo HTML5 cuando WebGL no está disponible. [ 59 ] Eliminar el cuello de botella de renderizado al brindar acceso casi directo a la GPU ha expuesto limitaciones de rendimiento en las implementaciones de JavaScript. Algunas fueron abordadas por asm.js y WebAssembly (de manera similar, la introducción de Stage3D expuso problemas de rendimiento dentro de ActionScript , que fueron abordados por proyectos como CrossBridge ). [ 59 ]

Creación de contenido

Como con cualquier otra API gráfica, la creación de contenido para escenas WebGL requiere el uso de una herramienta de creación de contenido 3D y la exportación de la escena a un formato legible por el visor o la biblioteca auxiliar. Se puede utilizar software de autoría 3D de escritorio como Blender , Autodesk Maya o SimLab Composer para este propósito. En particular, Blend4Web permite crear una escena WebGL completamente en Blender y exportarla a un navegador con un solo clic, incluso como una página web independiente. [ 60 ] También hay algunos programas específicos de WebGL como CopperCube y el editor en línea basado en WebGL Clara.io . Plataformas en línea como Sketchfab y Clara.io permiten a los usuarios cargar directamente sus modelos 3D y visualizarlos utilizando un visor WebGL alojado.

Herramientas basadas en el entorno

A partir de Firefox versión 27, Mozilla ha dotado a Firefox de herramientas WebGL integradas que permiten la edición de sombreadores de vértices y fragmentos. [ 61 ] También han surgido otras herramientas de depuración y análisis de rendimiento . [ 62 ]

Véase también

Referencias

  1. 1 2 "Khronos publica la especificación final de WebGL 1.0" . 3 de marzo de 2011. Consultado el 18 de mayo de 2015 .
  2. 1 2 "Fundamentos de WebGL" . HTML5 es genial.
  3. Parisi, Tony (15 de agosto de 2012). "WebGL: En funcionamiento" . O'Reilly Media, Incorporated . Consultado el 13 de julio de 2012 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  4. 1 2 3 "WebGL – OpenGL ES 2.0 para la Web" . Khronos.org . Consultado el 14 de mayo de 2011 .
  5. "WebGL 2.0 logra soporte generalizado en todos los principales navegadores web" . The Khronos Group . 9 de febrero de 2022. Consultado el 13 de febrero de 2022 .
  6. "Especificación WebGL" . Khronos.org . Consultado el 14 de mayo de 2011 .
  7. "Especificación WebGL 2.0" . Khronos.org . Consultado el 27 de febrero de 2017 .
  8. "Canvas 3D: Poder GL, estilo web" . Blog.vlad1.com. Archivado del original el 17 de julio de 2011. Consultado el 14 de mayo de 2011 .
  9. "Llevando el lienzo a otra dimensión" . My.opera.com. 26 de noviembre de 2007. Archivado del original el 17 de noviembre de 2007. Consultado el 14 de mayo de 2011 .
  10. "Khronos detalla la iniciativa WebGL para llevar gráficos 3D acelerados por hardware a Internet" . Khronos.org. 4 de agosto de 2009. Archivado del original el 19 de abril de 2012. Consultado el 14 de mayo de 2011 .
  11. "Google Body – Google Labs" . Bodybrowser.googlelabs.com. Archivado del original el 13 de mayo de 2011. Consultado el 14 de mayo de 2011 .
  12. Bhanoo, Sindya N. (23 de diciembre de 2010). "Novedad de Google: El navegador corporal" . Well.blogs.nytimes.com . Recuperado el 14 de mayo de 2011 .
  13. "AUTODESK FUSION 360: EL FUTURO DEL CAD, PARTE 1" . 3dcadworld.com. 29 de noviembre de 2012. Consultado el 21 de agosto de 2013 .
  14. "Especificación WebGL 2" . khronos.org. 26 de septiembre de 2013. Consultado el 28 de octubre de 2013 .
  15. "Especificación WebGL 2.0" .
  16. "WebGL - API web" . MDN . 28 de septiembre de 2024.
  17. 1 2 "ANGLE - Motor de capas gráficas casi nativo" . 2019. Consultado el 21 de junio de 2019 .
  18. "Página de prueba de WebGL" . webgl.org .
  19. "Informe WebGL" . webglreport.com .
  20. "Informe del navegador WebGL — Detección de WebGL — Probador de WebGL — BrowserLeaks" . browserleaks.com .
  21. Mah, Paul (8 de febrero de 2011). "Google lanza Chrome 9; viene con Google Instant y WebGL – FierceCIO:TechWatch" . FierceCIO. Archivado del original el 25 de octubre de 2011. Consultado el 20 de marzo de 2012 .
  22. "¡WebGL en Chrome estable! - Aprendiendo WebGL" . learningwebgl.com . Archivado del original el 28 de mayo de 2015. Consultado el 7 de agosto de 2014 .
  23. 1 2 3 "(WebGL) Cómo habilitar OpenGL nativo en tu navegador (Windows)" . geeks3d.com . 11 de junio de 2013.
  24. "Blog de Chromium: Presentación del proyecto ANGLE" . Blog de Chromium .
  25. 1 2 "WebGL en la red, 17 de octubre de 2013 - Aprendiendo WebGL" . learningwebgl.com . Archivado del original el 8 de agosto de 2014. Recuperado el 5 de agosto de 2014 .
  26. "¡Por fin! ¡Ha llegado el día de Chrome D3D11!" . tojicode.com .
  27. "Notas de la versión de Mozilla Firefox 4" . Mozilla.com. 22 de marzo de 2011. Consultado el 20 de marzo de 2012 .
  28. "Novedades en OS X Lion: Safari 5.1 incorpora WebGL, No rastrear y más" . Fairerplatform.com. 3 de mayo de 2011. Archivado del original el 19 de marzo de 2012. Consultado el 20 de marzo de 2012 .
  29. "Habilitar WebGL en Safari" . Ikriz.nl. 23 de agosto de 2011. Archivado del original el 4 de marzo de 2012. Consultado el 20 de marzo de 2012 .
  30. "Obteniendo una implementación de WebGL" . Khronos.org. 13 de enero de 2012. Consultado el 20 de marzo de 2012 .
  31. "Implementaciones/WebKit" . Khronos.org. 3 de septiembre de 2011. Consultado el 20 de marzo de 2012 .
  32. "WebGL ya está disponible en las versiones nocturnas de WebKit" . Webkit.org. Archivado del original el 8 de marzo de 2012. Consultado el 20 de marzo de 2012 .
  33. modeless (24/09/2021). "Safari 15 ya está disponible. ¡WebGL 2 ahora es compatible con todos los navegadores y plataformas principales!" . r/webgl . Consultado el 18/10/2023 .
  34. "WebGL y aceleración por hardware" . My.opera.com. 28 de febrero de 2011. Archivado del original el 3 de marzo de 2011. Consultado el 20 de marzo de 2012 .
  35. "Presentando Opera 12 alpha" . My.opera.com. 13 de octubre de 2011. Archivado del original el 15 de octubre de 2011. Consultado el 20 de marzo de 2012 .
  36. "WebGL (Windows)" . microsoft.com . Microsoft.
  37. "Guía de vista previa de Internet Explorer 11 para desarrolladores" . Microsoft. 17 de julio de 2013. Consultado el 24 de julio de 2013 .
  38. "WebGL" . Microsoft. 17 de julio de 2013. Consultado el 24 de julio de 2013 .
  39. "Internet Explorer 11 será compatible con WebGL y MPEG Dash" . Engadget. 26 de junio de 2013. Consultado el 26 de junio de 2013 .
  40. "IE11 falla en más de la mitad de las pruebas del conjunto oficial de pruebas de conformidad WebGL" . Microsoft Connect.
  41. "IEWebGL" . Iewebgl . Consultado el 14 de agosto de 2014 .
  42. "GitHub - Implementación de WebGL en Microsoft Edge" . Microsoft. 4 de junio de 2016. Consultado el 10 de junio de 2016 .
  43. "WebGL: gráficos 2D y 3D para la web - API web - MDN" . Consultado el 28 de junio de 2023 .
  44. 1 2 "WebGL 2.0 - ¿Puedo usarlo...?" Consultado el 28 de junio de 2023 .
  45. "Chrome para Android y Webview" . Consultado el 9 de junio de 2025 .
  46. "WebGL en dispositivos móviles" . iChemLabs. 12 de noviembre de 2011. Archivado del original el 27 de enero de 2013. Consultado el 25 de noviembre de 2011 .
  47. "Compatibilidad móvil con HTML5 en iPhone, Android, Windows Phone, BlackBerry, Firefox OS y otros dispositivos móviles" . Consultado el 16 de septiembre de 2015 .
  48. Cunningham, Andrew (17 de septiembre de 2014). "iOS 8, análisis exhaustivo" . Ars Technica . Consultado el 19 de septiembre de 2014 .
  49. "Guía para desarrolladores: WebGL – Desarrollo de Microsoft Edge" . Microsoft. Archivado del original el 8 de octubre de 2016. Consultado el 10 de junio de 2016 .
  50. "Opera Mobile 12" . Opera Software. Archivado del original el 1 de marzo de 2012. Consultado el 27 de febrero de 2012 .
  51. "HTML5test – ¿Qué tan bien es compatible su navegador con HTML5?" . Consultado el 16 de septiembre de 2015 .
  52. "HTML5test – ¿Qué tan bien es compatible su navegador con HTML5?" . Consultado el 16 de septiembre de 2015 .
  53. Parisi, Tony (13 de febrero de 2014). Programación de aplicaciones 3D con HTML5 y WebGL: Animación y visualización 3D para páginas web . O'Reilly Media, Inc. págs. 364–366 . ISBN  978-1-4493-6395-6.
  54. Barrett, Stephen. "Tegra K1 llega al Chromebook más reciente de Acer" . anandtech.com . Archivado del original el 11 de agosto de 2014.
  55. "Blog > Away3D Typescript 4.1 Alpha > Away3D" . away3d.com . Archivado del original el 8 de agosto de 2014. Consultado el 5 de agosto de 2014 .
  56. 1 2 Boreskov, Alexey; Shikin, Evgeniy (2014). Computer Graphics: From Pixels to Programmable Graphics Hardware . CRC Press. p. 370. ISBN  978-1-4398-6730-3.
  57. Anyuru, Andreas (2012). Programación profesional de WebGL: Desarrollo de gráficos 3D para la web . John Wiley & Sons. pág. 140. ISBN  978-1-119-94059-3.
  58. ^ Fulton, Steve; Fulton, Jeff (2013). Lienzo HTML5 (2ª ed.). O'Reilly Media, Inc. pág. 624.ISBN   978-1-4493-3588-5.
  59. 1 2 "El potencial de WebGL - TypedArray.org" . typedarray.org .
  60. "Sitio oficial de Blend4Web - Acerca de" . Blend4Web.com . Consultado el 22 de junio de 2015 .
  61. "Edición en vivo de sombreadores WebGL con las herramientas para desarrolladores de Firefox" . Mozilla Hacks – el blog para desarrolladores web .
  62. "Renderizado en tiempo real · Herramientas de depuración y análisis de rendimiento de WebGL" . realtimerendering.com . 19 de noviembre de 2013.