Программирование, 2021, № 3, стр. 39-48

МЕТОД ПРОГРЕССИВНЫХ ОБРАТНЫХ ФОТОННЫХ КАРТ

А. Д. Жданов a*, Д. Д. Жданов a**

a Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики
197101 Санкт-Петербург, Кронверкский пр., д. 49, Россия

* E-mail: adzhdanov@itmo.ru
** E-mail: ddzhdanov@mail.ru

Поступила в редакцию 19.12.2020
После доработки 25.12.2020
Принята к публикации 14.01.2021

Полный текст (PDF)

Аннотация

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

1. ВВЕДЕНИЕ

Реалистичный рендеринг является составной частью систем современной реалистичной визуализации, виртуального прототипирования и виртуальной реальности. Кроме того, он используется при решении широкого круга прикладных задач, включающих в себя формирование реалистичных изображений, моделирование оптических эффектов, виртуальное прототипирование сложных оптических систем и т.д. [1].

Проблема реалистичного рендеринга сводится к расчету значения яркости наблюдаемой поверхности сцены в каждой точке изображения. В 1985 г. James Kajia предложил [2] метод расчета видимой яркости в виде решения уравнения рендеринга, проиллюстрированного на рис. 1:

(1)
$\begin{gathered} L(\vec {p},{{{{\vec {v}}}}_{r}}) = \tau (t)\frac{{n_{r}^{2}}}{{n_{0}^{2}}} \times \\ \times \left( {{{L}_{0}}(\vec {p},{{{{\vec {v}}}}_{r}}) + \int\limits_{}^{2\pi } {\int {{{L}_{i}}(\vec {p},{{{{\vec {v}}}}_{i}})f(\vec {p},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{r}}){\text{cos}}(\vec {n},{{{{\vec {v}}}}_{i}})d\omega } } } \right) \\ \end{gathered} $
Рис. 1.

Расчет значения яркости точки поверхности сцены с помощью уравнения рендеринга.

При разработке алгоритмов реалистичного рендеринга за основу берутся физически-корректные законы распространения и преобразования светового излучения. Поскольку уравнение рендеринга имеет аналитическое решение только для ограниченного количества сочетаний свойств оптических материалов и геометрических форм, был разработан ряд численных методов для решения этого уравнения. Наиболее подходящие методы основаны на стохастической трассировке лучей с использованием методов Монте-Карло. Это методы прямой, обратной и двунаправленной трассировки лучей. Эти методы используют различные решения для расчета компонент яркости прямого виденья (${{L}_{0}}\left( {\vec {p},{{{{\vec {v}}}}_{r}}} \right)$) и яркостей компонент прямого, каустического и вторичного освещения ($\int\limits_{}^{2\pi } {\int {{{L}_{i}}(\vec {p},{{{{\vec {v}}}}_{i}})f(\vec {p},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{r}}){\text{cos}}(\vec {n},{{{{\vec {v}}}}_{i}})d\omega )} } $, создаваемого поверхностью с двунаправленной функцией рассеивания (ДФР) $f\left( {\vec {p},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{r}}} \right)$. Прямое и каустическое освещение представляет собой первый член этой бесконечной рекурсии и разница между ними заключается в том, что каустическое освещение осуществляется через поверхности, не имеющие рассеивающих свойств, или градиентные среды. При этом освещенность поверхности масштабируется на зеркальный коэффициент пропускания от источника света до наблюдаемой поверхности τ(to). При наблюдении яркость источника света просто масштабируется на зеркальный коэффициент пропускания τ(tr) до поверхности наблюдения ($\tau ({{t}_{r}}){{L}_{0}}(\vec {p},{{{\vec {v}}}_{r}})$) – в случае непосредственного наблюдения источника света, или ($\tau ({{t}_{r}})\int {\int\limits_{}^{2\pi } {{{L}_{i}}(\vec {p},{{{{\vec {v}}}}_{i}})f(\vec {p},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{r}}){\text{cos}}(\vec {n},{{{{\vec {v}}}}_{i}})d\omega )} } $ – в случае яркости прямого, каустического или вторичного освещения.

Основными методами расчета видимой яркости являются методы прямой, обратной и двунаправленной трассировки лучей [35]. Эти методы позволяют получить несмещенное уравнение рендеринга. Однако вычислительная эффективность методов, основанных на исключительно методах прямой или обратной трассировки лучей, может быть крайне низка для сцен, имеющих сложное вторичное и каустическое освещение. Классические методы двунаправленной трассировки лучей могут обеспечить эффективный расчет несмещенного значения яркости вторичного освещения сцен. Однако для методов двунаправленной трассировки лучей неразрешимой задачей является расчет яркости каустического освещения, особенно в сценах, содержащих источники света малого размера. Поэтому наиболее универсальными методами расчета физически корректного значения яркости вторичного и каустического освещения являются методы, основанные на использовании фотонных карт [6].

В 1996 году Henrik Wann Jensen представил алгоритм расчета глобальной освещенности с помощью фотонных карт. Алгоритм рендеринга с использованием фотонных карт [7] состоит из следующих трех основных шагов: на первом шаге из источников света испускаются лучи, переносящие световой поток Δ$\Phi ({{{\vec {v}}}_{i}})$, распространяющиеся по сцене и формирующие распределение фотонов на поверхностях сцены; на втором шаге на основе полученного распределения фотонов формируются фотонные карты, обеспечивающие быстрый доступ к фотонам в заданной области сцены; на последнем шаге наблюдатель считывает распределение яркости с фотонов, наблюдаемых из камеры и покрываемых сферой интегрирования радуса r, зависящего от длины пути от камеры до точки сбора яркости. Яркость наблюдения складывается из яркостей, создаваемых всеми фотонами, наблюдаемыми на трассе обратного луча:

(2)
${{L}_{{(id,c)}}}(\vec {p},{{{\vec {v}}}_{r}}) \approx \frac{1}{{\pi {{r}^{2}}}}\sum\limits_{i = 1}^K {f(\vec {p},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{r}})} \Delta \Phi ({{{\vec {v}}}_{i}})$

Данный метод является смещенным, и для снижения ошибки дискретизации, вызванной конечным радиусом сферы интегрирования r, яркость прямого освещения вычисляется методом многократной выборки по значимости [8] между значениями яркости, вычисленными методами выбора случайных точек на источниках света (находящихся на расстоянии di до точки наблюдения и имеющих веса wi, 1), и случайным выбором направлений рассеивания на поверхности (имеющих веса wi, 2):

(3)
$\begin{gathered} {{L}_{{(d)}}}(\vec {p},{{{{\vec {v}}}}_{r}}) = \\ = \frac{1}{N}\mathop \sum \limits_{i = 1}^N \left( {{{w}_{{i,1}}}\, \cdot \,f(\vec {p},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{r}})\, \cdot \,\frac{{I({{{{\vec {v}}}}_{i}}){\text{cos}}({{{\vec {n}}}_{i}},{{{{\vec {v}}}}_{i}})}}{{d_{i}^{2}}}\, + \,{{w}_{{i,2}}}\, \cdot \,L(\vec {p},{{{{\vec {v}}}}_{i}})} \right) \\ \end{gathered} $

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

Метод прямых фотонных карт и метод двунаправленной трассировки лучей получили дальнейшее расширение в методе соединения и слияния вершин [9] (Vertex Connection and Merging), который призван объединить метод фотонных карт и двунаправленной трассировки лучей. В этом методе прямые фотонные карты используются для формирования путей для учета каустической составляющей освещения. Данный метод частично снимает проблему смещенности, однако проблема большого объема фотонных карт сохраняется.

Настоящее исследование посвящено анализу методов расчета глобального освещения и реалистичного рендеринга с использованием фотонных карт. В рамках проведенного исследования для вычисления физически корректных значений яркости вторичного и каустического освещений авторы предлагают использовать обратные фотонные карты [10, 11], формируемые стохастическими лучами, испускаемыми из камеры в сцену.

В данной работе рассматриваются реализация метода прогрессивных обратных фотонных карт и методов распараллеливания вычислений для эффективного расчета яркостей вторичного и каустического освещений.

2. ОБРАТНЫЕ ФОТОННЫЕ КАРТЫ

Метод прогрессивных обратных фотонных карт практически зеркален методу прогрессивных прямых фотонных карт. Единственное отличие – это то, что вместо карты освещения строится карта наблюдения. Однако это отличие приводит к существенным изменениям алгоритмов трассировки лучей и накопления яркостей вторичного и каустического освещений. На рис. 2 представлена основная идея метода рендеринга с использованием прогрессивных обратных фотонных карт.

Рис. 2.

Метод прогрессивных обратных фотонных карт.

С точки зрения расчета яркости вторичного и каустического освещения принципиальная разница между сферами интегрирования, построенными на трассах прямых лучей, и сферами интегрирования, построенными на трассах обратных лучей, отсутствует. Значение радиуса сферы интегрирования – это область, определяющая ошибку дискретизации, для которой поток, испущенный фотоном, преобразуется в освещенность. Радиус этой области выбирается пропорционально размеру пикселя, видимому на расстоянии от наблюдателя до этой области (точки расчета яркости). Коэффициент пропорциональности определяется в зависимости от компоненты яркости, для которой производится расчет. Так для расчета яркости прямого освещения данный коэффициент не превышает 1, для расчета яркости каустического освещения данный коэффициент варьируется от 2 до 1, а для расчета яркости вторичного освещения этот коэффициент может достигать 10. Кроме того, данный коэффициент пропорциональности может варьироваться в процессе вычислений (как правило, он уменьшается в процессе выполнения итераций или устанавливается в зависимости от локальной плотности распределения фотонов). Выбор значения радиуса сферы интегрирования в зависимости от рассчитываемой компоненты освещения проиллюстрирован на рис. 3. Поскольку для прямых фотонных карт радиус сферы интегрирования заранее не известен, фотонные карты строятся для множества точек (координат световых фотонов на поверхностях сцены), которые потом пересекаются сферой интегрирования, формируемой на обратном луче. В случае формирования обратных фотонных карт радиус сферы интегрирования каждого из обратных фотонов известен заранее, что позволяет строить обратную фотонную карту для множества сфер, а не координат точек. Замена точек на сферы интегрирования в фотонных картах позволяет значительно ускорить процесс нахождения фотонов, покрываемых сферой интегрирования.

Рис. 3.

Выбор радиуса сферы интегрирования значения яркости в зависимости от компоненты освещения.

При этом является очевидным, что в общем случае для расчета значения яркости компоненты прямого видения нет необходимости в формировании фотонной карты. Однако, в ряде случаев фотонная карта для расчета яркости компоненты прямого освещения является эффективной и формируется только в случае, если сцена содержит источники света, которые не имеют методов расчета яркости и интенсивности излучения, или число источников света велико. Примером источника света, не имеющего методов расчета яркости и интенсивности, может служить источник света, заданный набором лучей, который формируется в результате измерений реальных источников света или в результате моделирования сложных осветительных систем [12].

При использовании обратных фотонных карт и методов обратной стохастической трассировки лучей также необходимо учесть специфику моделирования процесса рассеивания обратных лучей на диффузных поверхностях сцены. Если поверхность имеет двунаправленную функцию рассеивания $f(\vec {p},{{{\vec {v}}}_{i}},{{{\vec {v}}}_{r}}),$ то в соответствии с принципом обратимости Геймгольца [13] должно выполняться следующее тождество:

(4)
$f(\vec {p},{{{\vec {v}}}_{i}},{{{\vec {v}}}_{r}}) = f(\vec {p},{{{\vec {v}}}_{r}},{{{\vec {v}}}_{i}})$

Такое тождество справедливо только для ограниченного ряда моделей оптических свойств поверхности, как, например, Ламберта, Фонга или Блинн-Фонга. Для большинства моделей оптических свойств поверхностей (например, ДФР, определяемая функцией Гаусса или полученная в результате измерений оптических свойств поверхности с использованием гониофотометров [14] или результатов моделирования [15]), используемых в сценах, данное тождество не выполняется. Это означает, что результат, полученный методом прямой трассировки лучей, будет отличаться от результата, в котором использовался метод обратной трассировки лучей. Поскольку за основу принимается результат, полученный методом прямой трассировки лучей, что соответствует измерениям ДФР, полученным на гониофотометре, то результат, полученный методом обратной трассировки лучей, должен быть приведен в соответствие с результатом прямой трассировки лучей.

Для обеспечения обратимости по Геймгольцу метода обратной трассировки лучей при рассеивании обратного луча на диффузной поверхности сцены следует использовать выборку по значимости направления рассеивания в соответствии с ДФР для прямого хода луча с последующей компенсацией “энергии” обратного луча на величину ДФР для прямого хода выбранного направления луча.

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

Рис. 4.

Отличие метода расчета и накопления яркости при использовании прямых и обратных фотонных карт.

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

(5)
$\begin{gathered} {{L}_{{1(id,c)}}}({{{\vec {p}}}_{1}},{{{{\vec {v}}}}_{{1,r}}}) = \frac{1}{{\pi r_{1}^{2}}}f({{{\vec {p}}}_{1}},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{{1,r}}})\Delta \Phi ({{{{\vec {v}}}}_{i}}) \\ {{L}_{{2(id,c)}}}({{{\vec {p}}}_{2}},{{{{\vec {v}}}}_{{2,r}}}) = \frac{1}{{\pi r_{2}^{2}}}f({{{\vec {p}}}_{2}},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{{2,r}}})\Delta \Phi ({{{{\vec {v}}}}_{i}}) \\ ... \\ {{L}_{{K(id,c)}}}({{{\vec {p}}}_{K}},{{{{\vec {v}}}}_{{K,r}}}) = \frac{1}{{\pi r_{K}^{2}}}f({{{\vec {p}}}_{K}},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{{K,r}}})\Delta \Phi ({{{{\vec {v}}}}_{i}}) \\ \end{gathered} $

Поскольку трассируется большое количество прямых лучей, то некоторый  j-й пиксель изображения, которому соответствует сфера интегрирования с центром в точке ${{\vec {p}}_{j}}$, направлением наблюдения ${{{\vec {v}}}_{{j,r}}}$ и радиусом rj, соберет яркость от всех фотонов, попавших в эту сферу интегрирования. Тогда формула яркости глобального освещения примет следующий вид:

(6)
${{L}_{{j(id,c)}}}({{\vec {p}}_{j}},{{{\vec {v}}}_{{jr}}}) = \frac{1}{{\pi r_{j}^{2}}}\sum\limits_{i = 1}^K {f({{{\vec {p}}}_{j}},{{{{\vec {v}}}}_{i}},{{{{\vec {v}}}}_{{j,r}}})} \Delta {{\Phi }_{i}}({{{\vec {v}}}_{i}})$

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

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

Рис. 5.

Накопление списков обратных фотонов в дополнительные прямые фотонные карты и последующая их выборка при многопоточном рендеринге.

3. РЕНДЕРИНГ МЕТОДОМ ПРОГРЕССИВНЫХ ОБРАТНЫХ ФОТОННЫХ КАРТ

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

Рис. 6.

Блок-схема алгоритма рендеринга методом прогрессивных обратных фотонных карт.

1. На первом шаге камера испускает случайные обратные лучи, направленные от наблюдателя на точки изображения, выбранные с плотностью вероятности, пропорциональной распределению оценки ошибки яркости по изображению. В пределах пикселя также происходит случайный выбор координат луча, что обеспечивает равномерное усреднение яркости в точке изображения. Кроме того, распределение ошибки по изображению предварительно подвергается Гауссовой фильтрации, что позволяет избежать резких скачков количества лучей, выпущенных с соседних точек изображения. Лучи трассируются в сцене до заданной глубины диффузных событий (заданного порядкового номера диффузного события на трассе луча, как правило, первого или второго). Глубина диффузной трассы обратного луча может выбираться адаптивно для каждой точки изображения на основании оценки вариации яркости в точке диффузного события и зависит от таких параметров, как расстояние до источников света и форма ДФР в точках сбора яркости вторичного и каустического освещения. В процессе обратной трассировки лучей производится расчет яркости прямого освещения с использованием метода многократной выборки по значимости в соответствии с формулой (3). В итоге обратной трассировки лучей сохраняются яркости прямого виденья и прямого освещения, а также данные лучей в финальных точках их трасс на поверхностях с диффузными свойствами (для оценки яркости вторичного освещения) и данные лучей во всех точках их трасс на поверхностях с диффузными свойствами (для оценки яркости каустического освещения и прямого освещения от источников, если оно не было вычислено ранее на этом шаге).

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

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

4. На четвертом шаге происходит обработка дополнительных прямых фотонных карт и в соответствии с формулой (6) вычисляется и накапливается яркость каустического и вторичного освещения. Полученная яркость сохраняется в точках изображения, связанных со сферами интегрирования, в которые попал световой фотон. Третий и четвертый шаги повторяются несколько раз до тех пор, пока не будет выпущено требуемое число прямых лучей.

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

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

4. ОЦЕНКА ТОЧНОСТИ РЕЗУЛЬТАТОВ МОДЕЛИРОВАНИЯ

Стохастическая природа вычисления яркости изображения является причиной возникновения ошибки ее вычисления. В ряде случаев возможность оценки ошибки вычисления значений яркости точек изображения позволяет ускорить сходимость процесса рендеринга за счет, например, формирования “оптимальной” плотности распределения вероятности лучей, испускаемых из камеры в точки изображения. Кроме того, оценка ошибки значения яркости изображения может быть использована для фильтрации изображения. Поскольку процесс вычисления величины яркости изображения носит случайный характер, то для оценки ее ошибки в точке изображения может быть использована формула стандартной ошибки среднего. Это формула может быть применена как для оценки полной ошибки значения яркости точки изображения, так и для оценки ошибки отдельных компонент яркости (яркостей первичного, вторичного и каустических освещений). Компоненты ошибки по отдельным составляющим яркости удобно использовать в процессе фильтрации изображений, например, когда необходимо выполнить фильтрацию только одной (диффузной) компоненты яркости изображения. Таким образом, оценка ошибки среднего при расчете значения яркости в i-й точке изображения методом прогрессивных обратных фотонных карт имеет следующий вид:

(7)
$SEM_{i}^{2} = \frac{1}{N}\left( {\frac{{\sum\limits_{j = 1}^N {L_{{i,j}}^{2}} }}{N} - {{{\left( {\frac{{\sum\limits_{j = 1}^N {L_{{i,j}}^{{}}} }}{N}} \right)}}^{2}}} \right),$
где N – количество фаз расчета яркости, Li, j – яркость i-й точки изображения, вычисленной в процессе j-й фазы рендеринга. Видно, что для оценки погрешности в точке изображения достаточно дополнительно сохранить только накопленный квадрат яркостей точки изображения $L_{{i,j}}^{2}$ по фазам расчета и, при необходимости, накопленные квадраты всех компонент яркости точки изображения.

Средняя точность по всему изображению с разрешением w × h будет вычисляться по формуле:

(8)
$\delta = \sqrt {\frac{{\sum\limits_{i = 1}^{w \cdot h} {SEM_{i}^{2}} }}{{\sum\limits_{i = 1}^{w \cdot h} {L_{i}^{2}} }}} $

Данная величина может информировать пользователя о достигнутой точности рендеринга и служить одним из критериев для завершения процесса рендеринга.

5. РЕАЛИЗАЦИЯ И РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ

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

• Cornell Box – стандартная тестовая сцена компьютерной графики;

• Room2 – интерьерная сцена;

• Light Guides – сцена с пятью светопроводящими трубками, расположенными в виртуальном прототипе Judge II Viewing Booth. Для данной сцены были рассмотрены два варианта расположения источников света: в оптическом контакте с торцами световодов (вариант 1) и с минимальным воздушным зазором с торцами световодов (вариант 2).

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

Рис. 7.

Изображения тестовых сцен.

Таблица 1.

Сравнительная таблица числа прямых фотонов, формируемых одним прямым лучом, с числом обратных фотонов, формируемых одним обратным лучом для тестовых сцен

Сцена Прямых фотонов на прямой луч Обратных фотонов на обратный луч Уменьшение размера фотонной карты Ускорение рендеринга
Cornell Box 3.45 1.59 2.17 1.6
Room 2 7.6 1.93 3.94 1.8
Light guides (вариант 1) 7.56 3.09 2.45 2.2
Light guides (вариант 2) 5.6 3.09 1.81 2.1

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

Рис. 8.

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

Рис. 9.

Изображение, полученное в результате рендеринга методом прогрессивных обратных фотонных карт за один час вычислений.

6. ЗАКЛЮЧЕНИЕ

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

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

Список литературы

  1. Волобой А.Г., Галактионов В.А., Жданов А.Д., Гарбуль А.А., Соколов В.Г., Потемин И.С., Жданов Д.Д. Методы фотореалистичной визуализации изображений, формируемых оптическими системами дополненной реальности // Программирование. 2018. № 4. С. 11–25.

  2. Kajiya J.T. The rendering equation // Proceedings of the 13th annual conference on Computer graphics and interactive techniques. 1986. P. 143–150.

  3. Kay T.L., Kajiya J.T. Ray tracing complex scenes // ACM SIGGRAPH computer graphics. 1986. V. 20. № 4. P. 269–278.

  4. Chattopadhyay S., Fujimoto A. Bi-directional ray tracing // Computer Graphics 1987. Tokyo: Springer, 1987. P. 335–343.

  5. Lafortune E.P., Willems Y. Bi-directional path tracing // Compugraphics’ 93. 1993. P. 145–153.

  6. Jensen H.W. Global illumination using photon maps // Eurographics workshop on Rendering techniques. Vienna: Springer, 1996. P. 21–30.

  7. Jensen H.W., Christensen P. High quality rendering using ray tracing and photon mapping // ACM SIGGRAPH 2007 courses. 2007. 116 p.

  8. Veach E., Guibas L.J. Optimally combining sampling techniques for Monte Carlo rendering // Proceedings of the 22nd annual conference on Computer graphics and interactive techniques. 1995. P. 419–428.

  9. Georgiev I., Krivánek J., Davidovic T., Slusallek P. Light transport simulation with vertex connection and merging // ACM Trans. Graph. 2012. V. 31. № 6. P. 192:1–192:10.

  10. Havran V., Herzog R., Seidel H.P. Fast final gathering via reverse photon mapping // Computer Graphics Forum. 2005. V. 24. № 3. P. 323–332.

  11. Hachisuka T., Ogaki S., Jensen H.V. Progressive photon mapping // ACM SIGGRAPH Asia 2008 papers. 2008. P. 1–8.

  12. Жданов Д.Д., Алейников А.А., Жданов А.Д., Деря-бин Н.Б. Построение модели непрерывного источника света, заданного фиксированным набором лучей // Программирование. 2016. № 6. С. 6–14.

  13. Snyder W.C. Reciprocity of the bidirectional reflectance distribution function (BRDF) in measurements and models of structured surfaces // IEEE Transactions on Geoscience and Remote Sensing. 1998. V. 36. № 2. P. 685–691.

  14. Волобой А.Г., Галактионов В.А., Ершов С.В., Летунов А.А., Потемин И.С. Аппаратно-программный комплекс для измерения светорассеивающих свойств поверхностей // Информационные технологии и вычислительные системы. 2006. № 4. С. 24–39.

  15. Sokolov V.G., Zhdanov D.D., Potemin I.S., Bogdanov N.N., Zhdanov A.D., Denisov E.U. Reconstruction of BSDF based on optimization of microrelief normal distribution // GraphiCon 2017 – 27th International Conference on Computer Graphics and Vision. 2017. P. 37–41.

Дополнительные материалы отсутствуют.