- Извините за длинный пост, но я предпочитаю делать так, потому что « Дьявол кроется в деталях » :)
Я пишу трассировщик пути с нуля, и он отлично работает для идеально диффузных (ламбертовских) поверхностей ( т. Е. Тест печи показывает - по крайней мере визуально), что он энергосберегающий, и отрисованные изображения соответствуют изображениям, созданным с помощью рендерера Mitsuba для того же самого параметры). Сейчас я реализую поддержку зеркального термина оригинальной модели микроснимков Cook-Torrance, чтобы визуализировать некоторые металлические поверхности. Тем не менее, кажется, что этот BRDF отражает больше энергии, чем получено. Смотрите примеры изображений ниже:
Изображение выше: эталонное изображение Мицубы (предполагается, что оно правильное): трассировка пути с прямой выборкой света, важная выборка по полушарию, максимальная длина пути = 5, 32 многослойных спп, коробочный фильтр, шероховатость поверхности = 0,2, RGB.
Изображение выше: Фактическое визуализированное изображение: трассировка пути методом грубой силы, выборка из равномерного полушария, максимальная длина пути = 5, 4096 многослойных видов на квадратный дюйм, коробочный фильтр, шероховатость поверхности = 0,2, RGB. Несмотря на некоторые различия в настройках рендеринга, ясно, что визуализированное изображение не будет сходиться к показанной ранее ссылке.
Я склонен думать, что это не проблема реализации, а проблема, касающаяся правильного использования модели Кука-Торранса в структуре уравнения рендеринга. Ниже я объясняю, как я оцениваю BRDF, и я хотел бы знать, правильно ли я это делаю, и если нет, то почему.
Прежде чем углубляться в мельчайшие подробности, обратите внимание, что средство визуализации довольно простое: 1) реализует только алгоритм прямой трассировки грубой силы - нет прямой выборки света, нет двунаправленной трассировки пути, нет MLT; 2) все выборки в полушарии выше точки пересечения равномерны - выборка вообще не важна, ни для диффузных поверхностей; 3) лучевой путь имеет фиксированную максимальную длину 5 - русская рулетка отсутствует; 4) излучение / отражательная способность сообщаются через кортежи RGB - нет спектральной визуализации.
Микрофас модель Cook Torrance
Теперь я попытаюсь построить путь, по которому я пошел, чтобы реализовать выражение для оценки зеркального BRDF. Все начинается с уравнения рендеринга , где р есть точка пересечения на поверхности , w o - вектор просмотра, w i
Вышеупомянутый интеграл ( то есть член отражения уравнения рендеринга) можно аппроксимировать с помощью следующей оценки Монте-Карло гдеp- функция плотности вероятности (PDF), которая описывает распределение векторов выборкиwk.
Для фактического рендеринга должны быть указаны BRDF и PDF. В случае зеркального члена модели Кука-Торранса я использую следующий BRDF где D=1
Было бы обязательно использовать выборку важности в случае рендеринга гладких зеркальных поверхностей. Однако я моделирую только достаточно шероховатые поверхности ( ), поэтому я решил какое-то время придерживаться равномерной выборки (за счет более длительного времени рендеринга). В этом случае PDF имеет вид p ( w k ) = 1 Подставляя равномерный PDF и BRDF Кука-Торранса в оценку Монте-Карло (обратите внимание, чтоwiзаменяетсяслучайной величинойнаwk), я получаю 1
Итак, это выражение, которое я оцениваю, когда луч попадает на зеркальную поверхность, отражательная способность которой описана в BRDF Кука-Торранса. Это выражение, кажется, отражает больше энергии, чем получено. Я почти уверен, что с этим что-то не так (или в процессе деривации), но я просто не могу это определить.
Любая помощь очень приветствуется! Спасибо!
ОБНОВИТЬ
ОБНОВЛЕНИЕ 2
Как указывает PeteUK , авторство формулировки Френеля, представленное в оригинальном тексте моего вопроса, было ошибочно приписано Кук и Торранс. Формула Френеля, использованная выше, на самом деле известна как приближение Шлика и названа в честь Кристофа Шлика. Первоначальный текст вопроса был соответствующим образом изменен.