Ground atmosphere

Визуализация атмосферы в CesiumJS строится вокруг модели физически приближённого рассеяния света, которая формирует цвет неба, градиент горизонта и характер перехода между поверхностью Земли и космическим фоном. Атмосферный слой в движке не является декоративной текстурой — он вычисляется динамически в зависимости от положения камеры, направления взгляда, солнечного вектора и параметров среды.

Ключевая задача атмосферного слоя заключается в формировании визуально непрерывного перехода между геометрией земной поверхности и небесной сферой без резких границ, особенно заметных на больших дистанциях наблюдения.


Физическая модель рассеяния света

Атмосферная модель опирается на упрощённое представление двух основных типов рассеяния:

Рэлеевское рассеяние

Рассеяние на молекулах воздуха, которое сильнее влияет на короткие длины волн.

[ I() ]

Этот эффект формирует голубой цвет неба и усиливается при низком положении солнца, создавая красноватые оттенки на горизонте.

Ми-рассеяние

Связано с частицами пыли и аэрозолями. Влияет на общую мутность атмосферы и снижает контрастность дальних объектов.

В CesiumJS обе модели объединяются в приближённую GPU-реализацию, где вычисления выполняются в шейдерах с учётом угла между направлением взгляда и солнечным вектором.


SkyAtmosphere и визуальная оболочка неба

Основным компонентом атмосферы выступает scene.skyAtmosphere. Он отвечает за:

  • градиент неба от зенита к горизонту
  • окраску горизонта при закате и рассвете
  • оптическую плотность воздушной массы
  • корректное затухание дальних объектов

Конфигурация включается по умолчанию:

const viewer = new Cesium.Viewer("cesiumContainer");

viewer.scene.skyAtmosphere.show = true;

При отключении атмосферного слоя сцена теряет физически корректный градиент и заменяется на упрощённый фон.


Ground atmosphere и поведение у поверхности

Так называемый «ground atmosphere» в CesiumJS не является отдельным объектом, а представляет собой визуальное поведение атмосферы вблизи поверхности Земли. Основной эффект проявляется в зоне горизонта, где происходит смешивание:

  • цвета земной поверхности
  • атмосферного рассеяния
  • глубинного тумана

На малых высотах камера воспринимает атмосферу как плотный слой, усиливающий голубоватую дымку у линии горизонта. При подъёме камеры плотность визуального эффекта уменьшается, открывая более чёткий космический фон.


Влияние высоты камеры

Высота камеры является ключевым параметром, определяющим интенсивность атмосферного эффекта.

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

Атмосферная модель непрерывно пересчитывает оптическую длину пути света через атмосферу, что влияет на цветовую температуру сцены.


Геометрия горизонта и слияние с земной поверхностью

Горизонт в CesiumJS не является статической линией. Он формируется пересечением:

  • эллипсоидальной модели Земли
  • атмосферного объёма рассеяния
  • глубинного буфера камеры

Особое значение имеет эффект «soft horizon blending», при котором:

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

Настройки Scene.skyAtmosphere

Базовые параметры управления атмосферой сосредоточены в объекте scene.skyAtmosphere.

Интенсивность рассеяния

viewer.scene.skyAtmosphere.hueShift = 0.0;
viewer.scene.skyAtmosphere.saturationShift = 0.0;
viewer.scene.skyAtmosphere.brightnessShift = 0.0;

Эти параметры позволяют смещать цветовую модель атмосферы без изменения физической структуры шейдеров.

Масштаб атмосферы

viewer.scene.skyAtmosphere.atmosphereBrightnessShift = 0.2;

Изменение яркости влияет на восприятие плотности воздуха, особенно в условиях низкого солнца.


Связь с освещением сцены

Атмосферный слой тесно связан с глобальным освещением и положением солнца.

Если включено освещение глобуса:

viewer.scene.globe.enableLighting = true;

то солнечный угол начинает влиять одновременно на:

  • освещение поверхности
  • интенсивность атмосферного рассеяния
  • цвет неба у горизонта

Это создаёт согласованную физическую модель дня и ночи.


Взаимодействие с туманом и дальностью видимости

Атмосферный эффект часто взаимодействует с параметрами тумана и дальности отрисовки:

  • дальний туман усиливает плавность горизонта
  • снижение far plane увеличивает плотность визуального слоя
  • высокая детализация terrain уменьшает визуальную «плоскость» атмосферы

Комбинация этих факторов формирует итоговую глубину сцены.


GPU-реализация и производительность

Атмосферное рассеяние выполняется на GPU с использованием фрагментных шейдеров. Основная нагрузка связана с:

  • расчётом интеграла оптической плотности
  • вычислением угла рассеяния света
  • семплированием атмосферы по лучу взгляда

Оптимизация достигается через:

  • ограничение количества шагов интеграции
  • кэширование солнечного вектора
  • использование предрасчитанных коэффициентов рассеяния

При отключении skyAtmosphere резко снижается нагрузка на пиксельные шейдеры, особенно на мобильных GPU.


Частые визуальные артефакты

Пересвет горизонта

Возникает при чрезмерной яркости солнца и высоких значениях насыщенности атмосферы.

Плоское небо

Появляется при отключённом atmospheric scattering или при использовании упрощённого skybox без физической модели.

Разрыв между землёй и небом

Наблюдается при отключении глубинного теста атмосферы или при некорректной настройке far plane камеры.

«Мыльный» горизонт

Связан с низкой детализацией террейна и сильным сглаживанием depth buffer в зоне горизонта.


Поведение в разных режимах освещения

Дневной режим характеризуется:

  • высокой яркостью рассеяния
  • насыщенным синим небом
  • минимальной дымкой на больших высотах

Закат и рассвет:

  • усиление красного канала
  • удлинение оптического пути через атмосферу
  • резкое усиление горизонта

Ночной режим:

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

Взаимодействие с глобальной геометрией Земли

Атмосферный слой тесно связан с эллипсоидальной моделью Земли. При изменении масштаба сцены:

  • увеличивается визуальная толщина атмосферы
  • изменяется угол кривизны горизонта
  • усиливается эффект дальнего рассеяния

Эти эффекты особенно заметны при орбитальных камерах и визуализации спутниковых траекторий.