Hilos en WebAssembly
Los hilos permiten que el runtime use más de un procesador a la vez. Además del rendimiento adicional, esto permite realizar dos o más tareas simultáneamente. El impacto más notable que tiene esto para Wonderland Engine es ahora la suavidad en la tasa de cuadros mientras se transcodifican texturas basis.
Soporte del navegador
Los hilos de WebAssembly están habilitados desde Chrome Desktop 74 / Chrome Android 88 por defecto.
Dado que el Navegador de Oculus sigue de cerca las versiones de Chrome para Android, esto significa que Oculus Quest y Oculus Quest 2 podrán aprovechar el poder de los hilos de WebAssembly en su próxima versión.
Firefox soporta los hilos de WebAssembly desde la versión 79.0, la cual fue lanzada el 28 de julio de 2020.
Uso para Motores de Juego
Los hilos permiten realizar tareas simultáneamente o simplemente hacer el trabajo con más potencia.
Con lo último, las tareas pesadas en CPU pueden acelerarse, como transcodificar múltiples texturas Basis al mismo tiempo.
Lo primero permite ejecutar el renderizado junto a tareas pesadas en CPU que abarcan una gran parte de o más de un solo cuadro.
Aparte de cargar activos, la física es un gran ejemplo de esto. Mientras se comienza a renderizar las partes estáticas de la escena, un motor de juego puede simultáneamente simular los objetos dinámicos.
Importancia para WebXR
En WebXR, especialmente para Realidad Virtual, renderizar a una tasa de cuadros suave debería ser la prioridad número uno de tu aplicación.
Dado que eso usualmente consume la mayor parte del poder de procesamiento y deja solo pequeños fragmentos de unos pocos milisegundos, es realmente difícil realizar tareas de procesamiento más largas sin interrupciones.
Para realizar este tipo de tareas, necesitas usar un service worker / hilo para permitir que el renderizado continúe mientras ellas se ejecutan.
Implementación en Wonderland Engine
Con la versión 0.7.3, Wonderland Engine utiliza hilos de WebAssembly a través de un sistema de trabajo interno si está disponible.
Si no está disponible, recurrirá a cargar un runtime que funcione sin hilos. Encontrarás que una de las primeras líneas en la consola del navegador será “WASM Threads is supported” o “WASM Threads is not supported”.
Aunque actualmente Wonderland Engine solo usa el sistema de trabajo para acelerar y suavizar la carga inicial de la escena, gradualmente moveremos más y más tareas a hilos. Esto mejorará el rendimiento de tus proyectos sin necesidad de cambiar nada.