Thread di WebAssembly
I thread permettono al runtime di utilizzare più di un processore alla volta. Oltre a migliorare le prestazioni, questo consente di eseguire contemporaneamente due o più compiti. L’impatto più evidente per Wonderland Engine è ora il framerate fluido durante la transcodifica delle texture di base.
Supporto nei browser
I thread di WebAssembly sono abilitati di default da Chrome Desktop 74 / Chrome Android 88.
Poiché Oculus Browser segue da vicino le versioni di Chrome per Android, questo significa che Oculus Quest e Oculus Quest 2 potranno sfruttare la potenza dei thread di WebAssembly nelle loro versioni future.
Firefox supporta i thread di WebAssembly a partire dalla versione 79.0, rilasciata il 28 luglio 2020.
Uso nei motori di gioco
I thread permettono di svolgere lavoro simultaneamente o semplicemente di svolgerlo con più potenza.
Nel secondo caso, si possono accelerare operazioni che richiedono molta CPU, come la transcodifica di più texture di base nello stesso momento.
Nel primo caso, permette di eseguire il rendering insieme ad operazioni pesanti per la CPU che si estendono su gran parte o più di un singolo frame.
Oltre al caricamento di risorse, la fisica è un ottimo esempio. Durante l’inizio del rendering delle parti statiche della scena, un motore di gioco può simultaneamente simulare gli oggetti dinamici.
Rilevanza per WebXR
In WebXR, specialmente per la Realtà Virtuale, mantenere un framerate fluido dovrebbe essere la tua priorità numero uno.
Poiché ciò di solito utilizza la maggior parte della potenza di elaborazione e lascia solo piccoli frammenti di pochi millisecondi, è davvero difficile svolgere compiti di elaborazione più lunghi senza intoppi.
Per eseguire questi tipi di compiti, è necessario utilizzare un service worker / thread per permettere al rendering di continuare mentre questi vengono eseguiti.
Implementazione in Wonderland Engine
Con il rilascio 0.7.3, Wonderland Engine utilizza i thread di WebAssembly attraverso un sistema interno di gestione dei lavori, se disponibile.
Se non disponibile, userà un runtime che funziona senza thread. Uno dei primi messaggi nella console del browser sarà “WASM Threads è supportato” o “WASM Threads non è supportato”.
Anche se attualmente Wonderland Engine utilizza il sistema di gestione dei lavori solo per accelerare e rendere più fluido il caricamento iniziale della scena, gradualmente sposteremo sempre più compiti nei thread. Questo migliorerà le prestazioni dei tuoi progetti senza che tu debba cambiare nulla.