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. Это улучшит производительность ваших проектов без необходимости менять что-либо с вашей стороны.