Воксельная разработка
Бранислав: в 2000-2002 годах я участвовал в соревнованиях европейской демосцены. Я написал несколько 256-байтных демо (также называемых intro) под ником Silique/Bizzare Devs (см. «Njufnjuf», «Oxlpka», «I like ya, Tweety» и «Comatose»). Каждое из интро генерировало в реальном времени воксели или графику из облака точек. И воксели, и облака точек являются примерами сэмплированной геометрии.
Интро выполняли свою задачу всего в 100 инструкциях процессора, таких как ADD, MUL, STOSB, PUSH и им подобных. Однако из-за самой природы такого типа программ на самом деле десятки инструкций использовались просто для правильной настройки, а не для генерации самой графики. Тем не менее этих 50 с лишним инструкций, которые по сути являлись элементарными математическими операциями или операциями с памятью, оказалось достаточно для генерации довольно красивой подвижной 3D-графики в реальном времени. Все эти 256-байтные интро выигрывали с первого по третье места. Это заставило меня осознать, что если такую 3D-графику возможно создавать без полигонов, то в играх и других приложениях можно достичь гораздо большего с помощью того же принципа: использования сэмплированной геометрии вместо полигональных мешей. Решение заключается в простоте. Я понял, что доминировавшая тогда парадигма, основанная на сложных и фундаментально ограниченном (необъёмном) представлении данных, уже готова была упереться в потолок возможностей. То есть настало подходящее время испробовать эту «новую», более простую парадигму: объёмную сэмплируемую геометрию.
Дэн: ещё учась в старшей школе в Швеции, я начал программировать 2D-движок с сайдскроллингом, на котором я в результате создал инди-игру под названием «Cortex Command». Она была похожа на «Worms» или «Liero», но с геймплей был больше в реальном времени и с элементами RTS. Также в игре использовалась более подробная симуляция различных материалов каждого пикселя рельефа. В виде сбоку, похожем на «муравьиную ферму», персонажи игрока могли копать золото в мягкой земле и строить защитные бункеры с твёрдыми бетонными и металлическими стенами. В 2009 году Cortex Command выиграла награду за техническое превосходство и приз зрительских симпатий на Independent Games Festival. Ещё с того времени я мечтал создать полностью трёхмерную версию игры, а это было возможно только с помощью волюметрической симуляции и графики.
Примерно шесть лет назад я искал готовые воксельные решения и нашёл работы Бранислава на его веб-сайте и в видео, в котором он рассказывал о неизбежном переходе от полигональной 3D-графики к чему-то, напоминавшему сделанное мной в 2D: к симуляции всего виртуального мира как небольших блоков-атомов со свойствами материалов. Мне не только показалось правильным его заявление — его технологии, судя по простым, но впечатляющим видео, оказались лучшими и самыми убедительными из существовавших. Я начал спонсировать его проект через его веб-сайт и общаться с ним, что привело к началу многолетней дружбы, а теперь и совместному финансированию нашей компании. Восхитительно чувствовать себя частью этого поворотного периода в таком эпичном проекте, в котором результаты долгих лет исследований и разработок наконец-то можно будет передать людям и произвести революцию в создании и потреблении 3D-контента!
Растущий интерес
Мы считаем, что многие крупные игроки осознали: полигональные технологии упёрлись в потолок сложности больше десятилетия назад. Эта проблема проявляет себя множеством способов: в сложных тулчейнах, в хитрых хаках, позволяющих реализовать взаимодействия и симуляцию разрушений, в сложном представлении геометрии (модель полигональной поверхности + модели коллизии + другие модели для представления внутренней структуры, при её наличии), в переусложнённых подходах к волюметрическому видео, хаках и огромных кодовых базах, и т.д. Из-за этих проблем прогресс почти полностью зависит от мощности видеопроцессоров, а некоторые аспекты вообще недостижимы. Это битва, в которой нельзя выиграть. Это свойственно природе больших компаний: часто они даже не пытаются потратить много времени и ресурсов на развитие рискованных и меняющих условия игры решений; вместо этого их стратегия заключается в покупке маленьких компаний, которым это удалось.
Технология
Существует набор техник, которые люди обычно считают основанными на вокселях. Самые старые из них использовался в играх, основанных на картах высот, где рендерер интерпретировал 2D-карту значений высот для вычисления границ между воздухом и землёй сцены. Это не совсем воксельный подход, потому что здесь не используется волюметрический набор данных (примеры: Delta Force 1, Comanche, Outcast и другие).
В некоторых движках и играх используются большие блоки с собственной внутренней структурой, составляющие виртуальный мир (пример: Minecraft). Эти блоки обычно рендерятся с помощью полигонов, то есть наименьшими их элементами являются треугольники и текселы, а не воксели. Такая геометрия просто упорядочена в сетку из более крупных блоков, но это, строго говоря, не делает их вокселями.
В некоторых играх используются относительно большие воксели, или элементы SDF (signed distance fields, полей со знаковым расстоянием), которые всё равно не обеспечивают реализм, но уже позволят создавать интересный геймплей (примеры: Voxelstein, Voxelnauts, Staxel). Существуют также проекты на основе SDF, обеспечивающие замечательные взаимодействия и симуляцию и имеющие потенциал создания высокой реалистичности (пример: Claybook). Однако пока мы не видели попыток разработки решения для симуляции и рендеринга реалистичных больших сцен, аналогичных тем, на которые способна наша технология.
В Atomontage воксели используются как базовые строительные блоки сцен. Отдельные воксели в нашей технологии практически не имеют структуры. Такой подход обеспечивает простоту, сильно помогающую в симуляциях, взаимодействиях, генерации контента, а также в сжатии данных, рендеринге, кодировании объёмного видео и т.д.
Преимущества
Наше решение на основе вокселей устраняет множество сложностей, с которыми сталкиваются люди, работающие с технологиями на основе полигонов, в том числе саму концепцию ограничения на количество полигонов и множество хаков, используемых для обхода этого ограничения. Наша технология объёмна по самой своей природе и поэтому не требует никого дополнительного представления для моделирования внутри объектов.
В таком подходе существует мощная и неотъемлемая система LOD (level of detail, уровня детализации), позволяющая технологии балансировать производительность и качество в традиционно сложных ситуациях. Одни из множества преимуществ — гранулярный контроль над LOD, foveated rendering и обработка, не требующие почти никаких излишних затрат.
Воксельная геометрия избавляет от бремени сложной структуры: она основана на сэмплировании, а поэтому с ней легко работать (простая и универсальная модель данных для любой геометрии, в отличие от сложной модели данных ресурсов на основе полигонов). Это позволяет быстрее выполнять итерации при разработке мощных методов сжатия, инструментов взаимодействия, генераторов контента, симуляторов физики и т.д. Этого не происходит в полигональных технологиях, потому что они уже не меньше десятка лет бьются о потолок сложности, а их прогресс сильно зависит от экспоненциального роста мощи видеопроцессоров.
Воксельный подход эффективен, поскольку он не тратит ресурсов или пропускной способности на плохосжимаемые компонентов векторов или векторных представлений данных (полигонов, облаков точек, частиц), то есть значений, имеющих почти случайное расположение. В случае вокселей в основном можно кодировать полезную информацию (цвет, информацию о материале и т.д.), а не излишние данные, просто располагая эту информацию в нужном месте пространства. Можно сравнить это с JPEG и каким-нибудь двухмерным векторным форматом, кодирующими большое и сложное изображение. Кодирование JPEG предсказуемо и может хорошо настраиваться под оптимальное качество и малый объём, а векторное изображение потратит бОльшую часть пространства на векторную информацию вместо самих сэмплов цвета.
Наш подход позволит обычным людям дать волю своему творческому таланту без необходимости изучать и понимать внутреннюю технологию и её ограничения. Навыков, которые мы получили, взрослея в реальном мире, будет достаточно для взаимодействий с виртуальными средами полезным и реалистичным образом.
Благодаря системе LOD, являющейся неотъемлемой частью технологии, и простой пространственной структуре воксельных ресурсов легко получить крупномасштабное объёмное видео высокого разрешения. Наш рендеринг на основе вокселей не снижает качество геометрии из-за упрощения меша, а достигаемая на стандартном современном оборудовании производительность несравнима ни с чем.
Сейчас мы находимся на этапе, когда можем вокселизировать не только одну большую высокополигональную модель, но и целую серию таких ресурсов со сборкой из них объёмного видео. Также мы можем делать это с целыми средами: представьте сцену кинематографического качества с персонажами, которую можно использовать в научно-фантастическом или анимационном фильме. Мы можем превратить среду в VR-фильм, в котором пользователь может находиться в одном пространстве с персонажами, свободно перемещая точку обзора (а не просто оглядываясь, как в виртуальном видео) в сцене размером с комнату или даже больше. Пользователь может воспринимать процесс, как это привычно для VR-игр, за исключением интерактивности. Сейчас мы ищем партнёров, которые помогли бы нам сделать первый пробный короткометражный фильм с качественными графическими данными.
Риггинг
Наша технология уже позволяет использовать различные преобразования, влияющие на любой воксель модели, создавая убедительные эффекты деформации мягких тел. Хотя у нас пока нет демо анимации персонажа с полным скиннингом и другими функциями, наша технология безусловно способна на это, если привязать её к любой традиционной системой риггинга. Это уже видно в наших видео с мягкими телами: шины на колёсах автомобиля сжимаются в ответ на симулируемые силы, и такая деформация похожа на то, что происходит в анимации персонажей при влиянии привязанных костей. На ранних этапах сам риггинг может даже выполняться в некоторых из уже имеющихся инструментов ещё до вокселизации, а со временем мы реализуем его и в собственных инструментах.
Текстурирование
Готовые текстурные ресурсы можно вокселизировать различными способами. Наилучшие результаты у нас получаются с двумя из них — с вокселизатором на основе лучей и вокселизатором на основе проецирования. Первый испускает лучи через полигональную модель, распознаёт пересечения между каждым из лучей и мешем, вычисляет относительные позиции на привязанной текстуре, считывает текселы и запекает их в соответствующие воксели, наносимые на модель.
Вокселизатор на основе проецирования рендерит модель с нескольких точек обзора в карты, в том числе и карты глубин. Пересечение объёмов, определяемое картами глубин, предоставляет информацию о вокселях, которые необходимо создать. Другие сгенерированные карты предоставляют остальную часть информации о поверхности (цвет, нормали и т.д.), которая также запекается в воксели поверхности.
Также существуют другие способы создания правильно окрашенных поверхностей — вокселизацией данных облака точек или процедурной генерацией контента/свойств поверхности готовых моделей.
Крупномасштабные ландшафты
Это две отдельные проблемы. Генерация контента с помощью вокселей проста, потому что достаточно всего лишь внести большое множество сэмплов с некими полезными свойствами (цвет, информация о материале и т.д.) в равномерную сетку с заданным пространственным разрешением, или с несколькими разрешениями в случае данных с переменным LOD. Это легко реализуется с помощью вокселей, потому что мы не сталкивается с ограничениями на количество полигонов. Кроме того, текстур тоже нет, поэтому у нас нет проблемы разрешения текстур.
Рендеринг больших сцен тоже выполняется довольно просто благодаря мощной системе LOD. Рендерер может использовать наиболее оптимальную комбинацию LOD небольших сегментов геометрии для рендеринга всей сцены с наибольшей возможной детализацией, сохраняя прим этом высокий FPS. LOD вокселей очень малозатратны и хорошо подходят для сохранения размеров вокселей (а потому и ошибок формы) меньших, чем размер пикселя на экране.
Работа со сканами
Наши вокселизаторы уже достаточно мощны, чтобы вокселизировать очень высокополигональные меши и облака точек с помощью упомянутых выше способов. Мы продемонстрировали первые результаты с данными фотограмметрии ещё в начале 2013 года, вокселизировав меш из 150 миллионов полигонов, который мы рендерили и изменяли в реальном времени на среднем игровом ноутбуке 2008 года. После вокселизации количество полигонов исходной геометрии становится неважным, а изменение модели оказывается простой задачей. Это можно заметить в наших видео; производительность больше зависит от количества пикселей, чем количества полигонов исходных данных. Всё это необходимо, чтобы обеспечить пользователям комфортный рабочий процесс при подчистке огромных отсканированных моделей. Кроме того, воксели в каком-то смысле схожи с пикселями, поэтому мы предвидим применение узкоспециализированного ИИ (с глубоким обучением) для автоматической подчистки данных фотограмметрии.
Будущее VR и стриминга
Представление пространства в виде вокселей является необходимым требованием для создания огромных сетевых интерактивных виртуальных сред, которые в какой-то момент начнут напоминать реальный мир. Ключевым моментом является то, что такие среды не статичны и позволяют пользователям взаимодействовать с ними привычным в реальном мире образом. То есть такие виртуальные среды должны быть полностью симулируемыми и с убедительной физикой. Симуляция и рендеринг сложного, полностью динамического мира требует, чтобы такие миры были волюметрическими, а вся обработка, синхронизация и рендеринг симулируемой геометрии обязаны быть эффективными. Волюметрическая природа такого процесса исключает применение полигонов. Кроме того, как сказано выше, другие векторные формы представления недостаточно эффективны в создании высокого качества при малых затратах.
Мы ожидаем, что такие огромные симулируемые среды будут состоять в основном из вокселей, и только небольшая часть будет симулироваться с помощью частиц для создания некоторых эффектов. Замечательно, что оба этих представления просты и сэмплируемы, и что преобразование из одного в другое будет тривиальными и малозатратным с точки зрения вычислений.
Таковы огромные преимущества вокселей перед другими способами представления, что делает их идеальным решением для описания таких гигантских виртуальных сред. Система LOD замечательно подходит для оптимизации обработки и рендеринга на лету в зависимости от любых сочетаний параметров (расстояния до пользователя, важности симулируемого процесса, соотношения точности/затрат и т.д.). Также благодаря этому они идеально подходят для foveated rendering и очень эффективной потоковой передачи. Также их можно задавать с большей размерностью, что необходимо для выполнения крупномасштабной распределённой физической симуляции. Такие симуляции невозможно выполнять всего в трёх измерениях из-за задержек сети и невозможности обработки большой модели на одном PC и одноразовой передачи большой части геометрии. Сегментированная, изменяемая система LOD воксельной геометрии здесь очень поможет. При изменении небольшой части или нескольких частей большой воксельном модели нет необходимости пересчитыватьь его большой меш и текстуры, а также синхронизировать всю модель по сети — важны только задействованные части, которые можно синхронизировать с наиболее подходящим для передачи по сети LOD.
Все эти требования к огромным виртуальным средам будущего приводят к необходимости и неизбежности сдвига парадигмы в сторону волюметрической сэмплируемой геометрии. Свойства нашей воксельной технологии делают её наилучшим и единственным кандидатом на выполнение сдвига парадигмы в ближайшем будущем.
Команда разработчиков Atomontage. Интервью проведено Кириллом Токаревым.
Комментарии (70)
Alexey2005
30.05.2018 17:22+4Проблема с вокселями в том, что современные объёмы видеопамяти пока что катастрофически недостаточны для комфортной работы.
Вот когда на борту видеокарты будет не 8 Гб, а по меньшей мере 1 Тб, вот тогда уже с вокселями можно будет работать без лишних сложностей. Пока же нехватка памяти компенсируется целым ворохом хитрых алгоритмов и всевозможных трюков, которые ничуть не проще работы с «векторным» 3D на основе полигонов и сеток.geisha
31.05.2018 09:15Там что-то проскакиволо про воткнуть SSD в разъём на видеокарте. Ещё есть такой момент: производительность и объемы памяти, в отличии от производительности и количества процессора/шейдеров, вполне себе растут, так что оптимизм наличествует.
amarao
31.05.2018 14:56После того, как вы воткнёте SSD в качестве памяти для видеокарты, худшие лаги, которые вы видели, покажутся вам чудом равномерности и отзывчивости.
Как насчёт произвольных задержек в десятки секунд иногда?
Jeka178RUS
30.05.2018 17:41+1Впечатляет, помню ковырялся с вокселями в дипломной работе, помню памяти не хватало катастрофически.
finlandcoder
31.05.2018 16:38Вот именно. На видео очень маленькие сцены с ничем. Вот когда полигональная модель уйдет — тогда да. А пока видеокарта хочет полигон — вокселей не будет.
DaveDee
30.05.2018 17:51+4Помню эти эти видео 2012 года. С женой тогда радостно обсуждали, что наконец-то кто-то решился и вот-вот, ну, в крайнем случае, лет через 5 начнут делать первые воксельные игры со всеми вытекающими прелестями реализма и геймплея.
Эх, подождем еще 5 лет :)Foror
30.05.2018 19:20>Эх, подождем еще 5 лет :)
В коментах автор пишет, что к 2019 будет что показать людям.DaveDee
30.05.2018 19:28Показали то и сейчас что-то (и 6 лет назад), но вот игроделы за это еще не брались. Значит что-то приличное может выйти не раньше чем через 3-5 лет (пара лет на технологию, пара на разработку игры под мало кому известные фишки).
И это допуская, что будут люди, которые смогут на неизвестной технологии что-то придумать, посторить и красиво подать.
Ну еще может появиться какой-то условный инди АтомКрафт, который волею судеб и благодаря нужному положению звезд станет новым хитом и все крупные студии кинутся клепать своипесочницывоксельные игры.Foror
30.05.2018 19:40+3Да я как-то не жду очередного ААА на вокселах, чтобы просто проникнуться хватило бы небольшой демки, типа такого:
hardex
31.05.2018 08:44Такое качество будет сразу, как только научимся рейтресить в реальном времени.
DaveDee
31.05.2018 15:52Так умеют уже, вопрос в массовости железа
www.geforce.com/whats-new/articles/nvidia-rtx-real-time-game-ray-tracingvalera5505
31.05.2018 17:04Умеют рейтрейсить небольшие сцены (или вообще частично) на 4 очень дорогих видеокартах
Tutanhomon
30.05.2018 17:56+4отлично, теперь алиасинг не толькро на гранях, но и на каждом
пикселевокселе)
fzn7
30.05.2018 18:07Что нового по сравнению со скамом от Eucledeon?
www.youtube.com/watch?v=UKUuUvDSXk4Foror
30.05.2018 19:31Появилась команда и инвесторы www.atomontage.com/#team-section В 2019 будем демка.
QDeathNick
30.05.2018 22:04Столько одиночек уже показывали интересные воксельные проекты, но умерли не родившись или родившись уродцами.
Надеюсь хоть у Бранислава что-то дойдёт до приличного результата, слежу за ним давно.vintage
31.05.2018 09:21Половина ваших ссылок не про воксельную графику, а про кубический дизайн с полигональной графикой.
Goldseeker
31.05.2018 10:05+1Чтобы отрендерить графику на современных графических процессорах её так или иначе придется преобразовать в полигональное представление или рейтресить в вершинном шейдере.
Так что в принципе воксельная графика это и про воксели на цпу — полигоны на гпу тоже.
Из статьи не очень понятно как именно технически работает их технология, есть предположения о реализации?
lieff
31.05.2018 12:19Не обязательно, можно рендерить прямоугольник из 2х треугольников, а в шейдере уже делать raymarch используя bvh, в котором хоть треугольники, хоть сферы, хоть вообще сложные мат-фигуры. Причем на уровне API треугольников вообще может не быть, в opengl можно шейдер запустить просто через glRecti(1, 1, -1, -1);, даже vertex шейдер не нужен. Сompute шейдер тоже запускается на 2D прямоугольник, разницы с glRecti вариантом по сути не будет.
Goldseeker
31.05.2018 12:54Именно это я и имел ввиду, когда говорил о рейкастах в вершинном шейдере, имел я ввиду, конечно, фрагментный шейдер.
К сожалению, скорость рендеринга при таком подходе обратно пропорциональна квадрату разрешения(в обычном рендеринге тоже, но там всё-таки отдельные операции гораздо легче), то есть на 4к в ближайшее время не ждите.
QDeathNick
31.05.2018 14:08Ну я и не писал, что это проекты с воксельной графикой. Как мне кажется, не суть как именно происходит растеризация, важно, что они используют в своём движке воксели, т.е. регулярную трёхмерную сетку.
И границы, как обычно, размыта, если Atomontage явно воксельный проект, то Майнкрафт уже кажется не воксельным, но я бы тоже отнес его к воксельной игре, так как блоки одинакового размера, а то, что они кроме цвета имеют ещё и разную форму и даже текстуры, это не столь важно. Или, к примеру, в Space Engineers гриды содержат блоки совершенно разного размера, и эти блоки вокселями уже совсем тяжело назвать.
Или взять воксельное октодерево, оно хранит информацию о сетке вокселей, хоть и используются блоки разного размера, но любой движок, использующий его как основное хранилище мира игры, я бы назвал воксельным, а как растеризовать дело второе.
В грядущей Dual Universe не воксельная графика, но при этом явно воксельная вселенная.
QDeathNick
31.05.2018 14:17Здесь люди даже частицы называют вокселями, если они в регулярной сетке.
Goldseeker
31.05.2018 14:23Может я слаб в терминологии, но в чем разница?
QDeathNick
31.05.2018 14:43Да мы все в терминологии слабы, так как область развивается и всё размыто.
Думаю вокселями стоит называть только регулярную сетку, где не хранятся 3D координаты в мире отдельных блоков, а хранятся только их свойства и положение в сетке.
Вот у Atomontage сетка вокселей перед выводом искажается, но хранится то всё равно регулярная. А в вашем примере думаю вообще нет сетки, а хранятся просто координаты каждой частицы. Раз сетки нет, то вообще сложно это вокселями назвать.
К слову ещё есть доксели или, как некоторые пишут, докселы, это такой кадрированный 3D растр. Т.е. видео, но записанное не пикселями, а вокселями.
Goldseeker
31.05.2018 15:13Пример не мой и тут я согласен, что это к вокселям отношение не имеет это действительно не привязанные ни к чему частицы, а вот в примере игры на GPU дальше по обсуждению там вполне себе воксели в регулярной решетке, только двумерной.
Вообще, я согласен, что воксель это когда данные о мире хранятся в массиве, по типу растрового изображения для 2д.
Feelnside
30.05.2018 22:12Выглядит красиво, но как все это дело сохранять. Допустим перерубил ты огромную кучу мира, сохранился. Это ж сколько времени нужно, чтобы записать все изменения на жесткий диск (ну или ssd), аля, какие блоки разрушил, какие переместил и прочее.
Frankenstine
31.05.2018 15:12Фактически сейвы придётся делать в виде слепков памяти со сжатием. И они будут несовместимы с выходом обновлений, меняющих какие либо объекты в игре (например, забагованное окно).
sumanai
31.05.2018 16:01Может diff?
Frankenstine
31.05.2018 16:37Смотря что будет быстрее — дамп на ssd всего образа в памяти, или сравнение памяти с файлом на диске с записью разницы. К тому же будет зависеть от наличия в механике объектов, «живущих своей жизнью» без взаимодействия. Ну, скажем, вода в фонтане. Для традиционной анимации это просто объект с динамической текстурой, сохранять ничего не надо. Для воксельной графики и сам фонтан и вода в нём — воксели, которые придётся сохранять. Фонтан — потому что разрушаемость же, декои и всё такое, воду — в принципе необязательно, но с точки зрения программирования это просто проще, дампим всё и не ломаем голову как всё загрузить из сейва так, чтобы не было багов.
MrShoor
31.05.2018 00:44Здорово конечно, что существуют энтузиасты, которые верят в воксельную революцию.
Они молодцы, и именно такие ребята могут совершить прорыв.
Но в воксельную революцию я верю слабо. Дело в том, что воксельная графика почти ничего не решает. С глобальным освещением — такие же проблемы. С тенями — все проблемы на месте. Волюметрик эффекты? Воксели никак не помогают в этом. А какие бонусы они дают? Да почти никаких. Только качественные автоматические динамические LOD-ы ценой лютой прожорливости по памяти.
Зато куда более перспективным на мой взгляд является raymarching моделирование + рендер.vintage
31.05.2018 09:27На мой взгляд воксели выстрелят только в купе с процедурной генерацией, чтобы не загружать с диска каждый атом во вселенной и иметь неограниченную детализацию. Я себе это вижу так: есть опорные атомы, положение и характеристики которых задаются дизайнером и пользователем во время игры (разрушения, и тп). Их относительно мало. И есть производные атомы, которые генерятся по алгоритму на основе соседних опорных по мере необходимости.
QDeathNick
31.05.2018 15:05И причём эта процедурная генерация должна быть с физической составляющей.
Вот, к примеру, выкопал игрок кубик вокселей из песка и движок сам, на основе свойств материала, «осыпал» более мелкие воксели и превратил квадратную ямку в конусообразную или наоборот, поставил игрок большой блок, а он превратился в кучку мелких. А хранит движок на диске именно большой октоблок, который указал игрок.
Мы пытались в майнкрафте подобное реализовать на основе двух модов LittleBlocks и BlockPhysics, но так и не допилили до работающего результата.
DrZlodberg
31.05.2018 10:29С глобальным освещением — такие же проблемы.
Так вроде бы Voxel Cone Tracing на это дело должен очень неплохо ложиться.finlandcoder
02.06.2018 11:28Voxel Cone Tracing
Вокселизуем всю сцену в разреженный octree. Листья octree — 3д-текстуры вокселизованных кусков поверхности сцены. Храним только те листья, которые пересекают поверхности объектов. По полученному дереву можно достаточно эффективно пускать конусы, аналогичные пучку лучей, тем самым аппроксимируя отражённый свет.
Игрушечные сцены. By design не подходит для больших сцен. Заоблачные затраты памяти.
Окей…
AngReload
31.05.2018 17:30raymarching
Немного читал про него, но так и не понял, что он даёт?MrShoor
31.05.2018 18:07Вот тут очень хороший пример функционального моделирования:
DjSens
31.05.2018 07:52+1Круто. Взрываться модели в играх тоже будут красиво, похоже. А сколько весят модели? Сколько памяти жрут во время игры ?
GeekberryFinn
31.05.2018 09:38Интро выполняли свою задачу всего в 100 инструкциях процессора, таких как ADD, MUL, STOSB, PUSH и им подобных.
А почему не через PhysiX?
https://www.youtube.com/watch?v=x8Fo2slT2WA?t=30
(смотреть с 30 секунды: сотни тысяч вокселей)Goldseeker
31.05.2018 10:00Результаты просчетов физики (особенно такой тяжелой) на GPU очень тяжело использовать в игровой логике, потому что чаще всего эти данные так и остаются на GPU — таскать данные о сотнях тысячах вокселей между видеопамятью и оперативной памятью совсем не дешево. Как мне видится, такие эффекты работают только для не влияющих на геймплей украшательств.
Есть подходы, при которых практически вся игра пишется на GPU (вспоминается VoxelQuest, например), но это очень не меинстримовое развлечение и требует мощного железа и серьезных навыков программистов.GeekberryFinn
31.05.2018 10:27такие эффекты работают только для не влияющих на геймплей украшательств
По той причине, что игра должна работать и у тех — у кого нет PhysiX.
PS вот игра с влиянием физики на геймплей habr.com/post/345104
Goldseeker
31.05.2018 10:40Приведенная вами в пример игра как раз пример игры полностью написанной на GPU (то есть гонять данные о всех вокселях каждый кадр не нужно) и автор сам собственно называет у этого подхода ровно один плюс — производительность, а минусы — чудовищно возросшая сложность разработки, постоянные проблемы с физическими ограничениями GPU, сложность синхронизации данных CPU & GPU, невозможность детерминистичной симуляции. Условный Dragon Age так не напишешь — утонешь в сложности.
И это при том, что это 2д игра с примитивной графикой, в 3д играх с полупрозрачными поверхностями сложность ещё выше.
Сейчас у большинства игроков видеокарты с поддержкой compute shader(physX в этот момент это просто одна из реализаций физики на гпу, можно сделать и свою), но игр написанных таких образом что-то больше не становится.
Tutanhomon
31.05.2018 17:49Эти их вялые стволы намекают на состояние воксельной графики на текущий момент
DSLow
31.05.2018 11:35Воксели должны были новой прорывной технологией сколько-то там лет назад. Уже нет.
infrapro
31.05.2018 11:56Как там с шейдингом у воксельной технологии? На показанных роликах не заметно его вообще
iga2iga
31.05.2018 16:13Хватит уже пинать труп воксельной графики (для игр). Возможно в медицине оно и найдет своё применение. Ну а пока будущее за трассировкой лучей и только. Правда и тут производительности GPU пока ещё не хватает раза так в 3-4. Опять же разрешения растут постоянно.
Freundlich
31.05.2018 16:40Какими мощностями должен обладать ПК, дабы вся эта красота работала стабильно?
Beshere
31.05.2018 16:40Гошподи, каждые четыре года вдруг вспоминают воксели. И опять забывают.
aknew
31.05.2018 17:34Ну как бы с VR та же фигня была (во всяком случае я помню рассуждения на эту тему еще в 90 в от винта, да и в фильмах/мультиках тогда же она была довольно популярна), но ведь смогли же в итоге.
vlreshet
01.06.2018 10:38Ну такое, не особо то смогли, как по мне. Особой массовости VR не получил. Так, игрушка для полутора гиков.
aknew
01.06.2018 10:49Согласен по поводу не особо и игрушки для гиков, но я ждал что опять поговорят два-три месяца и успокоятся на пару лет, а тут хоть для гиков, но реальное применение в игра, а не очередная демка
Azoh
01.06.2018 10:54Sony активно продвигает VR. Может и не выгорит, но игр уже много. И некоторые от вполне крупных издателей.
DjSens
02.06.2018 10:48Прикинул насчёт сжатия: если не сжимать, то в 1 Гб может влезть кубик со стороной 793 вокселя по 16 бит каждый. По оси Y легко сжать всё до 40 байт, тогда в тот же 1Гб влезет уже кубик 5000х5000хY. Это можно сравнить с комнатой 5х5 метров, в которой всё оцифровали с разрешением 1 кубический миллиметр. Танк из статьи наверно всю такую комнату займёт.
Полигональные поверхности хороши для металла и стекла, а вот девушки компутерные выглядят как андроиды, интересно посмотреть как они будут выглядеть на базе вокселей, особенно с симуляцией физики костей, мышц и прочей анатомии :)
zigzag8312
Вспоминаются воксельные «Вангеры» с их терраформируемыми мирами. Возможно скоро мы увидим что-то подобное современное с возможностью создания и разрушения.
Спасибо за перевод, буду следить за проектом.
kompas_3d
Их же более поздний Perimeter был ещё.