Проблемы трассировки лучей — из будущего в реальное время, часть 6

«…worst advertising of ray tracing ever»

Наихудшая возможная реклама метода трассировки лучей. Это так характеризуют AntiPlanet — реально работающий 3D-шутер с графическим движком, основанным на методе трассировки лучей. Использование вычислительно затратного метода трассировки лучей для отрисовки игровых сцен в реальном времени, на потребительских системах стало возможным потому, что игровой мир AntiPlanet построен целиком из сфер. И сцена, и монстры, и оружие — сделаны из сфер. Это фантастический мир, отчасти напоминающий компьютерную анимацию. А сфера — удобный объект для трассировки лучей. Считать пересечение луча со сферой равносильно расчету пересечения луча с треугольником. Но из, например, сотни сфер можно построить гораздо более интересный объект, чем из ста треугольников. Зато он будет далек от «реального» мира. Аппроксимировать тысячами сфер всякие бытовые вещи не выгодно.

Из возможностей, предоставляемых трассировкой лучей, используются только расчёт теней и прозрачность. Но освещение полностью динамическое, все объекты отбрасывают тени, солнце бежит по небу, локальные источники света мерцают и сцена сама тоже динамическая. И можно играть в высоком разрешении на обычной системе. Есть вариант с рендерингом на CPU и вариант с рендерингом через CUDA. GPU-версию можно ещё усовершенствовать, но вариант «двуядерный процессор + карточка класса GeForce GTX» обгоняет четырёхъядерные процессоры. И качество картинки в CUDA-варианте выше, из-за возможности использования более продвинутой модели текстурирования. Благо, вычислительные возможности шейдеров позволяют.

Это пейзаж AntiPlanet. Вот, видимое в левой части экрана солнце перемещается по небу и высокие пики отбрасывают тени, а фантастические растения на заднем плане шевелятся.

Ночной уровень. Это статическое изображение, но на самом деле все тени движутся и щупальца тоже опускаются и поднимаются.

Саму игру можно скачать с сайта разработчков.

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

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

Можно что-то рендерить в низком разрешении с низким FPS на дорогой мультипроцессорной системе и это будет действительно реклама. Непонятно, правда, чего.

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

Рэйтрейсинг и средства отображения

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

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

Растеризационные алгоритмы несколько менее зависимы от разрешения, так как значительное время уходит на обработку треугольников, количество которых, в принципе, может не зависеть от разрешения экрана. В играх иногда применяется различная детализация, в зависимости от разрешения, но это излишества, это для сбалансированности графики. Но даже не в этом дело, просто растеризационный алгоритм значительно вычислительно проще и обеспечит приемлемую скорость для очень высоких разрешений. А для низких разрешений может обеспечивать, наоборот, избыточную скорость. К примеру, 200 кадров в секунду при частоте обновления монитора в 75 Гц.

Последние годы, в связи с особенностью технологии производства жидкокристаллических дисплеев, разрешение мониторов росло медленно, что благоприятствовало методу трассировки лучей. Но если мода повернется в сторону больших мониторов со сверхвысокими разрешениями, то это может ещё больше осложнить перспективы метода придти в игровую графику. Если тот же Quake Wars raytraced еле-еле работает в разрешении 1280x720 на 4-х процессорной системе, то в разрешении 2560x1600 он будет работать в 4 раза медленней. А современные GPU, в принципе, готовы к таким разрешениям уже сейчас. Вопрос лишь в том, будет ли техпроцесс производства процессоров улучшаться быстрее, чем развитие производства дисплеев по отношению к этим процессорам.

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

Но может так случится, что популярность приобретут какие-нибудь стерео очки, которые наоборот, формируют изображение меньшего разрешения, допустим, 800x600, но позволяют получить очень качественную стерео картинку. Таким образом, количество пикселей уменьшается на порядок и это облегчает использование трассировки лучей. Может быть, специфичные методу трассировки лучей эффекты будут замечательно смотреться в стерео.

Заключение

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

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

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

Лев Дымченко (lev)