Мы ценим вашу конфиденциальность. Мы используем файлы cookie, чтобы улучшить ваш опыт на нашем сайте. Используя этот сайт, вы соглашаетесь с нашей Политикой конфиденциальности.

WebAssembly Threads

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: March 11, 2025

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