Компенсация потерь энергии в моделях BSDF с однократным рассеянием

11

Модели поверхностей, основанных на однократном рассеянии в микрофасете, такие как исходная модель Torrance-Sparrow BRDF или производные модели, такие как BSDF для шероховатых диэлектрических поверхностей, автор Walter et al. пренебрегать взаимным отражением света между микрообъемами, что приводит к потере энергии, вызывающей потемнение, особенно при более высоких значениях шероховатости.

Проблема может быть легко продемонстрирована с помощью теста печи. На следующих рисунках показано поведение моей реализации проводящего микроразмера BRDF с использованием модели Смита и распределения GGX для параметров шероховатости от 0,2 до 1,0 (коэффициент Френеля намеренно установлен равным 1, чтобы облегчить нахождение проблемы):

шероховатость 0,2 шероховатость 0,4 шероховатость 0,6 шероховатость 0,8 шероховатость 1,0

Испытание в печи для грубого диэлектрика (IoR 1,51) BSDF с использованием модели Смита и распределения микроснимков GGX для параметров шероховатости от 0,2 до 1,0:

шероховатость 0,2 шероховатость 0,4 шероховатость 0,6 шероховатость 0,8 шероховатость 1,0

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

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

В Disney BSDF есть параметризованный компонент, называемый «блеск» (в основном, глянцевая доля на основе Френеля), который можно использовать для компенсации потемнения по краям, но, как они упоминают в своем курсе Siggraph 2015, это очень специальный метод:

«... это очень приблизительно и не работает так же для других значений шероховатости ...»

Вышеупомянутый комментарий от Eric HEITZ в LuxRender форуме также предлагает использовать некоторую компенсацию хак, но, к сожалению, не вдаваться в подробности:

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

ivokabel
источник

Ответы:

8

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

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

Эрик Хейц
источник