Игры 16089
Аватар Evernews Evernews

Райский сад за два месяца: как появляются воксельные движки

4
2
Поделиться
Телеграфировать

Есть минус: для такой красоты понадобится очень мощное железо.

Райский сад за два месяца: как появляются воксельные движки

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

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

Собрать такой трассировщик можно за несколько дней, в низком разрешении — картинка ниже рендерится в 720p — такой трассировщик будет выдавать очень высокую частоту кадров. Правда, пока все выглядит не очень красиво.

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

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

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

В воксельном мире появились густые и яркие леса, напоминающие картины Боба Росса. Обратите внимание: в глубине, под листвой, частота кадров по-прежнему очень высока. Это потому, что листья почти не пропускают свет: луч не уходит дальше.

Следующий шаг — анимация. Яркий, но статичный мир выглядит не очень интересно, поэтому Джон добавляет динамики: появляется симуляция ветра. Ветер не колышет воксельные стволы, зато он воздействует на воксели-листья.

Сразу становится ясно, что освещение честно считается в реальном времени: вместе с листьями на земле начинаются двигаться их тени. Но одновременно частота кадров проседает еще сильнее — такая динамика обходится достаточно дорого.

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

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

Сделать приличную воксельную траву не слишком просто: в Minecraft она, к примеру, реализована полигонами и текстурами. Травинки, даже состоящие из всего нескольких вокселей, создадут дополнительную нагрузку на систему освещения — потому что они тоже считаются полноценными объектами.

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

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

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

К этому моменту в воксельном мире появляется столько объектов и возможностей, что приходится заняться оптимизацией. За несколько недель Джон ускоряет работу пасттрейсинга примерно в 20 раз — частота кадров снова вырастает до 60 fps.

Одновременно появляется полноценный набор инструментов, позволяющий создавать в воксельном мире настоящие здания: сс комнатами, лестницами и переходами, внутренними двориками, садами и балконами.

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

Теперь, считает Джон, его воксельный райский сад закончен — с Nvidia RTX можно прощаться. Впрочем, с воксельными мирами Лин завязывать не планирует: теперь он работает над движком с собственным бэкендом трассировки лучей и бесконечым генерируемым миром.

Задача амбициозная: дальность отрисовки движка будет до 8 тысяч вокселей, высота мира — порядка 4 тысяч вокселей. Ожидается поддержка мультиплеера и моментальная отрисовка обновлений структуры мира.

Пока попутешествовать по таким мирам можно только на достаточно быстром железе. GeForce RTX 2080 Ti выдает порядка 80 кадров в секунду в разрешении 1080p, от RTX 2070 такой производительности можно ждать только в 720p.

Впрочем, следующее поколение видеокарт наверняка сделает точку входа в мир трассировки лучей гораздо ниже.

Теги: Игры, Технологии
Аватар Evernews
Evernews
8066 подписчиков