NVIDIA комментирует споры о методах трассировки лучей и растрирования (часть 1)

Споры о применении трассировки лучей в качестве метода визуализации в реальном времени не новы, однако они опять привлекли к себе сильный интерес после нескольких статей Даниэля Пула (Daniel Pohl). Первая из них была опубликована в конце 2006 года и называлась «Трассировка лучей и игры — проект Quake 4: Ray Traced», вот цитата:

«Трассировка лучей имеет возможность стать широко применяемой технологии визуализации на настольных компьютерах. Количество ядер процессора возрастает, также впечатляющие результаты показывает аппаратная архитектура (http://www.saarcor.de/). Еще не скоро появятся игры, сопоставимые по качеству графики с фильмом „Властелин колец“, но мы приближаемся к этому».

Вторая статья Даниэля Пула была опубликована в январе этого года под названием «Трассировка лучей и игры — год спустя», в которой приводились примеры того, какие преимущества может дать трассировка лучей игрокам и игровой индустрии в целом.

Пример работы трассировки лучей от Intel — из статьи «Трассировка лучей и игры — год спустя». Объекты отражаются друг в друге несколько раз (в идеале — бесконечно).

Однако, многие не видят ничего особенного в методе трассировки лучей. К примеру, корпорация NVIDIA, по праву заинтересованная в ускорении графики более других организаций сегодня, имеет практичный взгляд на технологии визуализации, включая растрирование и трассировку лучей. В отличие от Intel, NVIDIA располагает десятками последних исследований в области технологии расчета освещения методом растрирования и видит будущее 3D-графики именно за ним, а не за чем-то что-то новым вроде трассировки лучей.

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

PC Perspective: Трассировка лучей имеет явные преимущества, когда речь идет о высокополигональной геометрии, что вы об этом думаете в сравнении с традиционными методами растровой визуализации?

Дэвид Кирк, NVIDIA: Я не уверен, на какие именно преимущества вы ссылаетесь, но я знаю некоторые общие представления, которые объявлены сообществом, продвигающим метод трассировки лучей на процессоре. Некоторые люди, считают растрирование более медленным по существу, т. к. необходимо обработать и попытаться нарисовать каждый полигон (даже, если он окажется невидимым), таким образом, производительность изменяется, в лучшем случае, пропорционально количеству полигонов. Защитники трассировки лучей считают, что этот метод вместе со структурой иерархического ускорения данных может работать быстрее, т. к. не каждая плоскость должна проходить процедуру прорисовки, и поэтому трассировка лучей будет всегда быстрее для сложных сцен с большим количеством полигонов. Но это доказательство неверно.

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

Высокополигональный снимок из Oblivion.

PC Perspective: Является ли полноэкранное сглаживание или эффекты последующей обработки чем-то сложным для трассировки лучей? Возможно, вам известны другие ограничения, которые имеет метод?

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

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

Указанный эффект называется «глобальное освещение». Можно привести простейший пример: квадратная комната, состоящая из 6 полигонов, и источник света в центре — точки на поверхности стены около угла не могут быть освещены настолько же хорошо, как точки в центре стены. Для того, чтобы реализовать этот эффект, необходимо сделать десятки, а то и сотни, расчетов лучей для каждой точки. Это невозможно сделать в реальном времени. Стоит отметить, что визуально эти эффекты можно очень приближенно реализовать в реальном времени технологиями растрирования и текстурирования.

Источник: PC Perspective

©  nvWorld.ru