суббота, 18 июня 2011 г.

Основанный на GPU важностный семплинг (Перевод) Часть 1

 


оригинальная статья: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch20.html
авторы:
Mark Colbert
University of Central Florida
Jaroslav Kivánek
Czech Technical University in Prague

20.1 Введение

Высококачественная визуализация поверхностей реального времени под освещение высокодинамичного ряда представляет собой бесценный ресурс для различных компьютерных графических приложений. Дизайн материала, дизайн освещения, архитектурная предварительная визуализиация и игры - лишь некоторые такие приложения. Техники предварительной фильтрации окружающего мира (Kautz et al. 2000) и другие частотные разрешения пространства, использующие вейвлеты (wavelets) (Wang et al. 2006) или сферические гармоники (Ramamoorthi and Hanrahan 2002) позволяют осуществлять визуализацию реального времени. Однако, их использование может стать слишком громоздким, так как они требуют огромного количества предварительных вычислений, или огромной кодовой базы для отражения блестящих поверхностей.
Как альтернативу, мы представляем технику для освещения блестящих объектов, использующую квадратуру Монте-Карло, требующую минимум предварительных вычислений и операций с отдельными шейдерами графического процессора. Таким образом, техника легко встраивается в почти любой продукт, требующий динамическое изменение материала или света в реальном времени. Рисунок 20-1 иллюстрирует пример наших успехов.
clip_image001
Рис. 20-1. Рендеринг стендфоского кролика реального времени с 40 сэмплами на пиксел.

20.2 Формулирование рендеринга

Целью рендеринга является расчет того, как много света от ближайшего окружения отразится в сторону виртуальной камеры в данной точке для каждого пиксела, как показано на рисунке 20-2. Чтобы конвертировать, входящий от одной частичной области свет, L i (u), в отраженный в направлении камеры свет, v, мы используем материальную функцию f, известную как двунаправленная функция распределения отражения (BDRF). Одной из BDRF является классическая модель отражения Фонга. Для подсчета всего отраженного света, L o (v), его частицы от каждой отдельной области, u, должны быть просуммированы (или интегрированы в пределе) вместе совместно с полусферой H:


Уравнение 1
clip_image002
clip_image003
Рисунок 20-2. Иллюстрация интеграла освещения.
Эта формула приводит нас к уравнению отражения или интегралу освещения. Здесь q и s углы между нормалью поверхности и направлением входящего света.
В освещении, основанном на изображении, входящий свет L i аппроксимирован окружающим отражением, где каждый тексель соответствует входящему направлению u и окклюзия проигнорирована. Однако, даже с этой аппроксимацией, численное интегрирование интеграла освещенности для одного пиксела картинки потребует перемножения с BDRF и суммирования тысячи текселей окружающего мира. Вычисление этой операции, вполне очевидно, слишком дорого для рендеринга реального времени.

20.2.1 Квадратура Монте-Карло

Мы не можем оценивать интеграл освещения для всех отдельных областей, поэтому мы используем случайное число областей и оцениваем интегрированную функцию, L I (u)f( u , v) cos q u, в этих областях для получения семпла или предварительных расчетов интеграла. Усредняя эти данные получаем аппроксимацию интеграла, которая и является сутью квадратуры Монте-Карло. На самом деле, если б мы имели бесконечный набор семплов, их усреднение было бы равно действительному значению интеграла. Однако, когда мы используем конечный набор семплов, среднее значение колеблется около настоящего решения и вносит шум в изображение, как показано на рисунке 20-5b (см. раздел 20-4). Один из путей уменьшения шума – выбор наиболее важных семплов, которые наилучшим образом аппроксимируют интеграл.

20.2.2 Важностный семплинг

Генерация равномерных случайных направлений не является лучшим методом для аппроксимации интеграла, если мы грубо думаем о поведении интегрированной функции. Для примера, если мы интегрируем блестящий материал и его ближайшее окружение, боле важно семплировать области вокруг отражающей поверхности (другими словами, зеркально отраженную область), потому что много отраженного света возникает именно из этих областей. Чтобы представить это математически, используется функция плотности вероятности (PDF) для того чтобы определить оптимальные области для семплинга. PDF является нормализованной функцией, где интеграл на всей областью функции равен 1, и пики представляют важные зоны для семплинга.
Однако, когда мы уклоняем направление семплинга, не все предварительные подсчеты интеграла равны, и таким образом мы должны взвесить их соответственно, когда будем усреднять все семплы. Например, один семпл низко-значимой области PDF, отражает большое число семплов при использовании равномерного семплинга. Подобно этому, один семпл высокозначимой области PDF отражает лишь малое число семплов при равномерном семплинге. Чтобы компенсировать этот недостаток PDF – пропорционального семплинга, мы изменяем каждый семпл, путем инвертирования PDF. Этим занимается оценщик Монте-Карло, который использует средний вес всех семплов:

Уравнение 2
clip_image004
Чтобы выбрать оптимальную PDF для интеграла освещенности, нам нужна точная аппроксимация продукта от BDRF материала до частного случая освещения. Однако, генерация семплов соответственно этому продукту довольно хорошо описана (Clarberg et al. 2005). К счастью, создание семплов соответственно одной BDRF довольно прямолинейно, и когда мы используем это в комбинации с фильтрацией семплов – см. раздел 20.4 – это показывает хорошие результаты.

20.2.3 Функции семплинга материала

20.2.3 Sampling Material Functions
Оттого что BDRF’ы (bidirectional reflectance distribution function) является частью интеграции, оны служат хорошим измерением в приведении семплинга к продуцировании адресов, которые лучше аппроксимируются интегралом . Здесь мы используем нормализованную BDRF как PDF для семплинга. Чтобы осуществить семплинг этого PDF, мы конвертируем случайное число пар в рассматриваемой области для BDRF. Для примера, формула 7 и 8, позднее в этом разделе, выполняют преобразование для отражающего лепестка BDRF Фонга. Если вам интересно, как выводятся такие формулы семплинга, продолжайте чтение.
Мы находим направления семплинга, конвертируя PDF в CDF(кумулятивную функцию распределения). Интуитивно, думая о CDF как о мэппинге между PDF-пропорциональным распределением и равномерным распределением. В дискретном случае, когда число семплов конечно, мы можем определить CDF штабелированием каждого семпла. Например, если мы разделяем все возможные адреса семплинга для рендеринга в четырех дискретных направлениях, где один из адресов семплинга S2, известный как более важный , тогда вероятности четырех семплов могут быть штабелированы совместно, как показано на рисунке 20-3
clip_image005
Рисунок 20-3. Дискретная кумулятивная функция распределения
В этом случае мы выбираем случайное число, так чтобы существовала равна вероятность того, что любое значение между 0 и 1 будет сгенерировано, тогда большее число отобразит важный семпл, S2, и таким образом мы будем семплировать этот адрес чаще.
Для непрерывных, одноразмерных PDF мы должны отобразить бесконечное число взвешенных PDF семплов для равномерного распределения чисел. Таким образом, мы можем сгенерировать случайное число чисел из равномерного распределения, и будет наиболее вероятно, что мы получим адреса важностного семепла, просто большее число случайных значений отображать для важностного семпла S2. Мэппинг выполняется подобной операцией штабелирования, которая представляется как интеграл бесконечного числа адресов семплов. Мы можем получить положение семпла s путем равномерного распределения, штабелируя все предыдущие взвешенные семплы, p(q) d q, до того как s превзойдет все остальные, путем интегрирования
Уравнение 3
clip_image006
Для получения PDF-пропорционального семпла из случайного числа, мы устанавливаем P(s) соответственно случайному числу х и решаем для s. В целом, мы обозначаем отображение случайного значения на адресе семпла, распределенного согласно PDF< как P-1(x).
Для примера, мы семплируем компонент блеска из BDRF Фонга (Lewis 1994). Компонент блеска принимает свет, отраженный через косинус falloff от зеркальной отражающей области, считаемый зеркальным отражением области рассмотрения v, по отношению к нормальной поверхности. Мы можем отобразить компонент блеска математически, как cos n q s,где q и s являются углами между областью семплинга и зеркальной поверхностью, а n освещенность поверхности. Чтобы преобразовать эти материальные функции в PDF, p(q s, f s), мы должны сперва нормализовать составляющую косинуса, для интегрирования:

Уравнение 4
clip_image007
Здесь q s и f s являются сферическими координатами адреса семплинга в координатной системе, где отражение происходит от оси z, как показано на рисунке 20-4. Экстренный синус появляется оттого, что мы работаем с сферическими координатами вместо внутренней параметризации областей дифференциальными телесными углами.
clip_image008
Рисунок 20-4. Координатный фрейм для генерации семпла в модели BDRF Фонга.
Чтобы сгенерировать 2х-мерную область семплинга (q s, f s), согласно этой PDF, наилучшим способом будет нахождение каждой плоскости области семплинга отдельным образом. Поэтому нам необходима PDF для каждой плоскости, поэтому мы можем применить формулу 3 для преобразования PDF в СDF и создания частной области семплинга. Чтобы выполнения этого, предельная вероятность q s области может быть отделена от p(q s, f s) путем интегрирования PDF по всей области f s:
Уравнение 5
clip_image009
Эта, одномерная PDF теперь может быть использована для генерации q s. Задавая значение q s, мы находим PDF для s, используя вероятность p( f s | q s ), определенную как
Уравнение 6
clip_image010
Две вероятностные функции преобразуются в CDF при помощи уравнения 3 и инвертированы для отображения пары независимых равномерных произвольных значений (x1, x2) для области семплинга (q s, f s) [1]:
Уравнение 7
clip_image011
Уравнение 8
clip_image012
Чтобы работать в декартовой системе координат, сферические координаты просто преобразуются.
Уравнение 9
clip_image013
Следует запомнить, что x s, y s и z s определены в координатной системе, где отражение происходит относительно оси z (см. Рисунок 20-4). Для семплинга окружающего мира, область семплинга должна быть преобразована в область всего мира. Эта ротация производится путем применения двух линейных трансформаций: тангенциальная область – мировая область и отраженная область – тангенциальная область. Тангенциальная область – мировая область выводится из локального тангенса, двунормального и нормального на поверхностной точке. Отраженная область – тангенциальная область трансформация подразумевается, потому что только отраженные области определены в пространстве. Таким образом мы вводим выравнивающий, выровненный по оси вектор, чтобы произвести это преобразование.
Подобные методы семплинга могут быть использованы и для других материальных моделей, таких как BDRF Лафортюн (Lafortune et al. 1997) или Ward's anisotropic BRDF (Walter 2005). Pharr and Humphreys 2004 дает больше подробностей о выводе формул семплинга для различных BDRF.

20.3 Квазислучайные последовательности низкого несоответствия

Проблема генерации случайного выбора направлений, используя псевдослучайные числа, заключается в том, что направления не очень хорошо разбросаны, что приводит к низкой точности оценивания в уравнении 2. Мы можем улучшить точность путем замены псевдослучайных чисел квазислучайными последовательностями низкого несоответствия, которые гарантируют хороший разброс направлений. Одна из таких последовательностей известна, как последовательность Хаммерсли. Случайная пара хi в двумерной последовательности Хаммерсли со значениями N определяется как:
Уравнение 10
clip_image014
где радикальная обратная функция F 2 (i) возвращает число, полученное отражением цифр двоичного представления i относительно запятой, как показано в Таблице 20-1.
clip_image015
Таблица 20- 1. Радикальная обратная последовательность


Другая проблема, касающаяся как псевдослучайных чисел, так и последовательностей низкого несоответствия заключается в том, что они вычислительно дороги для генерации случайного выбора направления на GPU. Вместо этого, мы предварительно считаем номера на процессоре и храним их как символы в шейдерах или передаем их в постоянные регистры для оптимизации алгоритма. Как следствие, та же последовательность квазислучайных чисел используется для интеграции, вычисляя цвет каждого пикселя. Использование таких детерминированных числовых последовательностей, в сочетании с относительно низким числом сэмплов производит эффект ступенчатости, как показано на Рисунке 20-5A, который мы подавляем путем фильтрации сэмплов, как указано в следующем разделе.

Рисунок 20-5A. Важностный семплинг с 40 семплами на пиксель.

Комментариев нет:

Отправить комментарий