WebAssembly Threads

Threads позволяют среде выполнения использовать более одного процессора одновременно. Помимо дополнительной производительности, это позволяет одновременно выполнять две или более задачи. Наиболее заметное влияние на Wonderland Engine заключается в теперь плавной частоте кадров при транскодировании basis текстур.

Поддержка браузерами 

WebAssembly threads включены по умолчанию с Chrome Desktop 74 / Chrome Android 88.

Поскольку Oculus Browser тесно следует за выпусками Chrome для Android, это означает, что Oculus Quest и Oculus Quest 2 смогут использовать возможности WebAssembly threads в своей предстоящей версии.

Firefox поддерживает WebAssembly threads с версии 79.0, которая была выпущена 28 июля 2020 года.

Использование в игровых движках 

Threads позволяют выполнять задачи одновременно или просто делать работу более мощной.

В последнем случае задачи, требующие интенсивной работы CPU, могут быть ускорены, например, транскодирование нескольких basis текстур одновременно.

Первый подход позволяет запускать рендеринг параллельно с задачами, требующими интенсивной работы CPU, которые занимают большую часть или более одного кадра.

Помимо загрузки активов, физика является отличным примером этого. В то время как начинается рендеринг статических частей сцены, игровой движок может одновременно симулировать динамические объекты.

Значение для WebXR 

В WebXR, особенно для виртуальной реальности, рендеринг с плавной частотой кадров должен быть приоритетом номер один вашего приложения.

Поскольку это обычно занимает большую часть мощности процессора и оставляет только небольшие временные отрезки в несколько миллисекунд, очень сложно выполнять более длительные процессинговые задачи без задержек.

Для выполнения таких задач вам нужно использовать service worker / thread, чтобы позволить рендерингу продолжаться, пока они выполняются.

Реализация в Wonderland Engine 

С выпуском 0.7.3, Wonderland Engine использует WebAssembly threads через внутреннюю систему заданий, если они доступны.

Если не доступны, он перейдет к загрузке среды выполнения, которая работает без threads. Вы найдете одну из первых строчек в консоли браузера “WASM Threads is supported” или “WASM Threads is not supported”.

Хотя Wonderland Engine в настоящее время использует систему заданий только для ускорения и сглаживания начальной загрузки сцены, мы постепенно будем перемещать все больше задач в threads. Это улучшит производительность ваших проектов без необходимости менять что-либо с вашей стороны.

Last Update: October 30, 2020

Будьте в курсе.