Есть ли простое математическое решение для выборки освещения области диска? (Трассировка лучей) - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь реализовать различные типы источников света в моем трассировщике лучей, кодированном в C. Я успешно реализовал точечные, точечные, направленные и прямоугольные области источники света.

Для прямоугольная область света Я определяю два вектора (U и V) в пространстве и использую их для перемещения в виртуальный прямоугольник (с разделителями), который они образуют. В зависимости от интенсивности света я беру несколько образцов в прямоугольнике, затем вычисляю количество света, достигающего точки, как если бы каждый образец был одним точечным источником света. rectangular light samples

С помощью прямоугольников очень легко найти положение различных образцов, но все становится сложнее, когда я пытаюсь сделать то же самое с подсветкой диска . Я нашел немного документации об этом, и большинство из них уже используют готовые функции для этого. Единственная интересная вещь, которую я нашел, - это документ (https://graphics.pixar.com/library/DiskLightSampling/paper.pdf), но я не могу его использовать.

Не могли бы вы помочь мне достичь аналогичного результата (на следующем рисунке) с векторомоперации (например, наличие происхождения, ориентации, радиуса диска и количества образцов) Disk light samples

Любой совет или документация по этому вопросу мне очень помог бы.

...