Развитие рендеринга игр с помощью технологии Ray Tracing

Оригинал статьи можно найти тут

Author: Ryan Shrout
Date: Sep 20, 2007
Subject: Graphics Card
Manufacturer: Intel
The End of Rasterization

Закат эры растризации

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

Трассировка лучей.

Трассировка лучей – это общая методика, взятая из геометрического моделирования пути, по которому идет луч света, как он взаимодействует с оптическими поверхностями. Эта методика используется при разработке оптических систем и устройств, таких как микроскопы, телескопы, бинокли. Этот термин так же применяется для определения алгоритма рендеринга в 3D графике, где математически-смоделированные визуализации сцен получены, полученные с использованием метода, который повторяет следование лучей от точки наблюдения к объектам, вместо следования от источников света. Он получает результаты схожие с ray-casting технологией, но выдает более продвинутые оптические эффекты, такие как точное симулирование отражения и преломления, а так же является эффективным решением для продукции, которая требует высокого качества исполнения в плане графических сцен.

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

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

В сравнении с другими способами рендеринга, такими как radiosity и raytracing, растеризация очень быстра. Тем не менее, она не основана на физической модели пути света, и поэтому не способна корректно симулировать сложные реальные световые ситуации.

Описание растеризации ссылается на отсутствие точки, для которой ray tracing не способен правильно симулировать свет. Наиболее часто адресованная проблема в современных игровых движках – освещение является основной, для которой мы можем создавать реалистические изображения на компьютерах. NVIDIA, AMD/ATI потратили годы, разрабатывая способы для более точной симуляции света на своих GPU, и затем помогая разработчикам игр реализовать их в своих игровых продуктах. Результаты были впечатляющими.

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

История Даниэла Поола про RayTraced Quake

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


Quake 3 Ray Traced

Первой игрой, написанной Даниэлом используя технологию трассировки лучей, был порт движка Quake 3 с использованием текстур из оригинальной версии. Он изменил в джвижке игры растеризацию новым, который основан на библиотеке трассировки лучей OpenRT.


Quake 4 Ray Traced

Вскоре Даниэл продолжил работу с Quake 4 c движком, который использовал метод трассировки лучей, и был замечен фирмой INTEL – INTEL увидела потенциал в этом типе рендеринга и затем наняла Даниэла помоч разработать ray tracing проект, который был направлен на будущую аппаратную платформу INTEL. С тех пор Поол проделал большую работу относительно этого проекта и начал демонстрировать его на игровых выставках по всему миру.

На IDF 2007 (Intel Developing Forum) я встретил Даниэла и он показал, что поменялось за последние 2 года и рассказал мне очень интересную информацию про будущее ray tracing.

Ускорение трассировки лучей.

На выставке IDF у INTEL была целая площадка научно исследовательских проектов, которым INTEL уделяет много времени.


Как видно из баннера, преимущество трассировки лучей довольно внушительно. Отражения, преломления и тени могут быть воссозданы максимально подробно, все зависит от того, сколько вычислительной мощности вы готовы и способны толкнуть на это. Поскольку обратное моделирование лучей света может быть весьма впечатляющим и высоко детализированным, hi-end съемочные компании выбирают ray-tracing.

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

Трассировка лучей является одной из таких вычислительных задач, которые хорошо масштабируется с добавлением новых процессорных ядер. На 16 ядерном компьютере, трассировка лучей показала 15кратный прирост производительности – не много приложений могут приблизиться к такому уровню массштабируемости.


Команда разработчиков использовала 4 4-ядерные системы (построены на ядрах семейства Kentsfield), соединенные через Gigabit Ethernet распределенную систему для рендеринга в моделируемой 16-ядерной системе. Результаты, как вы видите, были впечатляющими – 15.2-кратное ускорение в сравнении с базовой однопроцессорной системой. Эти тесты были запущены в разрешении 1024x1024, которое не является классическим игровым разрешением, но ведь пиксели – это пиксели, когда доходит до рэндеринга, используя RT.


Демонстрационная система, которая была показана на IDF, работала на восмиядерной системе (2 процессора по 4 ядра), как вы можете видеть из 8ми потоков, обрабатываемых в диспетчере задач на экране. Картинка на экране - картинка уровня Quake 4, она была полностью отрендерина на процессорах INTEL, в то время как GPU только получал финальную картинку и выдавал на монитор.


В левом верхнем углу вы можете видеть счетчик частоты кадров для этого теста, запущенного в разрешении 1280х720р (или чуть меньшем, поскольку приложение запущено в оконной форме). Мы получили 99 кадров в секунду, и 2 дополнительных значения, которые являются более сложными для понимания. TPP – это среднее число шагов по дереву, по которому алгоритм проходит для каждого пикселя. XPP – среднее число треугольников на конечном шаге дерева, которое необходимо учитывать для создания окончательного цвета пикселя.


Просто что бы доказать, что он не обманывает нас, Даниэл увеличил карту, что бы показать, что вся карта играбельна и видима.


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

Другие преимущества RT.

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


Как выяснилось, RT зависим от разрешения экрана, мобильные игровые устройства, подобные Sony PSP и Nindendo DS, могут использовать технологию RT. Частота кадров в приложении, которое использует RT, на самом деле почти линейно зависит от количества пикселей. Фото выше показывает взаимосвязь: если определенное оборудование может выдавать 30 кадров в секунду с разрешением 1024х720, то это же оборудование может выдавать 563 канда в секунду при разрешении 256х192.

Конечно, 563 кадра в секунду – является излишним, менее мощные аппаратные средства могли бы выдавать 30 кадров в секунду при разрешении 256х192. Картинки и эффекты будут такими же как и на более быстрой системе, только в более низком разрешении.

Сглаживание и фильтрация текстур

Работая с растровой графикой довольно долгое время, у меня конечно был длинный список вопросов к Даниэлу, как остальные интересные графические возможности будут реализованы в движке RT. Первым вопросом было сглаживание – возможен ли он, используя технологию RT? Оказывается, что сглаживание не только возможно, но также имеет потенциал стать гораздо более эффективным, что нынешние методы сглаживания, которые используютGPU NVIDIA и AMD. Алиасинг (эффект лесенки) возникает когда линии пикселей пересекаются, и имеют сильно различающуюся окраску и не сливаются гладко; RT может быть использован в виде короткого луча, исходящего из «глаза» наблюдателя и направленного к каждому пикселю на экране для сравнения цвета пикселя и окружающих его пикселей. Если разница соответствует определенному порогу, система знает координаты пересечения пикселей, в этом месте будет применен цвет, получений в результате смешивания близ стоящий цветов.

Есть несколько других алгоритмов сглаживания с помощью RT, которые могли бы принять, но основная идея состоит в том, что RT может освобождать GPU/CPU от выполнения ненужной работы; вопрос который продолжает быть актуальным в 3D-движках, основанных на алгоритмах растеризации, для GPU NVIDIA и AMD.

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

Что мы можем получить?

Все это подводит нас к одной мысли – мы хотим это сейчас. К сожалению, это не совсем возможно, поскольку аппаратная платфрома не достаточно быстра, что бы получить высокое разрешение и высокую частоту кадров одновременно. Но оказывается, мы не далеки от желаемого. Команда аналитиков INTEL ожидает что в течение 2 лет, или около того, аппаратная платформа позволит выдавать «высокое качество 3D графики в играх» с использованием RT на ПК. Это означает, что в эти сроки мы сможем увидеть 3D – движок полностью использующий RT.


Сегодня 4-ядерные процессоры от INTEL достаточно хорошо показывают себя в работе с технологией трассировки лучей, INTEL подтверждает то, что новые процессоры серии Nahalem будут иметь до 8ми ядер на одном кристалле, возможно мы будем проводить трассировку лучей в компьютерных играх на конфигурациях ПК, показанных на IDF.

По словам Даниэла и команды INTEL, им придется обрабатывать каждый второй луч для достижения «высокого качества», а частота кадров будет около одного миллиона. Это позволит примерно 30 лучей на пиксель для обработки каждого кадра, с различными лучами необходимых цветов, освещения и других специальных эффектов. Проведя расчеты, в разрешении 1024х768 для 786432 пикселей и 30 лучей на пиксель и 60 кадров в секунду, мы получим 1.415 миллионов лучей в секунду. Этого внушительного количества мощности для обработки сцены мы еще не достигли. Двойная система Clovertown выдавала около 83 миллионов лучей в секунду, и это при стандартной трилинейной фильтрации.

Заключение

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