Рендеринг с помощью вокселей: новый уровень графики в играх?

Рендеринг с помощью вокселей: новый уровень графики в играх?

Прокладка лучей (ray casting)

Подобно трассировке лучей (ray tracing), прокладка лучей основывается на проведении луча от каждого пикселя картины. Но отличие в следующем: когда будет отыскано пересечение, то метод на этом завершается, вторичных лучей не прокладывается.

Следовательно, прокладка лучей выполняется стремительнее трассировки лучей, потому, что, как мы уже продемонстрировали в прошлой статье, эти вторичные лучи именно и приводят к проблемам с доступом к памяти. Более того, вам не требуется создавать дополнительные структуры данных, дабы ускорить вычисления, которые связаны с пересечениями. Октадерево есть одновременно и данными (текстуры и геометрия), и структурой ускорения.

Преимущества воксельных октадеревьев

Сейчас давайте разглядим преимущества воксельного октадерева в рендеринге. Главное преимущество данной структуры данных в том, что она снабжает очень элегантный путь решения проблемы уровня детализации (level of detail, LoD) текстур, и и геометрии — всё это по одному несложному методу. Обстоятельство кроется в том, что, как мы уже упоминали выше, любой узел октадерева содержит цветовую данные, так что мы можем обойтись без 2D-текстур в их классическом понимании.

Либо, в случае если быть более правильным, октадерево содержит как текстурную данные, так и геометрическую.

Следовательно, неприятность уровня детализации, которую приходилось совсем по-различному решать для геометрии и для текстур, сейчас сводится к одной несложной совокупности: решению проблемы уровня детализации для октадерева. А это возможно сделать весьма легко, по принципу, пара напоминающему mip-уровни текстурирования. Цель создания mip-уровней содержится в сохранении размера текселей (элементы текстуры) максимально близко к размеру пикселей экрана.

Для этого текстура просчитывается и сохраняется в нескольких разрешениях, а графический процессор выбирает тот либо другой mip-уровень в зависимости от размера текстуры на экране.

&направляться;Что-то подобное возможно сделать и с воксельными октадеревьями, в то время, когда уровень детализации будет выбираться машинально. В случае если размер вокселя меньше размера пикселя, то прохождение дерева на этом заканчивается. Всё что требуется — сохранить среднее от информации, содержащейся в дочерних ветвях каждого узла, и мы приобретаем весьма несложный метод решения проблемы уровня детализации.

Данный механизм идеально подходит для потоковых совокупностей визуализации, пара напоминающих ту, что id Software уже применяла для MegaTextures. В видеопамяти сохраняются лишь те части октадерева, каковые необходимы, кое-какие части находятся в главной оперативной памяти, дабы ускорить последующий доступ. Но большинство октадерева на хранилище.

В следствии мы можем взять практически бесконечное количество геометрии (и текстур, как мы отметили). Октадерево возможно так детализовано, как нам необходимо, и на протяжении работы время вывода и объём памяти на дисплей остаются (довольно) постоянными. Единственными ограничениями являются время, которое живописцы смогут израсходовать на создание октадеревьев, и физические ограничения накопителей в компьютерах нового поколения.

Кроме этого направляться подчернуть, что существуют другие вероятные методы ответа упомянутых неприятностей, к примеру, применение совокупностей с виртуальными текстурами, аналогичных MegaTextures, или других разработок (к примеру, sparse virtual textures), каковые будут встроены в самые большие 3D-движки (CryEngine 3, idTech 5 и т.д.) в следующем году. Проблему геометрии решать сложнее, но и тут подготавливаются пара вероятных ответов.

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

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

В то время, когда уровень детализации достигает нового целочисленного значения, дочерние вершины удаляются, и и все грани, которыми они соединялись с родительскими вершинами.

Эта техника трудится, но не всецело машинально. Ей требуется дополнительная информация со стороны живописца, что имел возможность указать, какие конкретно грани ответственнее всего сохранить. Эта дополнительная работа свидетельствует да и то, что живописец возьмёт меньше времени на доработку моделей.

Ещё один метод решения проблемы (о котором мы довольно много слышим по окончании появления видеоплат с помощью DirectX 11) содержится в тесселяции примитивов большого порядка (патчей), вероятно вместе с картами смещения (displacement mapping). Появление данной разработке уже давно произошло на бумаге (да, отыщем в памяти Parhelia), но практических результатов пока не было. Быть может, это именно тот случай, в то время, когда мы возьмём практическое воплощение.

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

В итоге, оценить размер вокселя на экране несложнее, а для треугольника — сложнее.

Потенциальные ограничения вокселей

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

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

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

Но, по крайней мере, на сегодня в полной мере ясно, что в скором времени мы для того чтобы не возьмём. Так что нужно будет смириться с неразрушаемыми стенками ещё пара лет.

Ещё одна неприятность кроется в том, что нам что-то следует сделать с потоковой совокупностью. Как мы уже говорили, эта разработка рендеринга прекрасно подходит для постепенного повышения уровня детализации по мере приближения к объекту, в то время, когда совокупность будет в фоне приводить к данным из октадерева. Из-за метода организации данных это возможно сделать медлено.

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

Или дизайнерам игры будет необходимо как-то обходить данный недочёт, избегая упомянутых обстановок.

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

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

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

Джо Олик (Jon Olick) сообщил несколько предложений на эту тему — похоже, он доволен уровнем сжатия, которого удалось достигнуть.

Заключение

3D-рендеринг в настоящем времени сейчас находится в очень любопытной стадии эволюции. С возникновением GPU, снабжающих всё более и более высокую степень программируемости, снова становятся актуальными многие подходы, каковые раньше имели вызывающую большие сомнения сокровище. Они должны оказать помощь разработчикам решить имеющиеся неприятности.

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

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

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

Но, всё равняется весьма интересно видеть модель, анимированную с несколькими миллионами полигонов (семь миллионов в начальной модели, сделанной посредством ZBrush) с частотой кадров 60 fps на текущем поколении видеоплат. Эти предварительные результаты звучат весьма обещающе, если вы поразмыслите о графических процессорах, каковые будут дешёвы в то время, в то время, когда разработка выйдет на рынок. Учитывая время разработки современных игр, и да и то, что id Software несобирается выпустить Rage до следующего года, нам, возможно, нужно будет подождать три либо четыре года, перед тем как игры с данным методом рендеринга покажутся на прилавках магазинов.

Случайная статья:

Как работает игровой движок // Рендеринг


Похожие статьи:

Комментирование и размещение ссылок запрещено.

Обсуждение закрыто.