Comments 75
Спасибо за перевод, буду следить за проектом.
answers.unity.com/questions/1126340/which-voxel-terrain-solutions-exist-for-unity.html
Вот когда на борту видеокарты будет не 8 Гб, а по меньшей мере 1 Тб, вот тогда уже с вокселями можно будет работать без лишних сложностей. Пока же нехватка памяти компенсируется целым ворохом хитрых алгоритмов и всевозможных трюков, которые ничуть не проще работы с «векторным» 3D на основе полигонов и сеток.
Эх, подождем еще 5 лет :)
В коментах автор пишет, что к 2019 будет что показать людям.
И это допуская, что будут люди, которые смогут на неизвестной технологии что-то придумать, посторить и красиво подать.
Ну еще может появиться какой-то условный инди АтомКрафт, который волею судеб и благодаря нужному положению звезд станет новым хитом и все крупные студии кинутся клепать свои

www.geforce.com/whats-new/articles/nvidia-rtx-real-time-game-ray-tracing
Надеюсь хоть у Бранислава что-то дойдёт до приличного результата, слежу за ним давно.
Так что в принципе воксельная графика это и про воксели на цпу — полигоны на гпу тоже.
Из статьи не очень понятно как именно технически работает их технология, есть предположения о реализации?
К сожалению, скорость рендеринга при таком подходе обратно пропорциональна квадрату разрешения(в обычном рендеринге тоже, но там всё-таки отдельные операции гораздо легче), то есть на 4к в ближайшее время не ждите.
И границы, как обычно, размыта, если Atomontage явно воксельный проект, то Майнкрафт уже кажется не воксельным, но я бы тоже отнес его к воксельной игре, так как блоки одинакового размера, а то, что они кроме цвета имеют ещё и разную форму и даже текстуры, это не столь важно. Или, к примеру, в Space Engineers гриды содержат блоки совершенно разного размера, и эти блоки вокселями уже совсем тяжело назвать.
Или взять воксельное октодерево, оно хранит информацию о сетке вокселей, хоть и используются блоки разного размера, но любой движок, использующий его как основное хранилище мира игры, я бы назвал воксельным, а как растеризовать дело второе.
В грядущей Dual Universe не воксельная графика, но при этом явно воксельная вселенная.
Думаю вокселями стоит называть только регулярную сетку, где не хранятся 3D координаты в мире отдельных блоков, а хранятся только их свойства и положение в сетке.
Вот у Atomontage сетка вокселей перед выводом искажается, но хранится то всё равно регулярная. А в вашем примере думаю вообще нет сетки, а хранятся просто координаты каждой частицы. Раз сетки нет, то вообще сложно это вокселями назвать.
К слову ещё есть доксели или, как некоторые пишут, докселы, это такой кадрированный 3D растр. Т.е. видео, но записанное не пикселями, а вокселями.
Вообще, я согласен, что воксель это когда данные о мире хранятся в массиве, по типу растрового изображения для 2д.
Есть ещё 2 интересных проекта: VoxelQuest и Monadia
Они молодцы, и именно такие ребята могут совершить прорыв.
Но в воксельную революцию я верю слабо. Дело в том, что воксельная графика почти ничего не решает. С глобальным освещением — такие же проблемы. С тенями — все проблемы на месте. Волюметрик эффекты? Воксели никак не помогают в этом. А какие бонусы они дают? Да почти никаких. Только качественные автоматические динамические LOD-ы ценой лютой прожорливости по памяти.
Зато куда более перспективным на мой взгляд является raymarching моделирование + рендер.
Вот, к примеру, выкопал игрок кубик вокселей из песка и движок сам, на основе свойств материала, «осыпал» более мелкие воксели и превратил квадратную ямку в конусообразную или наоборот, поставил игрок большой блок, а он превратился в кучку мелких. А хранит движок на диске именно большой октоблок, который указал игрок.
Мы пытались в майнкрафте подобное реализовать на основе двух модов LittleBlocks и BlockPhysics, но так и не допилили до работающего результата.
С глобальным освещением — такие же проблемы.
Так вроде бы Voxel Cone Tracing на это дело должен очень неплохо ложиться.
Voxel Cone Tracing
Вокселизуем всю сцену в разреженный octree. Листья octree — 3д-текстуры вокселизованных кусков поверхности сцены. Храним только те листья, которые пересекают поверхности объектов. По полученному дереву можно достаточно эффективно пускать конусы, аналогичные пучку лучей, тем самым аппроксимируя отражённый свет.
Игрушечные сцены. By design не подходит для больших сцен. Заоблачные затраты памяти.
Окей…
raymarching
Немного читал про него, но так и не понял, что он даёт?
Вот тут просто статья с примерами df:
iquilezles.org/www/articles/distfunctions/distfunctions.htm
А вот пример шейдера с реймаршингом:
www.shadertoy.com/view/ldScDh
Дает — крутые возможности по моделированию всяких кривых поверхностей.
Спасибо, очень инженерный подход к рисованию. Сферы, цилиндры и другие простые фигуры делали и ранее с помощью рейтрейсинга. Интересно что тут формулы проще, всякие фаски, скругления и автоматические нормали. Но треугольники ведь быстрее рендерить, и мне кажется с ними у скульпторов больше свободы.
Но треугольники ведь быстрее рендерить
На текущем железе их рендерить действительно быстрее. Ведь 25 лет индустрия развивалась в сторону рендера треугольников.
Это первый сдерживающий фактор. Но мы постепенно идем к тому, что мы сможем в перспективе делать это очень быстро. Производительности топового железа сегодня уже хватает. А при подходящей архитектуре конвеера даже у среднего железа хватило бы производительности. И архитектура с каждым годом становится все гибче, так что все к тому идет.
и мне кажется с ними у скульпторов больше свободы
Нет. Треугольник — очень неудобная фигура для моделирования. Взгляните на любую сетку у любой 3д модели:

Треугольников почти нет. В основном это четырехугольники. Потому что на четырехугольниках можно удобно работать с лупами. Ну а потом это все триангулируется уже автоматически.
Однако моделировать под полигоны сейчас конечно же удобнее. Но это все потому, что для полигональных моделей у нас было аж 25 лет на развитие пайплайна по созданию такого контента. А для моделирования с помощью distance functions сейчас нет инструментов вообще, пишут код руками. А сделать такой инструмент, чтобы он по возможностям хоть отдаленно бы догнал текущие, и можно было его отдавать художникам — ой как не просто. Это собственно второй сдерживающий фактор.
Круто. Взрываться модели в играх тоже будут красиво, похоже. А сколько весят модели? Сколько памяти жрут во время игры ?
Интро выполняли свою задачу всего в 100 инструкциях процессора, таких как ADD, MUL, STOSB, PUSH и им подобных.
А почему не через PhysiX?
(смотреть с 30 секунды: сотни тысяч вокселей)
Есть подходы, при которых практически вся игра пишется на GPU (вспоминается VoxelQuest, например), но это очень не меинстримовое развлечение и требует мощного железа и серьезных навыков программистов.
такие эффекты работают только для не влияющих на геймплей украшательств
По той причине, что игра должна работать и у тех — у кого нет PhysiX.
PS вот игра с влиянием физики на геймплей habr.com/post/345104

И это при том, что это 2д игра с примитивной графикой, в 3д играх с полупрозрачными поверхностями сложность ещё выше.
Сейчас у большинства игроков видеокарты с поддержкой compute shader(physX в этот момент это просто одна из реализаций физики на гпу, можно сделать и свою), но игр написанных таких образом что-то больше не становится.
Sony активно продвигает VR. Может и не выгорит, но игр уже много. И некоторые от вполне крупных издателей.
Прикинул насчёт сжатия: если не сжимать, то в 1 Гб может влезть кубик со стороной 793 вокселя по 16 бит каждый. По оси Y легко сжать всё до 40 байт, тогда в тот же 1Гб влезет уже кубик 5000х5000хY. Это можно сравнить с комнатой 5х5 метров, в которой всё оцифровали с разрешением 1 кубический миллиметр. Танк из статьи наверно всю такую комнату займёт.
Полигональные поверхности хороши для металла и стекла, а вот девушки компутерные выглядят как андроиды, интересно посмотреть как они будут выглядеть на базе вокселей, особенно с симуляцией физики костей, мышц и прочей анатомии :)
Станут ли воксели новой прорывной технологией?