Оптимизация метода двунаправленной трассировки путей для моделирования оптического эксперимента на графическом процессоре
Двунаправленная трассировка путей (ДНТП) – алгоритм синтеза изображений, который основан на численном решении уравнения визуализации. Базовая идея алгоритма состоит в единовременном испускании лучей из источника света и диафрагмы виртуальной камеры. ДНТП обрабатывает каустики и эффекты вторичного освещения значительно эффективнее обычной (однонаправленной) трассировки путей (ТП). Хотя ДНТП допускает реализацию на GPU, данная техника является довольно ресурсоемкой. Объем потребляемой памяти существенно возрастает по сравнению с обычной ТП (более 20 раз для каждого семпла) и зависит от максимальной глубины трассировки. Вместе с тем, эффективная утилизация ресурсов GPU достигается для нескольких десятков тысяч параллельных потоков, что требует значительного объема памяти. Однако, современные GPU имеют ограниченные ресурсы памяти, которые следует экономно использовать для хранения 3D геометрических моделей, ускоряющей структуры, текстурных карт и других данных. В настоящей работе предложена облегченная модификация ДНТП, которая специально оптимизирована для массивно-параллельных архитектур с ограниченной памятью, таких как GPU. По объему вычислений модифицированный алгоритм сопоставим с обычной трассировкой путей. Вместе с тем, данный алгоритм сохраняет некоторые преимущества стандартной ДНТП и позволяет эффективно обрабатывать вторичное освещение и каустики. Данная техника визуализации, которую условно обозначим «усеченной» двунаправленной трассировкой путей, генерирует изображение за два независимых прохода (могут выполняться в любом порядке): · Выполняется обратная трассировка от объектива виртуальной камеры. Путь строится за счет поэтапного присоединения новых вершин и завершается методом «русской рулетки». Каждая вершина y i соединяется теневым лучом со случайной точкой z на источнике света, за счет чего формируется явная траектория переноса света y 0 … y i z. Если в процессе расширения пути очередная вершина y i оказалась на источнике света, то промежуточная последовательность вершин y 0 … y i образует неявную траекторию переноса света. · Выполняется прямая трассировка от выбранного источника света, в процессе которой каждая вершина пути z i явно соединяется со случайной точкой y на объективе камеры (будем называть такие пути световыми). Вклады путей, сгенерированных различными стратегиями, комбинируются в одну несмещенную Монте-Карло оценку с помощью многократной выборки по значимости. В работе предложена эффективная процедура вычисления обратных весовых функций путей на основе энергетической эвристики. Оптимальные веса вычисляются с использованием только одной скалярной вещественной переменной на путь независимо от его длины, что в десятки раз увеличивает число «легковесных» потоков на GPU. Более того, новый алгоритм позволяет снять ограничения на синтез несмещенных изображений. Результаты экспериментов показывают, что «усеченный» алгоритм работает значительно эффективнее обычной ТП, особенно на сценах с преобладанием вторичного освещения и каустиками.