“Нам нужны планеты, которые выглядят потрясающе” – Torfi Frans

Командой, ответственной за новую графику планет в Доминионе была Team Oli Dan. Здесь мы расскажем, как появлялись планеты; но эта команда также переделала и звездный фон, создавала структуры суверенитета, файтер-бомберы и новые фракционные корабли.

У нас есть несколько типов планет в EVE Online: Gas, Temperate (землеподобные), Barren, Ocean, Storm, Ice и Lava. Кроме того у нас есть луны, которые, с точки зрения программистов, также являются планетами. К тому же в Доминионе был добавлен новый тип – таинственные Plasma.

Прежде чем сделать омлет, нужно разбить несколько яиц

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

Предварительная обработка

Вышеупомянутая комбинация текстур статична во время рендеринга планеты, ведь расточительно делать тот же расчет для каждого пикселя в каждом кадре. Мы решили оптимизировать процесс генерации новых текстур с карт высот во время предварительной обработки. Мы использовали GPU для рендера текстур, основываясь на графическом движке Тринити (обновление Евы 2007 года). Сгенерированные текстуры имеют четыре канала – два для обычных составляющих, и еще два включают в себя преобразования карт высот.

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

Полюса

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

Землеподобная планета

Облака

Вскоре мы поняли, что облака – одна из наиболее заметных особенностей планеты, и они должны выглядеть очень хорошо. Эти текстуры – самые большие в используемых планетами, и имеют размер 2048×2048 пикселов, когда в вашем клиенте установлен показ текстур высокого качества.

Все начинается с добавления тени под облаками, чтобы придать им некоторую глубину. У нас есть направление к солнцу в пространстве текстуры, поэтому мы просто делаем новый поиск в текстуре облака, параллельно перемещая ее на заданное расстояние. Затем мы совершаем систематический поиск текстуры в текстурах облака, и добавляем его на самый верх.

Карты облаков имеют соответствующий полюс текстуры, использующий координаты полюсов. Там где они пересекаются с выпуклыми текстурами, мы комбинируем их, используя функцию max ().

Изменение освещения океана на планете

Рассеивание света

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

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

Да будет свет в городах

Некоторые из землеподобных (Temperate) планет населены, и их города можно увидеть из космоса. Мы используем определенную УФ текстуру из подсвеченных сочетающихся кусочков, ориентируем по сфере, и обеспечиваем замену текстур. Координаты текстур вызываются поиском в атласе текстур. Затем мы добавляем маску на эти кусочки с различными монохромными текстурами. УФ текстуры мы обрабатываем в Maya.

УФ текстура и соответствующая ей маска

Текстура УФ может быть весьма небольшой, но маска должна иметь более высокое разрешение. У атласа текстур есть соответствующие участки.

Атлас текстур

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

Ранний тест планетарных колец

Кольца

Геометрия колец плоскостная. Мы генерируем координаты текстур для колец, и отображаем своего рода текстурой поперечного сечения. Тень планеты также рассчитывается.

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

Луна в Jessica

Модель шейдеров №2

Для второй модели прорисовки шейдеров (SM2) нам было необходимо сократить количество углов. Мы сделали третью модель прорисовки шейдеров (SM3) очень модульной, так что каждый шаг, такой как океан или растительность, стал методом. Шейдеры для SM2 мы рассчитываем еще на предварительном этапе. Вместо того чтобы комбинировать высотные и нормальные текстуры, мы отрисовываем цветную текстуру с зеркальным фактором. SM2 ограничена в 64-пиксельных шейдерах, поэтому мы разделяем предварительную обработку на несколько подходов с использованием тех же самых точных модулей что и в SM3.

В заключение

На протяжении прошлого месяца была произведена оптимизация (степень детализации и размеры текстур) и сглаживание последних неувязок. Планеты являлись довольно серьезным фактором риска во время релиза, но в конечном итоге негативные последствия на TQ были минимальны.

Спасибо за внимание, fly safe!

- CCP Mannapi
Оригинал >>>

Tags: , ,

One Response to “EVE Online: Планеты, которые выглядят потрясающе”

  1. DireSnake Says:

    вот теперь так бы понятно они объяснили как на корабли текстуры они натягивают… как они из 3х текстур делают две разных окраски 4х кораблей… разного меша и окраса…..

Leave a Reply