Слой неба в Mapbox GL JS представляет собой отдельный тип визуального слоя, отвечающий за отрисовку атмосферы над сценой карты. Он формирует визуальное окружение над горизонтом и тесно связан с перспективной камерой, освещением и параметрами времени суток.
В системе рендеринга Mapbox используется WebGL-пайплайн, где небо
существует как специализированный слой sky, обрабатываемый
после геометрии карты, но до финального композитинга сцены. Его задача —
заполнение области над горизонтом с учётом:
Слой неба не является географическим объектом и не привязан к координатам карты. Он существует в экранном пространстве и реагирует на ориентацию камеры.
Градиентный режим формирует плавный переход цветов от горизонта к зениту. Он используется для стилизованных сцен и минималистичных визуализаций.
Основная идея заключается в интерполяции цвета по вертикальному углу взгляда камеры. Верхняя часть неба соответствует направлению зенита, нижняя — линии горизонта.
Ключевые параметры:
sky-gradient — задаёт цветовой градиентsky-horizon-color — цвет у горизонтаsky-horizon-blend — ширина переходной зоныГрадиент вычисляется в зависимости от нормализованной высоты взгляда пикселя в экранном пространстве.
Атмосферный режим моделирует физически более правдоподобное рассеяние света в атмосфере. Он имитирует поведение Рэлеевского и Ми-рассеяния, создавая реалистичное освещение неба.
Используются параметры:
sky-atmosphere-sun — положение солнцаsky-atmosphere-sun-intensity — интенсивность солнечного
светаsky-opacity — общая прозрачность слояЭтот режим тесно связан с системой освещения и может влиять на цвет воды, земли и тумана.
Градиент неба строится как функция от угла между направлением взгляда камеры и вектором вверх сцены.
Упрощённо:
Градиент задаётся либо фиксированными цветами, либо выражением с интерполяцией в зависимости от zoom и времени суток.
Внутренне используется линейная интерполяция:
Особое значение имеет параметр sky-horizon-blend,
который управляет шириной области смешивания. Малые значения дают резкий
переход, большие — плавный и протяжённый градиент.
Конфигурация слоя sky задаётся в стиле карты и
поддерживает JSON-описание:
{
"id": "sky",
"type": "sky",
"paint": {
"sky-type": "gradient",
"sky-gradient": [
"interpolate",
["linear"],
["sky-radial-progress"],
0.0,
"rgba(0, 0, 30, 1.0)",
1.0,
"rgba(120, 170, 255, 1.0)"
],
"sky-horizon-color": "#f5d0a2",
"sky-horizon-blend": 0.5
}
}
sky-type — режим отображения (gradient или
atmosphere)sky-gradient — выражение цветаsky-horizon-color — базовый цвет горизонтаsky-horizon-blend — ширина переходаsky-opacity — прозрачность слояСлой неба напрямую зависит от параметров камеры:
При увеличении pitch небо занимает большую часть кадра, а градиент становится более выраженным.
Градиентное небо часто используется совместно с процедурной симуляцией времени суток. В этом случае параметры цвета интерполируются между наборами состояний:
Изменение выполняется через плавное смешивание значений
sky-gradient и sky-horizon-color, часто на
основе внешнего таймера или географического положения солнца.
В Mapbox GL JS слой неба связан с системой освещения, которая влияет на:
При использовании sky-atmosphere освещение становится
физически согласованным, поскольку небо и свет вычисляются из одного
источника — положения солнца.
Слой неба является относительно дешёвым в вычислительном плане, поскольку:
Однако при использовании сложных выражений в
sky-gradient нагрузка на GPU увеличивается из-за
дополнительных вычислений интерполяции.
В системе стилей Mapbox GL JS небо часто используется как часть общего визуального языка карты. В сочетании с платформой Mapbox оно становится инструментом формирования атмосферы сцены.
Градиентное небо применяется в:
Градиент неба может быть реализован как:
Первый подход используется для реалистичных сцен, второй — для стилизованных интерфейсов, где важнее читаемость и визуальная иерархия, чем точность света.
Хотя небо в Mapbox GL JS не включает полноценную систему облаков, визуальный эффект может усиливаться через:
fog слойЭто позволяет создавать ощущение глубины и объёма атмосферы даже без геометрических облаков.
При проектировании градиента учитываются:
Избыточно яркие градиенты могут снижать читаемость картографической информации, особенно в аналитических приложениях.