¿Cuál es la ventaja y el futuro de WebGL?

He estado trabajando con ello durante 6 meses. En su estado actual, es realmente frustrante.

  • Diferente extensión de hardware. (Dispositivo diferente = nuevo problema)
  • No es compatible con MRT en algunos dispositivos que originalmente son compatibles con OpenGL es.
  • La carga de texturas y modelos a través del sitio web es realmente lenta y los usuarios odian el sitio web lento. La mayoría de los usuarios cerrarán el sitio web de inmediato si tarda más de 5 segundos en cargarse.
  • Sin código y protección de contenido. Incluso el script kiddie puede robar su código, modelos y texturas y ejecutarlo en su propio sitio.
  • Muy mal rendimiento en comparación con el código nativo.

No mucha gente lo está usando para un propósito serio. Ahora, es solo otro juguete para desarrolladores.

La buena noticia es que están lanzando WebGL 2.0. Malas noticias viejo problema aún inquietante.

En el futuro lejano con Internet rápido en todas partes, excelente hardware, JavaScript firmado y protección de contenido en cada navegador, webGL será una opción obvia para los desarrolladores debido a su flexibilidad y soporte multiplataforma.

Todavía no lo he probado, pero creo que tiene un futuro muy prometedor.

¿Las ventajas? Simplemente lea su nombre: “web” y “biblioteca de gráficos”. Hasta hace poco, los documentos de hipertexto (páginas web) no tenían acceso de script a la tarjeta gráfica, a menos que se instalaran complementos de terceros en el agente de usuario (navegador). Sin él, no puede renderizar gráficos 3D de manera eficiente dentro de una página web y, por lo tanto, no podría crear aplicaciones 3D interactivas para la web.

En teoría, los complementos del navegador podrían acceder a la GPU, pero solo si el proceso del navegador podría (y no veo por qué no), y el navegador lo permitió (a través del permiso del usuario). Pero la falta de una API estándar dificultaría la adopción de los desarrolladores web (tal vez el complemento solo estaría disponible para Chrome pero no para IE), y el usuario aún tendría que pasar por la molestia de instalar y aprobar el complemento .

Y, de hecho, podría renderizar 3D solo con la CPU. Pero tendría que hacer los cálculos pesados ​​usted mismo (ninguna biblioteca sensata lo intentaría), y aún sería imposible renderizar una imagen de tamaño de pantalla completa de complejidad decente (unos pocos cientos de polígonos con luz, sombra, textura, algunos alfa fusión y proyección de cámara no ortogonal) en menos de 17 milisegundos (también conocido como 60 cuadros por segundo).

Con WebGL, su JavaScript estándar tendrá acceso nativo a una API similar a OpenGL, en cualquier navegador compatible. Una aplicación 3D interactiva servida a través de su HTTP regular, incrustado en su HTML normal, con acceso a XMLHttpRequest (también conocido como AJAX) y DOM. Incluso podría usar jQuery para ayudar a manipular su escena 3D.

Podrías aprovechar lo mejor de ambos mundos.

WegGL se basa en OpenGL ES, no en la versión de escritorio. Esto le da a muchas personas una idea equivocada al respecto.

De ninguna manera es una biblioteca de gráficos con todas las funciones. Si está buscando eso, le recomiendo three.js (en serio, incluso puede elegir GPU … una versión más avanzada de raycasting que no tendría la menor idea de cómo implementarla por mi cuenta).

Entonces, aquí tiene una gran ventaja de WebGL aquí en el presente: está habilitando gráficos 3D basados ​​en navegador. Quiero decir, ¡solo mira esos ejemplos! Y eso es solo en JavaScript sin ningún patrocinio corporativo. Así que espere más bibliotecas como esa usando WebGl como back-end.

Ahora, para lo que personalmente lo uso en un nivel más bajo es para cosas como esta. Desearía tener una comparación directa para mostrar, pero solo efectos de procesamiento de imágenes 2D muy básicos que su navegador no haya acelerado por hardware (como nota al margen: apenas he conocido a ningún desarrollador que entienda cómo funciona CSS bajo el capó y puede juzgar la velocidad de los diferentes estilos / transformaciones de navegador a navegador sin perfilarlos) generalmente serán terriblemente lentos. Por ejemplo, cualquier desarrollador competente sabe que un desenfoque gaussiano de aspecto decente no es algo que quiera hacer en la parte delantera. Excepto, ¿adivina qué? Con WebGl puedes. Incluso en el móvil.

Ahora, mirando el estado de sofisticación en el desarrollo web, me sorprendería ver a WebGL ponerse al día con el procesamiento de imágenes 2D directamente en cualquier medida. Después de todo, es una API de hardware … incluso un nivel más bajo aquí que en la versión de escritorio … y muchos desarrolladores web ni siquiera se preocupan por profundizar en las características modernas de JavaScript. Pero, de nuevo, ¿como backend para algo como la propiedad de filtro CSS (actualmente todavía experimental)? Absolutamente. La compatibilidad con versiones anteriores será un gran problema como siempre, pero idealmente imagino un futuro de aplicaciones web donde la apariencia de cualquier cosa se pueda personalizar infinitamente en el front-end con una sobrecarga extremadamente baja. Es posible … si lo queremos.

Aprenda WebGL aquí: https://hackr.io/tutorials/learn

Recientemente me topé con algunas demostraciones bastante impresionantes de Babylon.js y PlayCanvas .

  • Ejemplo de Babylon.js
  • Ejemplo de PlayCanvas

Como recordatorio: estos marcos permiten la representación 3D en cualquier navegador web (actualizado), utilizando la biblioteca WebGL .

Junto con node.js y Socket.IO , esos motores 3D permiten lanzar juegos 3D multijugador en tiempo real.

Por supuesto, tales juegos nunca se compararán con los títulos AAA que se ejecutan en entornos más nativos. Pero una parte de la industria actual de los videojuegos se está inclinando hacia juegos más simples y accesibles. Piense en juegos de estrategia o juegos de rol (MMO), por ejemplo (o cualquier cosa que no requiera muy baja latencia y alta reactividad, como lo hacen los FPS). Esas bibliotecas de Javascript podrían hacer un buen trabajo en ello.

Además, facilitan la creación de juegos multiplataforma, ya que cualquier dispositivo moderno con un navegador web puede ejecutar su juego.

Otra ventaja es la accesibilidad de “un clic” ( es decir, alguien le envía una URL -> hace clic en ella -> está jugando el juego), que puede ser una ventaja crucial para difundir su juego.

He visto algunos juegos de Unity que podrían haberse creado en WebGL con solo una pequeña caída en el rendimiento y la calidad visual (aunque puedo estar equivocado aquí). Y podrían haberse beneficiado mucho de ser jugables en los navegadores web.

De hecho, estoy sorprendido de que aún no hayamos oído hablar de un juego web 3D jugado de forma masiva. ¿Por que es esto entonces? ¿Crees que cambiará en el futuro?

Incluso si uno quiere argumentar que los juegos web no son lo suficientemente maduros para 3D, ¿qué pasa con 2D? Muchas personas están utilizando motores como Unity o Unreal 4 para juegos 2D relativamente “simples”, mientras que podrían haber hecho algo totalmente similar con el javascript de hoy, y potencialmente llegar a un público más amplio.