Как стать автором
Обновить

Комментарии 14

А синий закат на Марсе с красным небом, этот шейдер тоже поддерживает?

В модели есть только рэлеевское рассеяние, оно даст голубой закат на Марсе.
Красное небо обусловлено пылью, которой нет в модели.

Добавить пыль наверное не слишком трудно?

Пыль очень многообразна:
1. Есть крупная пыль, работающая как рой цветных твердых тел.
Остальная пыль сложнее. Я не специалист, и представляю себе, что
2. Пыль среднего размера будет белой: облака, молоко
3. Самая мелкая пыль будет отражать короткие волны и пропускать длинные. Например дым.

Словом: 1 — не сложно, и для марса достаточно
2+3 — сложнее, чем рэлеевское рассеяние
При всем уважении к статье, на скриншоте в шапке видна четкая линия, отделяющая атмосферу от самой планеты, что резко нивелирует все впечатление от рендеринга атмосферы.
Самый крутой глубос вот image
Я выкладывал бесплатно исходник подобного шейдера, собранного для юнити по туториалу почившего в бозе scrawkblog. Можете пользоваться, ссылка в описании к видео. Еще очень хочется добавить эффект тени в атмосфере (от гор например) и погодных эффектов вроде туч и тумана
Атмосферное рассеяние происходит не на атомах/ молекулах (они намного меньше длины волны), а на флуктуациях плотности. Из общих книжек- Ландау/Лифшиц. Стат. Физика т.1 или спец. книжки.

Да, во многих популярных источниках пишется: «на атомах», «на пылинках». Но это обман для простоты. Зависимость 1/ламбда^4, получить относительно легко, а вот потом считать флуктации… Большинство инженеров со статфизикой не знакомо.
Еще пример хорошей книжки: В.В. Соболев, Рассеяние света в атмосферах планет, М.: Наука, 1972.
Очень радует, что хабр может в перенос излучения
Прошу уточнить физической смысл величины S(λ,θ,h) из уравнения рассеяния.
Было бы гораздо понятнее увидеть в её определении выражение вида dI(θ) = I * S(λ,θ,h) * dθ.
Вместо этого я вижу просто I(θ) = I * S(λ,θ,h).

Это создает проблему с размерностями величин: термы I*S и I*β используются так, будто имеют одну размерность в то время, когда размерности у них разные.

Еще хотелось бы, чтобы у функции S было имя. Например, «Плотность рассеяния».
Пишу в свободное время такой шейдер. Пока сделал одиночное рассеяние Релея и Ми, отображение солнца с учётом затемнения краёв, учёт отраженного от планеты света, свободное движение камеры от поверхности планеты до космоса, правильное преобразование моделируемого спектра в цвет. Интересно наблюдать изменения при смене параметров, у меня всё сделано без предрасчётов, и менять можно всё — от эффективной температуры солнца до толщины и молекулярной массы атмосферы. Поэтому тень от планеты получилась автоматически. Для реалтайма пришлось придумывать полуаналитический способ рассчёта оптической толщины, что позволило избавиться от вложенного цикла. В результате придумал как заменить эту функцию с неберущимся интегралом на другую, ведущую себя практически так же на нужных масштабах, но с берущимся интегралом. В планах рассеяние второго порядка и облака, но пока не представляю реалтайм-модель, слишком много считать.
У вас там есть гифка с Венерой, Марсом и Нептуном. Можно глянуть на значения параметров H, beta и пр?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории