7994420702;horizontal

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

Примеры интерактивной трассировки лучей с помощью NVIDIA CUDA  

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

Сейчас моделлер работает с моделью, которая отображается растеризационным методом без эффектов, а когда она готова, запускается длительный «финальный» рендеринг с помощью трассировки лучей, который может занимать и часы. Но это не очень удобно, потому что надо самому представлять, что получится в итоге. Opti-X имеет целью позволить сделать «финальный» рендеринг практически интерактивным. Чтобы можно было при работе с моделью пользовать рендеринг на основе трассировки лучей.

Это не совсем реальное время, но близко. В Opti-X SDK входят несколько демо-примеров, они хорошо показывают вычислительные возможности современных GPU с точки зрения рэйтрейсинга, а так же преимущества данной технологии. Хотя проект ещё только на начальной стадии. Примеры можно скачать с сайта NVIDIA для разработчиков.

В их системных требованиях указаны профессиональные карты Quadro FX, Tesla и ещё не вышедшие решения на основе Fermi. Но существует патч, позволяющий запустить примеры и на обычном GeForсe GTX, так как архитектура одинаковая.

Вот пример изображения бокалов из полупрозрачного стекла с эффектами отражения и преломления:

Демонстрация трассировки OPTiX

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

А вот ещё один классический пример для трассировки лучей, полупрозрачные и зеркальные сферы:

Демонстрация трассировки OPTiX

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

В Opti-X также реализовано адаптивное сглаживание (anti-aliasing). Участки экрана, соответствующие сложной геометрии или замысловатому текстурированию, рисуются с помощью трассирования нескольких лучей для одного пикселя. Эти лучи как бы соответствуют различным участкам пикселя, суб-пикселям, а потому цвет пикселя получается усреднением. Это повышает качество изображения краев и наклонных к плоскости наблюдателя текстурированных поверхностей. Как и результат обычного сглаживания. Интересно, что дополнительные лучи трассируются только для нужных участков.

Демонстрация трассировки OPTiX без сглаживания

Без сглаживания.

Демонстрация трассировки OPTiX со сглаживанием

Адаптивное сглаживание.

NVIDIA также демонстрировала рэйтрейсинг сцены с машиной около здания, машина изображается с бликами и отражениями на гладких поверхностях:

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

Или вот демонстрации VRAY на GPU, рендеринг сложных сцен в реальном времени на GeForce GTX 295 с помощью CUDA:

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

Однако, интерес ведущего производителя 3D-карт к рэйтрейсингу говорит о привлекательности возможностей этого метода.