Однако, многие не видят ничего особенного в методе трассировки
лучей. К примеру, корпорация NVIDIA, по праву заинтересованная
в ускорении графики более других организаций сегодня, имеет практичный
взгляд на технологии визуализации, включая растрирование и трассировку
лучей. В отличие от Intel, NVIDIA располагает десятками последних
исследований в области технологии расчета освещения методом
растрирования и видит будущее 3D-графики именно за ним, а не за чем-то что-то новым вроде трассировки лучей.
Недавно на сайте PC Perspective было опубликовано интервью с Дэвидом
Кирком, занимающим в NVIDIA пост главного инженера, в котором были
заданы вопросы относительно споров о методах растрирования
и трассировки лучей.
PC Perspective: Трассировка лучей имеет явные преимущества,
когда речь идет о высокополигональной геометрии, что вы об этом думаете
в сравнении с традиционными методами растровой визуализации?
Дэвид Кирк, NVIDIA: Я не уверен, на какие именно преимущества
вы ссылаетесь, но я знаю некоторые общие представления, которые
объявлены сообществом, продвигающим метод трассировки лучей
на процессоре. Некоторые люди, считают растрирование более медленным
по существу, т. к. необходимо обработать и попытаться нарисовать каждый
полигон (даже, если он окажется невидимым), таким образом,
производительность изменяется, в лучшем случае, пропорционально
количеству полигонов. Защитники трассировки лучей считают, что этот
метод вместе со структурой иерархического ускорения данных может
работать быстрее, т. к. не каждая плоскость должна проходить процедуру
прорисовки, и поэтому трассировка лучей будет всегда быстрее для
сложных сцен с большим количеством полигонов. Но это доказательство
неверно.
В таком подходе есть несколько заблуждений, но я открою только два. Во-первых,
аргумент о том, что иерархия позволит не рассчитывать освещения для
всех плоскостей, опускает тот факт, что изначально для построения
иерархии необходимо обработать все плоскости. Во-вторых,
большинство движков визуализации в играх и профессиональных
приложениях, которые используют метод растрирования, также применяют
иерархию и отбор, чтобы избежать обработки и прорисовки невидимых
полигонов. Отсечение невидимых поверхностей давно используется для
избегания прорисовки полигонов, которые находятся в сцене,
но не попадают в кадр (тыльные стороны объектов), а иерархический отбор
позволяет избежать обработки целых кусков сцены (скрытых за объектами
на переднем плане). Так что нет преимуществ между методом трассировки
лучей и методом растрирования с использованием иерархии и отбора.
|
Высокополигональный снимок из Oblivion. |
PC Perspective: Является ли полноэкранное сглаживание или эффекты последующей обработки чем-то сложным для трассировки лучей? Возможно, вам известны другие ограничения, которые имеет метод?
Дэвид Кирк, NVIDIA: Несмотря на некоторые разработанные
демонстрации, в настоящее время трассировка лучей значительно медленнее
растрирования. При сложных высокополигональных сценах, большом
количестве изменений из кадра в кадр, множестве источников освещения
и сложных шейдерных расчетах современные многоядерные процессоры
не являются достаточно быстрыми для высококачественной визуализации
методом трассировки лучей. Другим преимуществом метода, на которое
часто ссылаются, — это возможность визуализировать что угодно. Однако,
если вы решите это сделать, то получите огромное число лучей и низкую
производительность.
Во-первых, вы должны провести расчет прямых лучей,
чтобы узнать, какие объекты попадают в кадр, а также для полноэкранного
сглаживания, получив матрицу пикселей. Далее для каждого объекта,
который виден, необходимо определить, пиксель находится на освещенной
поверхности или в тени. Более современные средства визуализации идут
дальше и рассчитывают не только источники света, но и свет, попавший
на объект как отражение от других объектов в сцене. В таком случае, что
угодно является источником света.
Указанный эффект называется «глобальное освещение». Можно привести
простейший пример: квадратная комната, состоящая из 6 полигонов,
и источник света в центре — точки на поверхности стены около угла
не могут быть освещены настолько же хорошо, как точки в центре стены.
Для того, чтобы реализовать этот эффект, необходимо сделать десятки,
а то и сотни, расчетов лучей для каждой точки. Это невозможно сделать
в реальном времени. Стоит отметить, что визуально эти эффекты можно
очень приближенно реализовать в реальном времени технологиями
растрирования и текстурирования. PC Perspective: Почему NVIDIA и ATi концентрируются
на традиционной архитектуре растрирования вместо трассировки лучей,
если преимущества последней технологии очевидны?
Дэвид Кирк, NVIDIA: Действительность разрушает самые фантастические
идеи и намерения. Фактически все игры и профессиональные приложения
используют современные графические API: DirectX и OpenGL. Эти API
используют метод растрирования, а не трассировки лучей. Так,
современное окружение полностью основано на растрировании. Мы должны
быть глупцами, чтобы не разрабатывать оборудование, на котором хорошо
исполняются эти приложения.
Трассировка лучей может стать будущим методом визуализации —
по крайней мере, он определенно будет использоваться в будущем. Есть
старая шутка, которая говорит: «Трассировка лучей — это технология
будущего и всегда останется такой». Я не полностью с этим согласен,
но считаю, что трассировка лучей — это не ответ, а только его часть.
Более того, я думаю, что программный интерфейс языка C/C++ для
графических ядер позволит производить расчеты трассировки лучей
на видеоускорителях. Со временем, я думаю, графические API будут
развиваться в направлении, обеспечивающем использование трассировки
лучей для создания 3D-изображений.
PC Perspective: Где больше преимуществ в применении стандартных
шейдерных эффектов: с методом трассировки лучей или при растрировании?
Многие ли эффекты будут работать одинаково?
Дэвид Кирк, NVIDIA: В обоих случаях каждая видимая поверхность
должна быть либо освещена, либо затенена. Пиксельные шейдеры работают
очень эффективно на растрирующих блоках, а также могут влиять
на близлежащие пиксели благодаря архитектуре видеокарты и текстурному
кэшу. Для достижения аналогичного результата при трассировке лучей
невозможно использовать многие блоки современных видеопроцессоров — они
будут простаивать. Частично это объясняется тем, что в методе
трассировки лучей шейдерам необходимо рассчитывать большее количество
лучей для прорисовки теней, отражений и прочих эффектов. Однако, эти
ограничения можно будет решить благодаря использованию технологий
пакетной обработки лучей, которые будут представлены в будущих API.
|
Растрирование в Crysis. |
PC Perspective: Видите ли вы сближение между трассировкой лучей
и растрированием? Или эти методы визуализации не имеют общего будущего?
Дэвид Кирк, NVIDIA: Я не вижу явного сближения, но считаю, что
будущее за смешанной визуализацией. Трассировка лучей показывает себя
отлично в создании некоторых эффектов, но медленна в других. Так, если
попытаться использовать трассировку лучей для всего, это будет очень
удобным изменением для разработчиков, которое, однако, не будет
отличаться высокой скоростью. Растрирование очень быстрый метод,
но он уместен не для всех визуальных эффектов. Смешанная визуализация
может расчетливо взять лучшее у обеих технологий для быстрого создания
качественного изображения. Кстати, это «золотой стандарт» в работе
с изображениями и создании графики в фильмах. Кадры фильмов
с использованием компьютерной графики создаются не в реальном времени,
но при этом используется не только трассировка лучей, а множество
различных технологий. Почему так? Потому что трассировка лучей хороша
не для всего, для многих задач она слишком ресурсоемка. PC Perspective: Что касается физического размера ядра
видеокарты, какой на ваш взгляд наиболее эффективный и как сейчас
используется его мощность?
Дэвид Кирк, NVIDIA: Я не думаю, что методы визуализации как-то
могут повлиять на размер ядра. Оборудование растрирования имеет очень
малый размер и высокую производительность, так что размер кремниевых
ядер используется эффективно. Как растрирование, так и трассировка
лучей требует множества прочих геометрических, шейдерных расчетов,
а также вычисления вершин и составления иерархии. Видеоядра, работающие
через графические API или программный интерфейс C/C++, например, CUDA,
очень эффективно используют мощности кремния.
PC Perspective: В связи с тем, что графические ускорители
становятся все более универсальными вычислительными устройствами, как
вы думаете, следующее их поколение сможет исполнять трассировку лучей
хотя бы частично? Что необходимо для того, чтобы это произошло?
Дэвид Кирк, NVIDIA: Уже сейчас существуют такие визуализаторы,
исполняемые средствами видеокарты. Некоторые из них были представлены
на научных конференциях таких, как Siggraph. В настоящее время эти
программы исполняются быстрее, чем на любом процессоре. Я полагаю, что
со временем, когда люди узнают больше о программировании на CUDA
и научатся более искусно использовать мощности видеокарты, эти
программы станут значительно более быстрыми.
|
Ранняя работа, выполненная на видеокарте методом трассировки лучей. |
PC Perspective: Что вы думаете о возможности легкого изменения
количества отражений в методе трассировки лучей для переноса приложения
с одной платформы на другую, к примеру на карманное игровое устройство?
Насколько это сложно по сравнению с технологией растрирования?
Дэвид Кирк, NVIDIA: На самом деле, нет особой разницы между
трассировкой лучей или любой другой технологией визуализации. Всегда
можно увеличить скорость исполнения, уменьшив разрешение изображения
или точность расчетов. Одна важная особенность растрирования — это
более низкое энергопотребление на оборудовании, выполняющем
определенные функции, чем на универсальном оборудовании. Так что
растрирование имеет значительное преимущество для мобильных платформ,
где энергопотребление очень важно. Хотя я надеюсь, что мы сможем
использовать трассировку лучей для некоторых интересных эффектов
и на платформах с низким энергопотреблением.
Как видно, NVIDIA имеет другой взгляд на будущее технологии
трассировки лучей, нежели разработчики Intel, и это вполне понятно.
Ведь как NVIDIA, так и ATi оценивают целесообразность исследований
в области компьютерной графики не как отвлеченные, пусть и интересные,
идеи, а жестко привязывают их к реальности, к существующей системе,
которую невозможно резко заменить. NVIDIA утверждает, что трассировка
лучей не заменит применяемый метод растрирования, а в ближайшем будущем
будет использоваться комбинированный подход, использующий и программный
интерфейс CUDA, и DirectX/OpenGL.
Очевидно, что Intel много работает над тем, чтобы убедить
разработчиков в целесообразности использования трассировки лучей
в качестве главного метода визуализации. Недавно корпорация приобрела
Project Offset, компанию-разработчика игровых движков, и Havok,
разработчика физического движка. Вероятно, Intel представит собственный
игровой движок, использующий мощности процессора для расчетов
трассировки лучей, который будет передаваться бесплатно или продаваться
разработчикам. Кроме того, появление многоядерного процессора x86 с
мощными векторными блоками Intel Larrabee может серьезно изменить
будущее архитектуры ПК в целом и методы визуализации в реальном времени.
|