Ответ не совсем на пост, а на комментарий @madbad95:
Предыстория
Наигрался я в Medieval 2 Total War настолько, что захотелось большего размаха кампании. Во всех Total War есть проблема позднего этапа игры — становится скучно играть, когда твоя империя занимает половину карты и доминирует над всеми. Нет никакой интриги, дальнейший ход истории определяется исключительно игроком. Было бы круто видеть, что параллельно на другом конце света тоже происходит движуха, возникают и распадаются огромные империи без вмешательства игрока. Отсюда появилась идея сыграть на карте планетарного масштаба. Движок M2TW не позволяет делать моды с картой такого размера достаточной детализации(страны получаются слишком мелкими), поэтому я стал смотреть другие стратежки. И обнаружил, что почти все они играются на плоской карте.
Много лет в свободное время интересуюсь разработкой игр, и естественно напрашивается мысль "нет такой игры — сделай её сам". Так я стал экспериментировать со сферической игровой картой.
История
Сначала необходимо выбрать базовую геометрическую фигуру для разбиения до сферы. Лучше всего здесь подходит усеченный икосаэдр, т.к. на нём не будет ярко выраженных искажений, как бывает в случае с пирамидами, кубами, и прочими фигурами:
Картинка из проекта Procedural Planet Generation.
Далее сферу надо как-то текстурировать. Пошел по пути M2TW. Там есть карта в которой цветами обозначены различные типы поверхностей: красный для моря, зеленый для полей, черный для степей, серый для пустыни и тд.
Каждый цвет в игре покрывается своей текстурой.
Взял карту покрытий Земли с сайта NASA, текстурки вытянул из M2TW, натянул на сферу, добавил освещение и звёздный фон для красоты, и вот первый результат:
Горы плохо видно, надо их как-то выделить. Взял карту высот, и путем нехитрых манипуляций в GIMP получил текстуру, в которой затемнены неровности. Получился эффект наподобие SSAO:
Текстуры грузятся в самом высоком разрешении которое может переварить видеокарта — 16384х8192. Для снижения нагрузки сфера генерируется низкой детализации, а вблизи включается динамическая тесселяция:
На этом этапе обнаружилась проблема. Для достижения необходимого уровня детализации нужны текстуры огромного разрешения, каждая из них в памяти занимает 384мб, соответственно карта высот + карта покрытий + затенение съедают весь 1гб видеопамяти моего дохлого ноутбука.
Но ведь нам нет необходимости держать в памяти карты максимального разрешения. Нужно только то, что видно сейчас на экране. Значит, делим карты на куски и подгружаем только видимые из них. Это — принцип работы мегатекстур, вы могли видеть мегатекстуры в игре Rage(2011).
С мегатекстурами удалось достичь разрешения 65536х32768, с размером куска 256x256, 7 уровней детализации, всего 43690 кусков. И главное — можно вручную определять, сколько видеопамяти займет кэш текстур. 100мб хватило на всё.
Таким образом, если смотреть с максимального отдаления на всю планету целиком, используется два куска с общим разрешением 512х256, при приближении камеры брались куски более высокого разрешения.
Текстуры из M2TW выглядят колхозно. Взял спутниковые снимки NASA и нарезал текстуры с них:
А не взять ли просто спутниковые снимки? С одной стороны, визуально это будет лучший результат который вообще можно представить. С другой, я делаю не просто визуализацию Земли, а игру, здесь нужна возможность динамически менять текстуры в зависимости от игрового процесса: смена сезонов, опустынивание полей и тд. У NASA есть спутниковые снимки Земли на каждый месяц, а значит есть возможность сделать хотя бы смену сезонов. Собственно, ради этого видео и писался весь пост:
0с — обзор планеты целиком
20с — как работает динамическая тесселяция
30с — скорость подгрузки новых кусков мегатекстуры
1мин — смена сезонов
1мин45сек — как работает мегатекстура. разрешение всех квадратов одинаковое.
Результат эксперимента меня не устроил, потому как изменение климата происходит скачкообразно. Грубо говоря, у нас есть по одному дню с каждого месяца и происходит скачок состояния сразу на месяц вперед. А хотелось вот такого:
Гифка из проекта earthgen.
Проект был отложен в долгий ящик, прошло уже почти три года, но посты @WhiteBlackGoose провоцируют вернуться и попытаться сделать что-нибудь подобное, с тенями, годным освещением и качественным ландшафтом.