Райский сад за два месяца: как появляются воксельные движки
Есть минус: для такой красоты понадобится очень мощное железо.
Кстати, на сайте читать удобнее
Вы наверняка слышали про игры с воксельной графикой и видели как минимум одну из них, 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.
Впрочем, следующее поколение видеокарт наверняка сделает точку входа в мир трассировки лучей гораздо ниже.
- Быстрее PlayStation 5: тест SSD-накопителя, читающего 24 гигабайта в секунду
- Nvidia показала технологию отрисовки миллионов динамических источников света в реальном времени
- На подходе Ultimate-версия The Witcher 3 HD Reworked Project: она повысит детализацию персонажей и Геральта
- Безотказный вариант создания постеров для библиотеки Steam и не только.
- Искусственный интеллект Nvidia воссоздал Pac-Man, изучая его геймплейные ролики
- Хакеры взломали несколько разработчиков MMO и получили доступ к серверам игр