Влияние освещения на производительность

Освещение в A-Frame — один из ключевых факторов, напрямую влияющих как на визуальное качество сцены, так и на производительность. В среде WebGL, лежащей в основе A-Frame (через движок Three.js), каждый источник света участвует в расчётах освещения для каждого фрагмента или вершины. Это увеличивает нагрузку на GPU и, в некоторых случаях, на CPU.

Виртуальная реальность предъявляет повышенные требования к частоте кадров. Для комфортного восприятия сцена должна работать стабильно на 72–90 FPS и выше (в зависимости от устройства). Избыточное количество источников света или сложные тени способны снизить производительность до критического уровня.


Типы источников света в A-Frame

A-Frame использует компонент light, который является обёрткой над системой освещения Three.js. Поддерживаются следующие типы:

Ambient Light

<a-entity light="type: ambient; color: #BBB"></a-entity>

Характеристики:

  • Освещает все объекты равномерно
  • Не создаёт теней
  • Минимальная нагрузка на GPU

Влияние на производительность: Почти не влияет на FPS. Подходит для базовой подсветки сцены.


Directional Light

<a-entity light="type: directional; intensity: 1" position="0 10 5"></a-entity>

Характеристики:

  • Имитирует солнечный свет
  • Световые лучи параллельны
  • Может создавать тени

Влияние на производительность:

  • Без теней — умеренная нагрузка
  • С тенями — значительное увеличение затрат GPU

Point Light

<a-entity light="type: point; intensity: 1; distance: 20"></a-entity>

Характеристики:

  • Свет излучается во всех направлениях
  • Затухание с расстоянием
  • Поддержка теней

Влияние на производительность:

  • Один из самых «дорогих» типов
  • При включённых тенях нагрузка возрастает кратно

Spot Light

<a-entity light="type: spot; angle: 30; penumbra: 0.5"></a-entity>

Характеристики:

  • Направленный конус света
  • Поддержка теней
  • Регулируемая мягкость краёв

Влияние на производительность:

  • Сложнее, чем directional light
  • Особенно ресурсоёмок при динамическом перемещении

Освещение и расчёт шейдеров

В A-Frame используется физически корректная модель освещения (PBR), если применяются материалы типа:

material="shader: standard"

Каждый источник света участвует в расчётах:

  • диффузного отражения
  • зеркального отражения
  • теней
  • нормалей поверхности

Количество операций увеличивается пропорционально:

  • числу источников света
  • числу объектов
  • сложности материала

Формула роста нагрузки близка к:

O(число_светов × число_объектов)

При использовании сложных материалов (normal map, roughness map, metalness map) нагрузка возрастает дополнительно.


Тени как основной фактор деградации FPS

Включение теней в A-Frame требует:

<a-scene shadow="type: pcfsoft"></a-scene>

И у источника света:

light="type: directional; castShadow: true"

А также у объектов:

shadow="cast: true; receive: true"

Почему тени ресурсоёмки?

  1. Создаётся отдельная карта глубины (shadow map)
  2. Выполняется дополнительный рендеринг сцены с позиции источника света
  3. Применяется фильтрация (PCF, PCFSoft)

Каждый источник света с тенями создаёт собственную shadow map.

Следствия:

  • Увеличение потребления видеопамяти
  • Дополнительные проходы рендеринга
  • Рост времени кадра

На мобильных VR-устройствах (например, автономных гарнитурах) использование более одного источника с тенями часто приводит к падению ниже 60 FPS.


Размер карты теней и её влияние

По умолчанию shadow map имеет ограниченное разрешение. Его можно изменить:

light="type: directional; castShadow: true; shadowMapWidth: 2048; shadowMapHeight: 2048"

Чем выше разрешение:

  • тем чётче тени
  • тем выше нагрузка на GPU
  • тем больше потребление памяти

Увеличение с 1024×1024 до 4096×4096 может увеличить время рендеринга теней в несколько раз.


Количество источников света

В WebGL существует практическое ограничение на количество активных источников света, особенно при использовании forward rendering.

Особенности:

  • Каждый новый свет добавляет вычисления в фрагментный шейдер
  • На мобильных устройствах количество допустимых источников ограничено аппаратно
  • При превышении лимитов часть света может игнорироваться

Рекомендации для VR:

  • 1 directional + 1–2 вспомогательных света
  • Минимизация динамических источников
  • Отказ от теней у второстепенных источников

Статическое и динамическое освещение

Динамическое освещение

Преимущества:

  • Реалистичные изменения сцены
  • Реакция на перемещение объектов

Недостатки:

  • Перерасчёт каждый кадр
  • Повышенная нагрузка

Статическое освещение

Реализуется через:

  • light baking (запекание освещения)
  • использование lightmap-текстур

Lightmap — это заранее рассчитанная текстура освещения, применяемая к материалу.

Преимущества:

  • Минимальная нагрузка в рантайме
  • Высокая стабильность FPS

Недостатки:

  • Отсутствие динамических теней
  • Необходимость подготовки сцены во внешнем инструменте

Материалы и их влияние

Материал flat:

material="shader: flat"
  • Игнорирует освещение
  • Не реагирует на источники света
  • Максимально производителен

Материал standard:

material="shader: standard"
  • Поддерживает PBR
  • Учитывает все источники света
  • Значительно тяжелее

Использование flat для второстепенных объектов позволяет существенно снизить нагрузку.


Освещение и мобильные устройства

VR-сцены в браузере чаще всего работают на:

  • мобильных GPU
  • встроенных графических ускорителях
  • ограниченных тепловых режимах

Особенности мобильных GPU:

  • Ограниченная пропускная способность памяти
  • Меньшее число ALU-блоков
  • Чувствительность к overdraw

Освещение с несколькими источниками и тенями может привести к:

  • троттлингу
  • падению частоты кадров
  • нагреву устройства

Оптимизация освещения в A-Frame

1. Минимизация количества источников

Лучше один качественный directional light, чем несколько point light.

2. Отказ от теней при возможности

Тени стоит использовать только для ключевых объектов.

3. Ограничение области действия света

Параметр distance у point light:

light="type: point; distance: 10"

Сокращение радиуса уменьшает объём расчётов.

4. Использование baked lighting

Запекание света во внешних редакторах (например, Blender) позволяет получить высокое качество без нагрузки на рантайм.

5. Замена реальных источников имитацией

Иногда можно:

  • добавить градиентную текстуру
  • использовать emissive-параметры материала
  • применить ambient light вместо point light

Освещение и архитектура рендеринга

A-Frame использует forward rendering, а не deferred rendering. Это означает:

  • Каждый объект освещается каждым источником в рамках одного прохода
  • Нет отдельного буфера освещения
  • Производительность зависит от количества активных светов

В deferred-рендеринге (характерном для некоторых игровых движков) большое количество источников менее критично. В WebGL такой подход ограничен.


Метрики для анализа производительности

Для оценки влияния освещения используются:

  • FPS
  • время кадра (ms)
  • количество draw calls
  • количество шейдерных операций

Встроенная статистика:

<a-scene stats></a-scene>

Позволяет отслеживать падение производительности при добавлении источников света.


Практический сценарий деградации

Сцена содержит:

  • 3 point light с тенями
  • 1 directional light
  • 50 объектов с материалом standard
  • normal map и metalness map

Возможные последствия:

  • Увеличение draw calls
  • Рост времени кадра до 20–30 ms
  • Падение до 30–45 FPS
  • Дискомфорт в VR

После оптимизации:

  • Оставлен 1 directional с тенями
  • Остальные источники без теней
  • Второстепенные объекты переведены на flat
  • Тени уменьшены до 1024×1024

FPS может восстановиться до 72–90.


Баланс качества и производительности

Освещение — один из наиболее дорогих элементов сцены в A-Frame. Повышение реализма через:

  • множественные источники света
  • мягкие тени
  • высокое разрешение shadow map
  • физически корректные материалы

прямо увеличивает нагрузку на GPU.

Производительная VR-сцена строится по принципу:

  • минимум динамики
  • максимум предрасчёта
  • экономия источников света
  • контроль теней

Освещение становится не только художественным инструментом, но и ключевым техническим фактором архитектуры сцены.