Migración de WebGL a WebGPU

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

En esta presentación, exploraré la transición de WebGL a WebGPU, demostrando cómo estos cambios afectan el desarrollo de juegos. La charla incluirá ejemplos prácticos y fragmentos de código para ilustrar las diferencias clave y sus implicaciones en el rendimiento y la eficiencia.

This talk has been presented at JS GameDev Summit 2023, check out the latest edition of this JavaScript Conference.

FAQ

WebGL es una tecnología que permite a los desarrolladores web incorporar objetos 3D en los navegadores sin necesidad de complementos adicionales. La versión de escritorio de WebGL debutó en 1993, y WebGL 1.0, basado en OpenGL ES 2.0, se lanzó en 2011. En 2017, se introdujo WebGL 2.0, que se basa en OpenGL ES 3.0 lanzado en 2012, ofreciendo varias mejoras y nuevas características.

WebGPU es una API que ofrece a los desarrolladores más control y flexibilidad sobre los recursos de hardware gráfico. Se basa en Vulkan, Direct3D 12 y Metal, proporcionando una plataforma multiplataforma que soporta Mac, Windows y Chrome OS, con planes de expansión a Linux y Android. WebGPU está diseñada para ofrecer un alto rendimiento y optimización en gráficos web.

WebGL utiliza contextos vinculados a lienzos específicos para la renderización, mientras que WebGPU utiliza un dispositivo que puede controlar el renderizado en múltiples lienzos o ventanas. Además, WebGPU reemplaza la necesidad de programas separados mediante una tubería que combina sombreadores y otros estados de renderizado, ofreciendo un proceso más modular y menos propenso a errores.

En WebGL, las variables uniformes se pueden establecer directamente a través de llamadas a la API o agrupar en buffers uniformes en WebGL2 para mejorar la eficiencia. En WebGPU, se maneja exclusivamente a través de buffers uniformes, lo que permite cargar datos en un solo bloque grande, optimizando el rendimiento y la gestión de recursos.

La transición a WebGPU ofrece un control más profundo sobre el hardware gráfico, una mayor eficiencia en la gestión de recursos y un proceso de desarrollo más robusto y modular. Esto resulta en gráficos más optimizados y eficientes, lo que es crucial para aplicaciones web complejas y de alto rendimiento.

Una de las herramientas disponibles para convertir GLSL a WGSL es Naga, una biblioteca de Rust que puede utilizarse incluso directamente en el navegador con la ayuda de WebAssembly. Esto simplifica la transición a WebGPU para los desarrolladores que trabajan con shaders.

En WebGPU, es esencial ajustar las matrices de proyección para que generen salidas que van de cero a uno, adecuándose al rango de profundidad de WebGPU. Esto se puede lograr mediante bibliotecas como GLMatrix, que ofrecen funciones específicas para este ajuste, o ajustando la matriz de proyección antes de su aplicación para adaptarse al nuevo rango.

Dmitrii Ivashchenko
Dmitrii Ivashchenko
21 min
28 Sep, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla explora las diferencias entre WebGL y WebGPU, con un enfoque en la transición de WebGL a WebGPU. Se discute el proceso de inicialización y los programas de sombreado en ambas APIs, así como la creación de tuberías en WebGPU. La comparación de los uniformes destaca el uso de buffers uniformes para mejorar el rendimiento. La charla también cubre las diferencias en las convenciones entre WebGL y WebGPU, incluyendo texturas, espacios de vista y recorte. Por último, se mencionan las diferencias en el rango de profundidad y la matriz de proyección entre las dos APIs.
Available in English: Migration from WebGL to WebGPU

1. Introducción a WebGL y WebGPU

Short description:

En esta charla, exploraremos las diferencias entre WebGL y la próxima versión de WebGPU y aprenderemos cómo preparar el proyecto para la transición. WebGL tiene una historia que se remonta a 1993, y la primera versión estable, WebGL 1.0, se lanzó en 2011. WebGL 2.0, lanzado en 2017, trajo varias mejoras y nuevas características. WebGPU, construido sobre Vulkan, Direct3D 12 y Metal, ha estado progresando significativamente y es compatible con varios motores.

Hola a todos. Soy Dmitry Vaschenko, un ingeniero de software líder en My.Games. En esta charla, exploraremos las diferencias entre WebGL y la próxima versión de WebGPU y aprenderemos cómo preparar el proyecto para la transición.

Comencemos explorando la línea de tiempo de WebGL y WebGPU, así como el estado actual de WebGL y WebGPU. WebGL, al igual que otras tecnologías, tiene una historia que se remonta al pasado. La versión de escritorio de WebGL debutó en 1993. En 2011, se lanzó WebGL 1.0 como la primera versión estable de WebGL. Se basaba en OpenGL ES 2.0, que se introdujo en 2007. Y este lanzamiento permitió a los desarrolladores web incorporar objetos 3D en los navegadores sin necesidad de complementos adicionales. En 2017, se introdujo una nueva versión de WebGL, llamada WebGL 2.0. Esta versión se lanzó seis años después de la versión inicial y se basaba en WebGL ES 3.0, que se lanzó en 2012. WebGL 2.0 vino con varias mejoras y nuevas características, lo que lo hace aún más capaz de producir gráficos 3D potentes en la web.

Últimamente, ha habido un creciente interés en nuevas API de gráficos que ofrecen a los desarrolladores más control y flexibilidad. Tres API notables aquí son Vulkan, Direct3D 12 y Metal. Juntas, estas tres API crean la base para WebGPU. Vulkan, desarrollado por el Grupo Kronos, es una API multiplataforma que proporciona a los desarrolladores un acceso de nivel inferior a los recursos de hardware gráfico. Esto permite aplicaciones de alto rendimiento con un mejor control del hardware gráfico. Direct3D 12, creado por Microsoft, es exclusivo para Windows y Xbox, obviamente, y ofrece a los desarrolladores un control más profundo sobre los recursos gráficos. Y Metal, una API exclusiva para dispositivos Apple, diseñada por Apple, por supuesto, con un rendimiento máximo en mente de su hardware. WebGPU ha estado progresando significativamente últimamente. Se ha expandido a plataformas como Mac, Windows y Chrome OS, ahora disponible en Chrome y en las versiones 113. Se espera que se agregue soporte para Linux y Android pronto. Hay varios motores que admiten o están experimentando con WebGPU. Por ejemplo, Babylon.js admite completamente WebGPU, mientras que Tree.js actualmente tiene soporte experimental. Play Canvas todavía está en desarrollo, pero su futuro parece prometedor. Y Unity anunció el soporte temprano y experimental de WebGPU en la versión alfa 2023.2. Cocoa's Creator 3.6.2 admite oficialmente WebGPU. Y finalmente, Construct actualmente solo admite la versión 113 o posterior de Chrome en máquinas con Windows, MacOS y Chrome OS. Teniendo esto en cuenta, parece una decisión inteligente comenzar la transición hacia WebGPU o al menos preparar los proyectos para una transición futura. Ahora exploremos las principales diferencias de alto nivel.

2. Inicialización de la API de gráficos y programas de sombreado

Short description:

Cuando se trabaja con API de gráficos como WebGL y WebGPU, el primer paso es inicializar el objeto principal para la interacción. WebGL utiliza contextos para representar una interfaz para dibujar en un elemento de lienzo HTML5 específico, mientras que WebGPU introduce el concepto de un dispositivo que proporciona más flexibilidad. En WebGL, el programa de sombreado es el enfoque principal y crear un programa implica varios pasos. Sin embargo, este proceso puede ser complicado y propenso a errores.

Y al comenzar a trabajar con API de gráficos, el primer paso es inicializar el objeto principal para la interacción. Este proceso del proyecto tiene algunas diferencias entre WebGL y WebGPU, lo que puede causar algunos problemas en ambos sistemas. En WebGL, este objeto se llama contextos. Y este contexto representa una interfaz para dibujar en un elemento de lienzo HTML5. Obtener estos contextos es fácil, pero es importante tener en cuenta que está vinculado a un lienzo específico. Esto significa que si necesita renderizar en varios lienzos, necesitará múltiples contextos.

Y WebGPU introduce un nuevo concepto llamado dispositivo. El dispositivo representa una abstracción de GPU con la que interactuará. El proceso de inicialización es un poco más complejo que en WebGL, pero proporciona más flexibilidad. Una ventaja de este modelo es que un dispositivo puede renderizar en varios lienzos o incluso en ninguno. Esto proporciona flexibilidad adicional, permitiendo que un dispositivo controle el renderizado en múltiples ventanas o contextos.

WebGL y WebGPU son dos métodos distintos para administrar y organizar el pipeline de gráficos. En WebGL, el énfasis principal está en el programa de sombreado, que combina sombreadores de vértices y fragmentos para determinar cómo se transforma el vértice y cómo se colorea cada píxel. Para crear un programa en WebGL, es necesario seguir varios pasos. En primer lugar, es necesario escribir y compilar el código fuente de los sombreadores. A continuación, es necesario adjuntar los sombreadores compilados al programa y luego vincularlos. Después, es necesario activar el programa antes de renderizar. Y por último, es necesario transmitir datos al programa activado. Este proceso proporciona un control flexible sobre los gráficos, pero puede ser complicado y propenso a errores, especialmente para proyectos grandes y complejos.

3. Creación de la tubería de WebGPU

Short description:

En WebGPU, una tubería reemplaza los programas separados e incluye sombreadores y otros parámetros de renderizado. La creación de una tubería implica definir el sombreador, crear la tubería y activarla antes de renderizar. Este enfoque simplifica el proceso y permite gráficos optimizados y eficientes en la web.

Cuando se desarrollan gráficos para la web, es esencial tener un proceso fluido y eficiente. Y en WebGPU, esto se logra a través del uso de una tubería. La tubería reemplaza la necesidad de programas separados e incluye no solo sombreadores, sino también otra información crítica que se establece como estados en WebGL. La creación de una tubería en WebGPU puede parecer más complicada al principio, pero ofrece una mayor flexibilidad y modularidad. El proceso implica tres pasos clave. En primer lugar, debe definir el sombreador escribiendo y compilando el código fuente del sombreador, al igual que en WebGL. En segundo lugar, crea la tubería combinando los sombreadores y otros parámetros de renderizado en una unidad cohesiva. Y finalmente, debe activar la tubería antes de renderizar. En comparación con WebGL, WebGPU encapsula más aspectos del renderizado en un solo objeto. Este enfoque crea un proceso más predecible y resistente a errores, y en lugar de administrar sombreadores y estados de renderizado por separado, todo se combina en un solo objeto de tubería. Siguiendo estos pasos, los desarrolladores pueden crear gráficos optimizados y eficientes para la web con facilidad.

4. Comparación de Uniformes en WebGL y WebGPU

Short description:

Las variables uniformes en WebGL y WebGPU se pueden consolidar en estructuras más grandes utilizando buffers uniformes, lo que reduce las llamadas a la API y mejora el rendimiento. WebGL2 permite enlazar subconjuntos de un buffer uniforme grande a través de la llamada a la API bind-buffer-range, mientras que WebGPU utiliza desplazamientos de buffer uniforme dinámicos. Estas optimizaciones brindan flexibilidad y eficiencia a los desarrolladores que trabajan en proyectos de WebGL y WebGPU.

Ahora, comparemos los uniformes en WebGL y WebGPU. Las variables uniformes ofrecen datos constantes que pueden ser accedidos por todas las instancias de sombreadores, y con WebGL básico, podemos establecer variables uniformes directamente a través de llamadas a la API. Sin embargo, este enfoque es sencillo pero requiere múltiples llamadas a la API para cada variable uniforme. Con la llegada de WebGL2, los desarrolladores ahora pueden agrupar variables uniformes en buffers, una alternativa altamente eficiente para usar sombreadores uniformes separados. Al consolidar diferentes uniformes en una estructura más grande utilizando buffers uniformes, todos los datos uniformes pueden ser transmitidos a la GPU de una vez, lo que reduce las llamadas a la API y mejora el rendimiento. En el caso de WebGL2, se pueden enlazar subconjuntos de un buffer uniforme grande a través de una llamada especial a la API, conocida como bind-buffer-range. De manera similar, en WebGPU, se utilizan desplazamientos de buffer uniforme dinámicos para el mismo propósito, lo que permite pasar una lista de desplazamientos al invocar la API set-bind group. Este nivel de flexibilidad y optimización ha convertido a los buffers uniformes en una herramienta valiosa para los desarrolladores que buscan optimizar sus proyectos de WebGL y WebGPU.

5. Transición de WebGL a WebGPU

Short description:

En lugar de admitir variables uniformes individuales, el trabajo se realiza exclusivamente a través de buffers uniformes. Cargar datos en un solo bloque grande es preferido por las GPU modernas en lugar de muchos pequeños. La transición de WebGL a WebGPU implica modificar tanto la API como los sombreadores. La especificación WGSL facilita una transición fluida e intuitiva al tiempo que garantiza una eficiencia y rendimiento óptimos para las GPU contemporáneas. Si estás trabajando con WGSL, notarás que algunas de las funciones integradas de GLSL tienen nombres diferentes o han sido reemplazadas. Hay herramientas disponibles que pueden automatizar el proceso de conversión de GLSL a WGSL. Hablemos sobre algunas de las diferencias en las convenciones entre WebGL y WebGPU. Específicamente, repasaremos las disparidades en texturas, espacios de vista y recorte. Cuando hagas la migración, es posible que te encuentres con un problema inesperado donde tus imágenes estén invertidas.

Un mejor método está disponible a través de WebGPU. En lugar de admitir variables uniformes individuales, el trabajo se realiza exclusivamente a través de buffers uniformes. Cargar datos en un solo bloque grande es preferido por las GPU modernas en lugar de muchos pequeños. En lugar de recrear y volver a enlazar pequeños buffers cada vez, crear un solo buffer grande y usar diferentes partes de él para diferentes llamadas de dibujo puede aumentar significativamente el rendimiento. Y aunque WebGL es más imperativo, restableciendo el estado global con cada llamada y esforzándose por ser lo más simple posible, WebGPU tiene como objetivo ser más orientado a objetos y centrado en la reutilización de recursos, lo que conduce a la eficiencia, por supuesto.

Aunque la transición de WebGL a WebGPU puede parecer difícil debido a las diferencias en los métodos, comenzar con una transición a WebGL2 como paso intermedio puede simplificar el trabajo. La transición de WebGL a WebGPU implica modificar tanto la API como los sombreadores. La especificación WGSL facilita una transición fluida e intuitiva al tiempo que garantiza una eficiencia y rendimiento óptimos para las GPU contemporáneas. Tengo un ejemplo de sombreador para una textura que utiliza GLSL y WGSL. WGSL sirve como una conexión entre WebGPU y las API gráficas nativas. Aunque WGSL parece ser más mundano que GLSL, el formato sigue siendo reconocible. Las siguientes tablas muestran una comparación entre los tipos de datos básicos y de matriz que se encuentran en GLSL y WGSL. Pasar de GLSL a WGSL indica una preferencia por una tipificación más estricta y una especificación clara del tamaño de los datos, lo que resulta en una mejor legibilidad y una menor probabilidad de error. La estructura de metadeclaración se ha alterado con la adición de una sintaxis explícita para declarar campos en las estructuras de WGSL, y esto destaca la necesidad de una mayor claridad y simplificación para las estructuras de datos en los sombreadores. Al alterar la sintaxis de las funciones en WGSL, se promueve un enfoque unificado para las declaraciones y los valores de retorno, lo que resulta en un código más consistente y predecible.

Si estás trabajando con WGSL, notarás que algunas de las funciones integradas de GLSL tienen nombres diferentes o han sido reemplazadas. Esto en realidad es útil porque simplifica los nombres de las funciones y los hace más intuitivos. Esto facilitará la transición a WGSL para los desarrolladores que están familiarizados con otras API gráficas. Si planeas convertir tus proyectos de WebGL a WebGPU, hay herramientas disponibles que pueden automatizar el proceso de conversión de GLSL a WGSL. Una de esas herramientas es Naga, una biblioteca de Rust que se puede utilizar para convertir GLSL a WGSL, y lo mejor de todo es que incluso se puede utilizar directamente en tu navegador con la ayuda de WebAssembly.

Hablemos sobre algunas de las diferencias en las convenciones entre WebGL y WebGPU. Específicamente, repasaremos las disparidades en texturas, espacios de vista y recorte. Y cuando hagas la migración, es posible que te encuentres con un problema inesperado donde tus imágenes estén invertidas. Este es un problema común para aquellos que han trasladado aplicaciones de OpenGL a Direct3D. En OpenGL y WebGL, las imágenes generalmente se cargan de modo que el primer píxel esté en la esquina inferior izquierda. Sin embargo, muchos desarrolladores cargan imágenes comenzando desde la esquina superior izquierda, lo que resulta en una imagen invertida. Los sistemas Direct3D y Metal utilizan la esquina superior izquierda como punto de partida para las texturas, y los desarrolladores de WebGPU han decidido seguir esta práctica, ya que parece ser el enfoque más sencillo para la mayoría de los desarrolladores. Si tu código de WebGL selecciona píxeles del búfer de fotogramas, es importante tener en cuenta que WebGPU utiliza un sistema de coordenadas diferente. Para ajustar esto, es posible que debas aplicar una operación y="1-y'' sencilla para corregir las coordenadas.

6. Diferencias en el Rango de Profundidad y la Matriz de Proyección

Short description:

WebGL y WebGPU tienen diferentes definiciones para el rango de profundidad del espacio de recorte. WebGL utiliza un rango de menos uno a uno, mientras que WebGPU utiliza un rango de cero a uno. La matriz de proyección se encarga de transformar las posiciones de tu modelo en espacio de recorte. Se pueden realizar ajustes asegurando que la matriz de proyección genere salidas que van de cero a uno. La transición a WebGPU es un paso hacia el futuro de los gráficos web, combinando características y prácticas exitosas de varias API gráficas.

Si un desarrollador se encuentra con un problema donde los objetos desaparecen o se recortan demasiado pronto, puede deberse a diferencias en el dominio de profundidad. WebGL y WebGPU tienen diferentes definiciones para el rango de profundidad del espacio de recorte. Mientras que WebGL utiliza un rango de menos uno a uno, WebGPU utiliza un rango de cero a uno, similar a otras API gráficas como Diag2D, Metal y Vulkan. Esta decisión se tomó en base a las ventajas de utilizar un rango de cero a uno que se descubrieron al trabajar con otras API gráficas.

Entonces, la matriz de proyección es principalmente responsable de transformar las posiciones de tu modelo en espacio de recorte, y una forma útil de realizar ajustes en tu código es asegurarse de que la matriz de proyección genere salidas que van de cero a uno. Esto se puede lograr implementando ciertas funciones disponibles en bibliotecas como GLMatrix, como la función PerspectiveCO. También existen otras operaciones métricas que ofrecen funciones comparables que puedes utilizar. Y en caso de que estés trabajando con una matriz de proyección existente que no se puede modificar, aún hay una solución. Puedes transformar la matriz de proyección para que se ajuste al rango de 0 a 1 aplicando otra métrica que modifique el rango de profundidad antes de la matriz de proyección. Esta técnica de pre-multiplicación puede ser una forma efectiva de ajustar el rango de tu matriz de proyección según tus necesidades.

Entonces, como puedes ver, la transición a WebGPU es más que simplemente cambiar de API gráfica. Es un paso hacia el futuro de los gráficos web, combinando características y prácticas exitosas de varias API gráficas. Y esta migración requiere una comprensión profunda de los cambios técnicos y filosóficos, pero los beneficios son significativos, ¿verdad? Así que, gracias por tu atención y que tengas un excelente día.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
How React Compiler Performs on Real Code
React Advanced 2024React Advanced 2024
31 min
How React Compiler Performs on Real Code
Top Content
I'm Nadia, a developer experienced in performance, re-renders, and React. The React team released the React compiler, which eliminates the need for memoization. The compiler optimizes code by automatically memoizing components, props, and hook dependencies. It shows promise in managing changing references and improving performance. Real app testing and synthetic examples have been used to evaluate its effectiveness. The impact on initial load performance is minimal, but further investigation is needed for interactions performance. The React query library simplifies data fetching and caching. The compiler has limitations and may not catch every re-render, especially with external libraries. Enabling the compiler can improve performance but manual memorization is still necessary for optimal results. There are risks of overreliance and messy code, but the compiler can be used file by file or folder by folder with thorough testing. Practice makes incredible cats. Thank you, Nadia!
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Optimización de juegos HTML5: 10 años de aprendizaje
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Optimización de juegos HTML5: 10 años de aprendizaje
Top Content
PlayCanvas is an open-source game engine used by game developers worldwide. Optimization is crucial for HTML5 games, focusing on load times and frame rate. Texture and mesh optimization can significantly reduce download sizes. GLTF and GLB formats offer smaller file sizes and faster parsing times. Compressing game resources and using efficient file formats can improve load times. Framerate optimization and resolution scaling are important for better performance. Managing draw calls and using batching techniques can optimize performance. Browser DevTools, such as Chrome and Firefox, are useful for debugging and profiling. Detecting device performance and optimizing based on specific devices can improve game performance. Apple is making progress with WebGPU implementation. HTML5 games can be shipped to the App Store using Cordova.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Crea un Juego Con PlayCanvas en 2 Horas
JSNation 2023JSNation 2023
116 min
Crea un Juego Con PlayCanvas en 2 Horas
Top Content
Featured WorkshopFree
Steven Yau
Steven Yau
En esta masterclass, construiremos un juego utilizando el motor WebGL de PlayCanvas desde el principio hasta el final. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la escritura de scripts, la creación de UI y mucho más.
Tabla de contenido:- Introducción- Introducción a PlayCanvas- Lo que vamos a construir- Agregando un modelo de personaje y animación- Haciendo que el personaje se mueva con scripts- 'Falsa' carrera- Agregando obstáculos- Detectando colisiones- Agregando un contador de puntuación- Fin del juego y reinicio- ¡Resumen!- Preguntas
Nivel de la masterclassSe recomienda familiaridad con los motores de juegos y los aspectos del desarrollo de juegos, pero no es obligatorio.
Cómo crear arte generativo increíble con código JavaScript simple
JS GameDev Summit 2022JS GameDev Summit 2022
165 min
Cómo crear arte generativo increíble con código JavaScript simple
Top Content
Workshop
Frank Force
Frank Force
En lugar de dibujar manualmente cada imagen como en el arte tradicional, los artistas generativos escriben programas que son capaces de producir una variedad de resultados. En esta masterclass aprenderás cómo crear arte generativo increíble usando solo un navegador web y un editor de texto. Comenzando con conceptos básicos y avanzando hacia la teoría avanzada, cubriremos todo lo que necesitas saber.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
Workshop
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
PlayCanvas de principio a fin: la versión rápida
JS GameDev Summit 2022JS GameDev Summit 2022
121 min
PlayCanvas de principio a fin: la versión rápida
Top Content
Workshop
João Ruschel
João Ruschel
En esta masterclass, construiremos un juego completo utilizando el motor PlayCanvas mientras aprendemos las mejores prácticas para la gestión de proyectos. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la gestión de activos, scripting, audio, depuración, y mucho más.
Depuración del Rendimiento de React
React Advanced 2023React Advanced 2023
148 min
Depuración del Rendimiento de React
Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Veía una interacción lenta, probaba una optimización aleatoria, veía que no ayudaba, y seguía probando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Hacía una grabación en Chrome DevTools o React Profiler, la examinaba, intentaba hacer clic en cosas al azar, y luego la cerraba frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos cómo analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, cubriremos el rendimiento de interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)