Как правило, WebGLJavaScript API, который отображает 2D- и 3D-графику в веб-браузере. Вариант сборки Unity WebGL позволяет Unity публиковать контент в виде программ JavaScript, использующих технологии HTML5 и API рендеринга WebGL для запуска контента Unity в веб-браузере. Подробнее
Увидеть в Словарь производительность близка к нативным приложениям на GPU, поскольку графический API WebGL использует ваш GPU для аппаратно-ускоренного рендеринга. Единственным исключением являются небольшие накладные расходы на перевод вызовов WebGL API и шейдеровпрограммы, работающей на графическом процессоре. Подробнее
См. в Словарь графический API вашей ОС (обычно DirectX в Windows, OpenGL в Mac и Linux).
На процессоре Emscripten переводит ваш код в формат WebAssembly, производительность которого зависит от используемого вами веб-браузера. Дополнительные сведения см. в записи блога Unity Время загрузки WebAssembly и производительность.
Ниже приведены дополнительные соображения, о которых вы должны знать:
* Язык JavaScript не поддерживает многопоточность или SIMD.
* Любой код, использующий эти функции, скорее всего, будет работать медленнее, чем другой код.
* Вы не можете писать многопотоковый или SIMD-код в WebGL в своих скриптахфрагмент кода, который позволяет вам создавать свои собственные компоненты, запускать игровые события, изменяйте свойства компонентов с течением времени и реагируйте на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь, но поскольку некоторые части двигателя многопоточные или SIMD-оптимизированные, они обеспечивают низкую производительность в WebGL. Например, WebGL СкиннингПроцесс привязки соединений костей к вершинам меша или «скина» персонажа. Выполняется с помощью внешнего инструмента, такого как Blender или Autodesk Maya. Подробнее
См. в Словарь является многопоточным и оптимизированным для SIMD.
Совет. Чтобы узнать, как Unity распределяет работу по разным потокам на платформах, отличных от WebGL, см. новую временную шкалу ProfilerОкно, помогающее оптимизировать игру. Он показывает, сколько времени вы тратите на различные области вашей игры. Например, он может сообщать о проценте времени, затраченном на рендеринг, анимацию или игровую логику. Подробнее
См. в Словарь в Unity.
Специфические настройки WebGL, влияющие на производительность
Для лучшей производительности установите уровень оптимизации на Быстрее в окне "Сборка проигрывателя" и установите для параметра Поддержка исключений значение Нет в >Настройки проигрывателя для WebGL, выбрав Другие настройки > Трассировка стека.
Профилирование WebGL
WebGL поддерживает профилировщик Unity. См. документацию по Profiler, чтобы узнать, как его настроить.
Содержимое WebGL на фоновых вкладках
Если Запускать в фоновом режиме включено в настройках проигрывателя для платформы WebGL или если вы включили Application.runInBackground ваше содержимое продолжает работать, когда холст или окно браузера теряют фокус.
Однако некоторые браузеры могут блокировать содержимое, работающее на вкладках в фоновом режиме. Если вкладка с вашим контентом не видна, ваш контент обновляется только один раз в секунду в большинстве браузеров. Обратите внимание, что это приводит к тому, что Time.time выполняется медленнее, чем обычно, с настройками по умолчанию, поскольку значение по умолчанию для Time.maximumDeltaTime меньше одной секунды.
Дросселирование производительности WebGL
В некоторых случаях вы можете захотеть запускать содержимое WebGL с более низкой частотой кадров, чтобы снизить нагрузку на ЦП. Например, на других платформах для этого можно использовать Application.targetFrameRate API.
Если вы не хотите снижать производительность, установите для этого API значение по умолчанию –1, а не высокое значение. Это позволяет браузеру регулировать частоту кадров для наиболее плавной анимации в цикле рендеринга браузера и может давать лучшие результаты, чем Unity, пытающаяся выполнить собственную синхронизацию основного цикла, чтобы соответствовать целевой частоте кадров.