Kris

OffscreenCanvas недоступен? Диагностика по платформам и окружению

Устранение неполадокСовместимость с браузерамиOffscreenCanvas

Что вы видите

Any3D сообщает: «Текущий браузер не поддерживает OffscreenCanvas». Это один из трёх компонентов пути Worker; без него такие операции, как сжатие текстур, требующие WebGL2-кодирования внутри Worker, не могут выполняться полностью.

OffscreenCanvas позволяет создавать canvas в Web Worker и получать WebGL-контекст, выполняя GPU-операции в фоне, не блокируя страницу.

Частые причины

ПричинаТипичный сценарий
Устаревший браузер/WebViewChrome < 69, Safari < 16.4, старый Android WebView
Отключено аппаратное ускорениеЭнергосбережение или политики GPU на Windows/macOS
Корпоративные политикиGPO отключает GPU, MDM ограничивает графику
Встроенный WebViewВКонтакте, корпоративные приложения, старые оболочки Electron
Сетевой уровеньРедко; чаще проблема с загрузкой скриптов, а не с самим API

Диагностика по платформам

Windows

  1. Chrome / Edge: Настройки → Система → включите «Использовать аппаратное ускорение» → полностью закройте и перезапустите браузер.
  2. Драйверы GPU: на ноутбуках с двумя видеокартами убедитесь, что браузер использует дискретную GPU (Панель управления NVIDIA / AMD Software).
  3. Групповые политики: политики типа «Отключить аппаратное ускорение» приводят к сбою создания WebGL-контекста OffscreenCanvas.
  4. Удалённый рабочий стол (RDP): в некоторых RDP-сессиях возможности GPU ограничены — проверьте при локальном входе.

macOS

  1. Safari 16.4+ или последняя версия Chrome.
  2. Системные настройки → Аккумулятор → режим низкого энергопотребления может снижать планирование GPU; попробуйте с подключённым питанием.
  3. Экранное время обычно не отключает OffscreenCanvas напрямую, но если MDM ограничивает графические API — обратитесь в IT.

Linux

  1. Убедитесь, что Mesa/проприетарные драйверы работают; тестируйте в последнем Chrome и под Wayland, и под X11.
  2. Для удалённого браузера на headless-сервере нужен виртуальный GPU (редкий сценарий для личного использования).

iOS / iPadOS

  1. Safari обновляется вместе с системой (начиная с iOS 16.4 поддержка OffscreenCanvas достаточно полная).
  2. WebView внутри приложений может отставать от системного Safari — откройте ссылку в Safari.
  3. iPad в режиме управления учебного заведения может быть заблокирован на старой системе — нужно обновление администратором.

Android

  1. Обновите Chrome и Android System WebView.
  2. В китайских браузерах совместимое ядро может не поддерживать — переключитесь на «быстрое ядро» или используйте Chrome.
  3. На бюджетных устройствах драйвер GPU устарел: попробуйте отключить «режим энергосбережения» и повторить.

Сеть, VPN и корпоративная среда

OffscreenCanvas — локальный API, обычно VPN на него напрямую не влияет. Но если VPN переводит браузер в «безопасный режим» или загружает корпоративные расширения с инъекциями скриптов, возможен косвенный сбой:

  • Сравните при отключённом VPN;
  • Проверьте, не принуждает ли корпоративный браузер к «программному рендерингу»;
  • При встраивании в iframe убедитесь, что внешний контекст не блокирует WebGL внутри Worker.

Родительский контроль и управляемые устройства

  • Family Link / Экранное время: крайне редко отключают OffscreenCanvas напрямую; чаще запрещают обновление браузера, из-за чего API устаревает — разрешите автоматические обновления системы.
  • Режим экзамена/библиотеки: может использоваться кастомный браузер — лучше перейти на личное устройство.

Пошаговое исправление (общее)

  1. Обновите браузер до версии не ниже минимальной из таблицы выше.
  2. Включите аппаратное ускорение и перезапустите браузер.
  3. Откройте в системном браузере, а не во встроенном WebView приложения.
  4. Если одновременно есть ошибка WebGL2, сначала решите её по руководству по исправлению WebGL2.

Быстрая самопроверка

typeof OffscreenCanvas !== "undefined";

Возврат false означает, что текущее окружение не поддерживает этот API.

Итог

Отсутствие OffscreenCanvas чаще всего связано с устаревшим браузером/WebView, отключённым аппаратным ускорением, удалённым доступом на Windows или корпоративными политиками GPU. Включите GPU-ускорение на своей платформе, обновите WebView и используйте системный браузер — обычно это восстанавливает GPU-кодирование внутри Worker.

Поддержите нас