Соображения по производительности веб-сайта
В целом, веб-производительность близка к нативным приложениям на GPU, поскольку WebGL графика API использует ваш GPU для аппаратно-ускоренного рендеринга. Единственным исключением является небольшая накладная стоимость перевода WebGL API вызовов и шейдеров к вашему OS графика API (обычно DirectX на Windows, OpenGL на Mac, и Linux).
На CPU, Emscripten переводит ваш код в WebAssembly, производительность которого зависит от используемого вами веб-браузера.
Обратите внимание на следующие соображения:
- Unity обеспечивает многопоточность для кода C/C++, но пока не для кода C# из-за ограничений WebAssembly.
- При использовании WebGL API для рендеринга, CPU-сторонняя отправка операций WebGL медленнее, чем в собственном OpenGL. В результате, для наилучшей производительности рекомендуется избегать большого количества вызовов рисования на кадр, так что убедитесь, что в ваших шейдерах используются как методы экземплярования, так и пакетирования.
- SIMD на вебе поддерживается как часть набора функций WebAssembly 2023. Обязательно включите WebAssembly 2023 для наилучшей производительности на новых браузерах.
Совет: Чтобы узнать, как Unity распределяет работу между различными потоками на не-веб платформах, обратитесь к новой временной шкале Profiler в Unity.
Веб-параметры проигрывателя, влияющие на производительность
Если вы отключите Целевой показатель WebAssembly 2023 (под Параметры публикации > WebAssembly Языковые особенности), улучшить производительность путем установки Исключение (под Другие настройки > Трек стека) до Нет.
Если включить Цель WebAssembly 2023 год, то накладные расходы на производительность от любого варианта поддержки исключений будут незначительными.
Веб-контент на фоновых вкладках
Содержимое продолжает выполняться, когда экран или окно браузера теряют фокус, если включен один из следующих параметров:
- Запуск в фоновом режиме в Настройках плеера для веб-платформы
- Application.runInBackground
Если вкладка с вашим контентом не видна, ваш контент обновляется только один раз в секунду в большинстве браузеров. Обратите внимание, что это приводит к Time.time медленнее, чем обычно с настройками по умолчанию, так как значение по умолчанию Time.maximumDeltaTime меньше одной секунды.
Регулирование производительности веб-сервера
В некоторых ситуациях вы можете запустить веб-контент с меньшей частотой кадров, чтобы уменьшить использование CPU. Например, на других платформах вы можете использовать Application.targetFrameRate API для этого.
Когда вы не хотите снижать производительность, установите API на значение по умолчанию -1. Это позволяет браузеру настраивать частоту кадров для наиболее плавной анимации в цикле рендеринга браузера, и может дать лучшие результаты, чем Unity, пытающийся сделать свое собственное время цикла для соответствия целевой частоте кадров.
Примечание: По соображениям безопасности Unity не может запросить браузер для его частоты кадров. В результате, Unity предполагает частоту отображения 60 кадров в секунду для всех браузеров и баз Application.targetFrameRate на эту значение.