Путать с реализациями PBR

13

Я открываю для себя удивительный мир математики и сталкиваюсь с огромной стеной с PBR и именами, поэтому у меня есть несколько вопросов: насколько я понимаю, BRDF описывает, как материал реагирует на свет (поступающий прямой свет и отражения). Но в «Кук-Торранс» я ничего не вижу об отражениях, я не понимаю, как интегрировать их, поэтому я получаю только рассеянный свет и отражения.

Я много читал о различных «рассеянных терминах», таких как «Oren-Nayar». Является ли это частью Cook-Torrance, как другая буква «D» в номинаторе DFG? это заменяет это без зеркальных вычислений?

Я много читал о «GGX» из своего опыта работы с блендером. Я думал, что это было размытое отражение, но, похоже, я ошибся, и теперь я нахожу этот термин GGX во многих различных ситуациях, например, в микрогранитах. распространение в этом уроке

Короче говоря, вопрос в том, как «Oren-Nayar» и «GGX» и «Cook-Torrance» связаны друг с другом (если они есть) и как мне интегрировать «отражение vec3» в этот алгоритм?

Как я уже говорил, я новичок в математике, поэтому, если ваш ответ «тяжелый по математике», пожалуйста, напишите версию ваших уравнений в формате glsl / hlsl, так что мне будет гораздо легче понять, так что эквивалентность мне очень поможет.

PS: я понимаю, что мой вопрос размыт, но он так же размыт, как и мое понимание предмета.

Newin
источник
1
Что-то, что может вам помочь, это то, что «зеркальный» означает «зеркальный». Таким образом, когда речь идет о зеркальных и диффузных отражениях, зеркальное отражение означает зеркальные отражения, то, что люди обычно называют отражением. Диффузный - это просто "светящиеся вещи". Они тоже отражают свет, но отражаются с разных сторон, поэтому в результате вы не сможете распознать изображение. Существует разница между зеркальным и диффузным отражением в реальных объектах, и это является частью того, что параметр "шероховатости" PBR контролей.
Алан Вульф
Вы можете попробовать прочитать оригинальную статью Кука-Торранса: inst.cs.berkeley.edu/~cs294-13/fa09/lectures/cookpaper.pdf - обязательно проверьте ссылки, перечисленные в конце, когда это возможно (большинство доступно онлайн). Это займет некоторое время, но это верный способ «глубоко» понять, что происходит.
WIP

Ответы:

12

DFG появляется в семействе BRDF на основе микроацетонов. Это просто произведение трех терминов:

  • D: Распределение микрофассов.
  • F: коэффициент Френеля.
  • G: геометрическое затухание между микрофасками.

Когда кто-то говорит «Кук-Торранс», они обычно имеют в виду микроразмер BRDF, где распределение (D) - это Бекманн, и я думаю, что это было то, о чем была оригинальная статья Кука-Торранса.

GGX - это просто другой дистрибутив (термин D). GTR это еще один. Имена часто используются в качестве ярлыка для обозначения BRDF, использующего этот дистрибутив.

Теперь все они предполагают зеркальное отражение (или преломление) на микрообъектах, отсюда и термин Френеля. Если вы возьмете аналогичную идею, но будете использовать диффузные (ламбертовские) микрофассы, вы получите Орен-Найярский BRDF. Я думаю, что один из них основан на гауссовом распределении микрофасок, но я не знаком с деталями.

Оливье
источник
Хорошо, это немного более понятно, но это все еще не объясняет, что мне делать с моим "vec3 reflecolour", который я получаю от повторного запуска луча в трассировке / маршировании луча или с использованием SSR / cubemap. Это похоже на уравнения, учитывающие только точечный / прожекторный свет, но не представляющие области освещения или отражений. Также кажется, что «зеркальный» относится только к «белой точке», а не к отражению из-за того, что не имеет смысла = /
newin
@newin В модели PBR зеркальное отражение и отражение - это разные имена для одной и той же вещи. Это зеркальная подсветка, когда луч попадает на свет, отражение, когда он попадает на другой объект (или окружающую среду). Что касается вашего отражения цвета, это зависит от того, как генерируется луч. Вы пробуете прямое освещение? Площадь огней? Интеграция BRDF против карты окружающей среды? Попробуйте прочитать Progressive Path Tracing с явной выборкой света , есть длинный ответ, который может прояснить некоторые вещи в этом процессе.
Оливье
Так что, если я правильно понимаю, что «vec3 reflectionColour» следует рассматривать как источник света, и если я хочу сделать мешающий свет, я должен просто указать значение> 1 в альбедо, и все? (Я пытаюсь интегрировать PBR в другой сценарий, во-первых, это raymarcher, где я хочу, чтобы сетки излучали свет, а другой - игровой движок, который использует SSR и, вероятно, будет использовать кубические карты)
newin
Излучаемый свет @newin просто добавляется поверх всего остального. Это не связано с BRDF. Если ваша сетка только излучает свет, вам даже не нужно отслеживать дальнейшие лучи от нее. Большое альбедо усилит свет (физически неправильно), а не создаст его.
Оливье