Что такое PBR? Часть II

В предыдущей статье, для себя и для неравнодушных, прояснил, что стоит за термином PBR.

Перед тем как продолжить, хочу внести некоторую ясность в определениях. Как писал ранее, расшифровка PBR звучит как Physically Based Rendering (англ. Физически обоснованный\корректный рендеринг).
В сети так же можно встретить аббревиатуру PBS - Physically Based Shading (англ. Физически корректный шейдинг), не стоит на это обращать внимание, это все тот же PBR, просто в этом случае физически корректный шейдинг выделяют как отдельное направление.

Physically Based Shading (PBS)
Шейдер (англ. Shader – затеняющий), шейдинг (англ. Shading – затенение). В CG это определение перекочевало из области изящных искусств. Так называют технику штриховки карандашом, которая выявляет объем объекта.
Если мы нарисуем замкнутую линию, ну, например, пусть это будет круг (Аналогом в 3ds max может быть сплайн). Данная геометрическая фигура не дает нам никакого представления об объеме объекта и я уже не говорю о свойствах его поверхности и т.д.

Cover 02.1.png

Если нарисуем несколько замкнутых линий эллипсовидной формы, то они образуют каркас сферы (аналогом такого решения будет отображение сферического объекта в режиме «wire»). Текущее представление, уже может дать представление о форме объекта, но для людей с хорошим пространственным мышлением.

Cover 02.2.png

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

Cover 02.4.png

Резюмирую суть - то как будет выглядеть поверхность 3D модели, после рендеринга, определяет шейдер, в простонародье «материал». По внутренней сути, шейдер — это программа или код, кому как удобней для понимания. Математическое ядро любого шейдера — это функция, определяющая как свет отражается от поверхности.
Решение этой функции не простая задачка, это не 2+2 результат которой однозначно 4, а более сложная система отношений между различными переменными и параметрами, поэтому универсального и идеального шейдера на все случаи жизни просто не существует. Гипотетически можно конечно написать такую функцию, но это будет громоздкая и не оптимальная реализация.

BxDF функции

BxDF - семейство функций которые определяют как луч света ведет себя при "столкновении" с поверхностью 3d объекта. Символ x в аббревиатуре BxDF заменяется подходящей по ситуации буквой, а ситуаций может быть много, вот несколько типичных случаев:

  • Луч полностью отразился - зеркальная поверхность
  • Луч рассеялся - диффузная поверхность
  • Луч прошел сквозь объект - прозрачная поверхность
  • Луч зашел в объект и вернулся - полупрозрачный объект
В зависимости от ситуации используется подходящая функция - BDF, BSSRDF, BRDF, BTDF, BSSTDF, BSSDF, BSDF. Больше деталей можно узнать здесь, поскольку шейдерные функции это отдельный и очень емкий материал.

Для определения базовых свойств поверхности, которые удовлетворяют большинству пользовательских запросов используют относительно простую функцию: BRDF - Bidirectional reflectance distribution function. Чаще всего BxDF функции носят имена ученых, которые их разработали.

Cover 02.5.png

Популярная и широко используемая в продакшен рендеринге рендер система V-ray долгое время применяла в стандартном шейдере VrayMtl следующие функции:


Phong


Cover 02.6.png


Blinn

Cover 02.7.png

Ward

Cover 02.8.png

Данные модели BRDF не имеют ничего общего с PBR, поскольку разработаны на основе эмпирических данных.

Эмпирические данные (от др.-греч. [empeiria] «опыт») — данные, полученные через органы чувств, в частности, путём наблюдения или эксперимента.Это выглядит примерно так - некоторый ученый по имени «N» наблюдает как свет ложится по поверхности на том или ином материале и на основе этих наблюдений с учетом существующих теорий, базовых аксиом и научных постулатов, предпринимает попытки описать эти явления математически.Естественно невозможно ожидать, что два учёных, наблюдающих или проводящих эксперименты над одним и тем же явлением или объектом придут к одинаковым, независимым от теорий выводам.

Удивительно, но да, большинство BxDF функций реализованы «на глазок». Другое дело функция GGX. Данная функция была выведена на основе физических измерений и в различных имплементациях используется во всех современных рендер системах, как в продакшене, так и в реалтайме.

GGX функция

GGX функция - это результат совместных изысканий четырех ученых Корнельского университета (США) Bruce Walter, Stephen R. Marschner, Hongsong Li, Kenneth E. Torrance. Алгоритм функции и результаты исследования опубликованы в 2007 году. Очевидно, что все четыре имени не запихнуть в название BRDF функции, поэтому данной модели дана аббревиатура GGX, расшифровать которую достаточно сложно. Возможно Generalized Gausian X, где Х – хрен знает, что обозначает. Математика здесь: Microfacet Models for Refraction through Rough Surfaces
На основе сравнительного анализа и математических вычислений было доказано что результаты этой функции максимально близки к результатам у аналитических BRDF функций различных материалов, которые были получены путем сканирования - MERL database
В частных случаях функция GGX по-прежнему не удовлетворяла все запросы, так например блик на полированном хромовом шарике имел более длинный «хвост», чем получался у GGX функции. На слайде ниже видно, что основное «тело» блика функции GGX и BRDF модели отсканированного материала (MERL database) очень похожи, но в GGX не хватает «дымки» вокруг блика и его растяжки по поверхности.

Cover 02.9.png

Длинный «хвост» или эффект «дымки» вокруг основного блика обусловлен тем, что большинство объектов, которые встречаются в обычных бытовых условиях, не имеют идеальной полированной поверхности у них всегда имеются микрошероховатости, которые оказывают влияние на глянцевитость поверхности.
Этот недостаток у GGX функции был решен в R&D (англ. Research and Development — исследования и разработки) отделе студии Дисней, который модифицировал GGX функцию, «скрестив» её с зеркальной моделью Trowbridge-Reitz описанную в работе 1975 года «Average Irregularity Representation of a Rough Surface for Ray Reflection». Таким образом в GGX функции появилась переменная для управления «хвостом» блика. Самой функции дали название GTR (Generalized Trowbridge-Reitz) Продолжение следует…

Яндекс.Дзен | ВКонтакте | YouTube | Instagram


753 0 850 11
5
2020-02-27
> Generalized Gausian X, где Х – хрен знает, что обозначает.
Вот с этого я проиграл
2020-02-28
А третьей части ещё нет?
2020-02-28
Александр БерковскийА третьей части ещё нет?

Сегодня опубликуют
2020-03-02
Очень познавательно.Спасибо
2020-03-22
PBR не физический и не корректный, а смысл шейдера для художника а не для автора-водолея в том, что это алгоритм который условно говоря "красит" поверхность объекта с учетом или без каких-то факторов.

Но до появления настоящей трассировки луча в последних видюхах энвидиа никакого "света" в PBR никуда не "светило" это основной момент с которого надо начинать разговор о "свете" для начинающих!

Свет - это среда, лучи света - "дорожки" по которым движутся "фотоны" - кванты света.
PBR не знает ни о каких "дорожках" и тем более фотонах, о них знает только пост-рендер типа вирэй, корона и т.п. а про фотоны знал более менее только один рендер: ментал рэй, который увы RIP, совсем, уже как года два (интересно, почему было не опенсорснуть исходники?)

Свет как среда "сам по себе" сильное средство, позволяющее моделировать, например "эффекты причастных сред" т.е. "объемный свет" ментал умел это делать даже в фотонной среде.

И как основа для ряда эффектов и сложных эффектов и материалов : Каустика (пучки света на криволинейных отражающих и преломляющих поверхностях), под-поверхностное рассеивание (от молока и сока до кожи человека, воска, мрамора и т.п.) , Дисперсия света (разложение луча на спектр), Хроматические и оптические абберации ит.д. и т.п.

В CG есть "два света" : "настоящий" - где световая среда действительно моделируется путем испускания света из источников света и отслеживанием путей лучей несущих "фотоны" (а в случае с вирэй, короной, арнольдом и т.п. кроме люкс-рендер нет и того, "лучи" "испускаются" из камеры для DI и от поверхности а не из источника для GI)

И PBR которая "физически корректна" только в сравнении с "чистым фонгом" или "блином".

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

Автор статьи ничтоже сумняшеся побрел темной тропой умника в пропасть, на дне которой лежат славные черепки ментала и сидит с протянутой рукой дурак вроде меня который тоже когда то решил что людям нужно "физически настояще" и что перечисление аббревиатур функций заставит твоё г*вно рендериться в конфету...

Так вот, не идите за ним! )
Учите все это пэ-бэ-рэ в части кнопок мармосета и параметров сопряжения врэя с юнити а псевдонаучную полноту оставьте дуракам которые не втащили как рендерить и теперь рефлексируют на умные слова.

Спасибо не надо, лучше бросьте в шапку кому сколько не жалко о.о
RENDER.RU