Comments
Вспоминаются воксельные «Вангеры» с их терраформируемыми мирами. Возможно скоро мы увидим что-то подобное современное с возможностью создания и разрушения.
Спасибо за перевод, буду следить за проектом.
Проблема с вокселями в том, что современные объёмы видеопамяти пока что катастрофически недостаточны для комфортной работы.
Вот когда на борту видеокарты будет не 8 Гб, а по меньшей мере 1 Тб, вот тогда уже с вокселями можно будет работать без лишних сложностей. Пока же нехватка памяти компенсируется целым ворохом хитрых алгоритмов и всевозможных трюков, которые ничуть не проще работы с «векторным» 3D на основе полигонов и сеток.
Там что-то проскакиволо про воткнуть SSD в разъём на видеокарте. Ещё есть такой момент: производительность и объемы памяти, в отличии от производительности и количества процессора/шейдеров, вполне себе растут, так что оптимизм наличествует.
После того, как вы воткнёте SSD в качестве памяти для видеокарты, худшие лаги, которые вы видели, покажутся вам чудом равномерности и отзывчивости.

Как насчёт произвольных задержек в десятки секунд иногда?
Впечатляет, помню ковырялся с вокселями в дипломной работе, помню памяти не хватало катастрофически.
Вот именно. На видео очень маленькие сцены с ничем. Вот когда полигональная модель уйдет — тогда да. А пока видеокарта хочет полигон — вокселей не будет.
Помню эти эти видео 2012 года. С женой тогда радостно обсуждали, что наконец-то кто-то решился и вот-вот, ну, в крайнем случае, лет через 5 начнут делать первые воксельные игры со всеми вытекающими прелестями реализма и геймплея.
Эх, подождем еще 5 лет :)
>Эх, подождем еще 5 лет :)
В коментах автор пишет, что к 2019 будет что показать людям.
Показали то и сейчас что-то (и 6 лет назад), но вот игроделы за это еще не брались. Значит что-то приличное может выйти не раньше чем через 3-5 лет (пара лет на технологию, пара на разработку игры под мало кому известные фишки).
И это допуская, что будут люди, которые смогут на неизвестной технологии что-то придумать, посторить и красиво подать.
Ну еще может появиться какой-то условный инди АтомКрафт, который волею судеб и благодаря нужному положению звезд станет новым хитом и все крупные студии кинутся клепать свои песочницы воксельные игры.
Да я как-то не жду очередного ААА на вокселах, чтобы просто проникнуться хватило бы небольшой демки, типа такого:
image
Такое качество будет сразу, как только научимся рейтресить в реальном времени.
Умеют рейтрейсить небольшие сцены (или вообще частично) на 4 очень дорогих видеокартах
отлично, теперь алиасинг не толькро на гранях, но и на каждом пикселе вокселе)
Половина ваших ссылок не про воксельную графику, а про кубический дизайн с полигональной графикой.
Чтобы отрендерить графику на современных графических процессорах её так или иначе придется преобразовать в полигональное представление или рейтресить в вершинном шейдере.
Так что в принципе воксельная графика это и про воксели на цпу — полигоны на гпу тоже.

Из статьи не очень понятно как именно технически работает их технология, есть предположения о реализации?

Не обязательно, можно рендерить прямоугольник из 2х треугольников, а в шейдере уже делать raymarch используя bvh, в котором хоть треугольники, хоть сферы, хоть вообще сложные мат-фигуры. Причем на уровне API треугольников вообще может не быть, в opengl можно шейдер запустить просто через glRecti(1, 1, -1, -1);, даже vertex шейдер не нужен. Сompute шейдер тоже запускается на 2D прямоугольник, разницы с glRecti вариантом по сути не будет.
Именно это я и имел ввиду, когда говорил о рейкастах в вершинном шейдере, имел я ввиду, конечно, фрагментный шейдер.

К сожалению, скорость рендеринга при таком подходе обратно пропорциональна квадрату разрешения(в обычном рендеринге тоже, но там всё-таки отдельные операции гораздо легче), то есть на 4к в ближайшее время не ждите.
Ну я и не писал, что это проекты с воксельной графикой. Как мне кажется, не суть как именно происходит растеризация, важно, что они используют в своём движке воксели, т.е. регулярную трёхмерную сетку.
И границы, как обычно, размыта, если Atomontage явно воксельный проект, то Майнкрафт уже кажется не воксельным, но я бы тоже отнес его к воксельной игре, так как блоки одинакового размера, а то, что они кроме цвета имеют ещё и разную форму и даже текстуры, это не столь важно. Или, к примеру, в Space Engineers гриды содержат блоки совершенно разного размера, и эти блоки вокселями уже совсем тяжело назвать.
Или взять воксельное октодерево, оно хранит информацию о сетке вокселей, хоть и используются блоки разного размера, но любой движок, использующий его как основное хранилище мира игры, я бы назвал воксельным, а как растеризовать дело второе.
В грядущей Dual Universe не воксельная графика, но при этом явно воксельная вселенная.
Да мы все в терминологии слабы, так как область развивается и всё размыто.
Думаю вокселями стоит называть только регулярную сетку, где не хранятся 3D координаты в мире отдельных блоков, а хранятся только их свойства и положение в сетке.
Вот у Atomontage сетка вокселей перед выводом искажается, но хранится то всё равно регулярная. А в вашем примере думаю вообще нет сетки, а хранятся просто координаты каждой частицы. Раз сетки нет, то вообще сложно это вокселями назвать.

К слову ещё есть доксели или, как некоторые пишут, докселы, это такой кадрированный 3D растр. Т.е. видео, но записанное не пикселями, а вокселями.

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

Вообще, я согласен, что воксель это когда данные о мире хранятся в массиве, по типу растрового изображения для 2д.
Выглядит красиво, но как все это дело сохранять. Допустим перерубил ты огромную кучу мира, сохранился. Это ж сколько времени нужно, чтобы записать все изменения на жесткий диск (ну или ssd), аля, какие блоки разрушил, какие переместил и прочее.
Фактически сейвы придётся делать в виде слепков памяти со сжатием. И они будут несовместимы с выходом обновлений, меняющих какие либо объекты в игре (например, забагованное окно).
Смотря что будет быстрее — дамп на ssd всего образа в памяти, или сравнение памяти с файлом на диске с записью разницы. К тому же будет зависеть от наличия в механике объектов, «живущих своей жизнью» без взаимодействия. Ну, скажем, вода в фонтане. Для традиционной анимации это просто объект с динамической текстурой, сохранять ничего не надо. Для воксельной графики и сам фонтан и вода в нём — воксели, которые придётся сохранять. Фонтан — потому что разрушаемость же, декои и всё такое, воду — в принципе необязательно, но с точки зрения программирования это просто проще, дампим всё и не ломаем голову как всё загрузить из сейва так, чтобы не было багов.
Здорово конечно, что существуют энтузиасты, которые верят в воксельную революцию.
Они молодцы, и именно такие ребята могут совершить прорыв.
Но в воксельную революцию я верю слабо. Дело в том, что воксельная графика почти ничего не решает. С глобальным освещением — такие же проблемы. С тенями — все проблемы на месте. Волюметрик эффекты? Воксели никак не помогают в этом. А какие бонусы они дают? Да почти никаких. Только качественные автоматические динамические LOD-ы ценой лютой прожорливости по памяти.
Зато куда более перспективным на мой взгляд является raymarching моделирование + рендер.
На мой взгляд воксели выстрелят только в купе с процедурной генерацией, чтобы не загружать с диска каждый атом во вселенной и иметь неограниченную детализацию. Я себе это вижу так: есть опорные атомы, положение и характеристики которых задаются дизайнером и пользователем во время игры (разрушения, и тп). Их относительно мало. И есть производные атомы, которые генерятся по алгоритму на основе соседних опорных по мере необходимости.
И причём эта процедурная генерация должна быть с физической составляющей.
Вот, к примеру, выкопал игрок кубик вокселей из песка и движок сам, на основе свойств материала, «осыпал» более мелкие воксели и превратил квадратную ямку в конусообразную или наоборот, поставил игрок большой блок, а он превратился в кучку мелких. А хранит движок на диске именно большой октоблок, который указал игрок.
Мы пытались в майнкрафте подобное реализовать на основе двух модов LittleBlocks и BlockPhysics, но так и не допилили до работающего результата.
С глобальным освещением — такие же проблемы.

Так вроде бы Voxel Cone Tracing на это дело должен очень неплохо ложиться.
Voxel Cone Tracing

Вокселизуем всю сцену в разреженный octree. Листья octree — 3д-текстуры вокселизованных кусков поверхности сцены. Храним только те листья, которые пересекают поверхности объектов. По полученному дереву можно достаточно эффективно пускать конусы, аналогичные пучку лучей, тем самым аппроксимируя отражённый свет.
Игрушечные сцены. By design не подходит для больших сцен. Заоблачные затраты памяти.

Окей…
Вот тут очень хороший пример функционального моделирования:

Вот тут просто статья с примерами df:
iquilezles.org/www/articles/distfunctions/distfunctions.htm
А вот пример шейдера с реймаршингом:
www.shadertoy.com/view/ldScDh

Дает — крутые возможности по моделированию всяких кривых поверхностей.

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

Но треугольники ведь быстрее рендерить

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

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

Нет. Треугольник — очень неудобная фигура для моделирования. Взгляните на любую сетку у любой 3д модели:
image
Треугольников почти нет. В основном это четырехугольники. Потому что на четырехугольниках можно удобно работать с лупами. Ну а потом это все триангулируется уже автоматически.
Однако моделировать под полигоны сейчас конечно же удобнее. Но это все потому, что для полигональных моделей у нас было аж 25 лет на развитие пайплайна по созданию такого контента. А для моделирования с помощью distance functions сейчас нет инструментов вообще, пишут код руками. А сделать такой инструмент, чтобы он по возможностям хоть отдаленно бы догнал текущие, и можно было его отдавать художникам — ой как не просто. Это собственно второй сдерживающий фактор.
Индустрия не просто так пошла по пути треугольников, треугольники в принципе рендерить быстрее — проецируешь 3 точки и интерполяцией получаешь цвет большого количества точек. Другое дело, что сейчас железо может быть достаточно мощное, чтобы на нем можно было и с приемлемой скоростью рендерить воксели и получить от этого соотвествующий профит (и свои проблемы тоже, например анимация скелетной модели должна занимать либо невероятное количество памяти либо отжирать невероятное количество ресурсов на аналог скелетной анимации со скиннигом) и такое железо появится, когда появится технология, которая будет реально на голову круче существующий решений на треугольниках.
А я не про воксели говорил, а про distance field + raymarching. Воксели не взлетят.

Круто. Взрываться модели в играх тоже будут красиво, похоже. А сколько весят модели? Сколько памяти жрут во время игры ?

Интро выполняли свою задачу всего в 100 инструкциях процессора, таких как ADD, MUL, STOSB, PUSH и им подобных.

А почему не через PhysiX?
https://www.youtube.com/watch?v=x8Fo2slT2WA?t=30
(смотреть с 30 секунды: сотни тысяч вокселей)
Результаты просчетов физики (особенно такой тяжелой) на GPU очень тяжело использовать в игровой логике, потому что чаще всего эти данные так и остаются на GPU — таскать данные о сотнях тысячах вокселей между видеопамятью и оперативной памятью совсем не дешево. Как мне видится, такие эффекты работают только для не влияющих на геймплей украшательств.

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

По той причине, что игра должна работать и у тех — у кого нет PhysiX.

PS вот игра с влиянием физики на геймплей habr.com/post/345104
image
Приведенная вами в пример игра как раз пример игры полностью написанной на GPU (то есть гонять данные о всех вокселях каждый кадр не нужно) и автор сам собственно называет у этого подхода ровно один плюс — производительность, а минусы — чудовищно возросшая сложность разработки, постоянные проблемы с физическими ограничениями GPU, сложность синхронизации данных CPU & GPU, невозможность детерминистичной симуляции. Условный Dragon Age так не напишешь — утонешь в сложности.

И это при том, что это 2д игра с примитивной графикой, в 3д играх с полупрозрачными поверхностями сложность ещё выше.

Сейчас у большинства игроков видеокарты с поддержкой compute shader(physX в этот момент это просто одна из реализаций физики на гпу, можно сделать и свою), но игр написанных таких образом что-то больше не становится.
Эти их вялые стволы намекают на состояние воксельной графики на текущий момент
Воксели должны были новой прорывной технологией сколько-то там лет назад. Уже нет.
Как там с шейдингом у воксельной технологии? На показанных роликах не заметно его вообще
Хватит уже пинать труп воксельной графики (для игр). Возможно в медицине оно и найдет своё применение. Ну а пока будущее за трассировкой лучей и только. Правда и тут производительности GPU пока ещё не хватает раза так в 3-4. Опять же разрешения растут постоянно.
Какими мощностями должен обладать ПК, дабы вся эта красота работала стабильно?
Гошподи, каждые четыре года вдруг вспоминают воксели. И опять забывают.
Ну как бы с VR та же фигня была (во всяком случае я помню рассуждения на эту тему еще в 90 в от винта, да и в фильмах/мультиках тогда же она была довольно популярна), но ведь смогли же в итоге.
Ну такое, не особо то смогли, как по мне. Особой массовости VR не получил. Так, игрушка для полутора гиков.
Согласен по поводу не особо и игрушки для гиков, но я ждал что опять поговорят два-три месяца и успокоятся на пару лет, а тут хоть для гиков, но реальное применение в игра, а не очередная демка

Sony активно продвигает VR. Может и не выгорит, но игр уже много. И некоторые от вполне крупных издателей.

Ага, полутора — в VRChat'е люди уже оргии устраивают :) А так, как мне кажется, со временем ВР будет очень популярен, но не в игровой нише, а где-то среди прикладных приложений и в развлечениях.

Прикинул насчёт сжатия: если не сжимать, то в 1 Гб может влезть кубик со стороной 793 вокселя по 16 бит каждый. По оси Y легко сжать всё до 40 байт, тогда в тот же 1Гб влезет уже кубик 5000х5000хY. Это можно сравнить с комнатой 5х5 метров, в которой всё оцифровали с разрешением 1 кубический миллиметр. Танк из статьи наверно всю такую комнату займёт.
Полигональные поверхности хороши для металла и стекла, а вот девушки компутерные выглядят как андроиды, интересно посмотреть как они будут выглядеть на базе вокселей, особенно с симуляцией физики костей, мышц и прочей анатомии :)

Only those users with full accounts are able to leave comments. Log in, please.