Технологии

Технология воксельной глобальной иллюминации
divider

Технология VXGI

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

Правильное моделирование освещения является одной из самых вычислительно сложных задач в графике. С выходом архитектуры Maxwell нашей целью стало расширить возможности GPU для выполнения расчетов почти фотореалистичного освещения в реальном времени.

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

 

Сцена только с прямым освещением

Сцена только с прямым освещением.

 

Сцена, полученная при использовании NVIDIA VXGI

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

 

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

В 2011 году инженеры NVIDIA разработали и продемонстрировали инновационный подход к вычислению подобного типа глобальной иллюминации на GPU в реальном времени. Эта новая технология глобального освещения использует воксельную сетку для захвата информации об освещении в каждой точке сцены, а трассировка сцены осуществляется конусами для расчета эффекта отраженного света. Кирилл Крассин (Cyril Crassin) из NVIDIA рассказывает об этой технике в этой статье, а видео с GTC 2012 можно посмотреть здесь.

 

При создании технологического демо “Elemental” на движке Unreal Engine 4 от студии Epic Games использовалась воксельная коническая трассировка, чтобы добиться потрясающего глобального освещения

При создании технологического демо “Elemental” на движке Unreal Engine 4 от студии Epic Games использовалась воксельная коническая трассировка, чтобы добиться потрясающего глобального освещения.

 

С тех пор NVIDIA работала над разработкой нового поколения технологии VXGI, которая бы объединили в себе новые программные алгоритмы и специальное аппаратное ускорение, поддерживаемое на архитектуре Maxwell.

Сцена Cornel Box

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

 

Изображение, полученное с помощью технологии рендеринга NVIDIA iray

 

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

Цель VXGI – работа в реальном времени, но полноценная трассировка подобной сцены требует слишком большого объема вычислений, поэтому требуются некоторые упрощения.

 

Непрозрачное воксельное отображение той же сцены

 

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

 

Вычисление цвета и насыщенности вокселей, на которые падает свет, с использованием современных техник расчета прямого освещения

 

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

 

Отображение света, отраженного от поверхности, освещенной прямым источником света

 

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

 

Объедините все виды освещения, и вы получите невероятно реалистичную сцену

 

Когда мы объединяем все виды освещения, то получаем невероятно реалистичные сцены. Однако ключевым моментом является то, что используя VXGI, мы можем делать это в реальном времени.