Что такое PBR? Часть 3
Pavel_Ushakov 3918

Имплементация GGX функции в V-ray

Как писал раннее В V-ray реализованы несколько BRDF функций для стандартного материала VRayMtl. У пользователя есть возможность выбрать следующие функции: Phong, Blinn, Ward, GGX(GTR)

С появлением GGX функции - первые три фактически не актуальны, но оставлены для поддержки шейдеров из старых версий. Если сравнить работу всех функций, см. таблицу выше, то станет очевидно что не так с Phong, Blinn и Ward.

Phong, Blinn и Ward это эмпирические функции и не имеют за собой физически-обоснованного бэкграунда, ну и на превью видно что при максимальном значении Glossy шейдеры «сбоят», хотя Ward держится молодцом — особых артефактов не видно, но собственная тень сферы «съедена». В свою очередь BRDF модель GTR (GGX) выглядит достойно, на фоне предыдущих решений.

В V-ray так же есть имплементация шейдера Anders Langland's alShader под названием VrayALSurfaceMtl, в котором поддерживается две BRDF функции GGX и Beckmann , который я так же разместил в таблице. VrayALSurfaceMtl, интересен в первую очередь, за возможность иметь 3-х слойную настройку SSS эффекта и 2-х слойный Specular. Это актуально для шейдинга человеческой кожи, но мало актуально для рядовых задач.

GTR (GGX) модель, на текущий момент, отвечает большинству пользовательских запросов на реализм и имеет «благородное» происхождение, то есть реализована на основе объективно полученных данных и может считаться относительно честной, отвечающей PBR принципам BRDF функцией. Почему «относительно честно»? Да все потому, что в ее основе все-равно есть место аппроксимации, но по-другому никак, иначе шейдер не будет универсальным.

GTR это не конечная станция. После анонса GGX функции были предложены альтернативные решения. Эти решения так или иначе используют опыт и наработки предшественников, улучшая его в незначительных деталях, либо аппелируют к MERL database.

Возможно рано или поздно эти наработки войдут в широкое употребление, но не факт, поскольку развитие железа, его вычислительных мощностей уже сейчас позволяет напрямую использовать сканы реальных материалов напрямую, без какой-либо дополнительной имплементации в виде универсальных BRDF моделей. Так, например, в 2012 году была предложена имплементация MERL библиотеки через простой шейдер «переходник», данная реализация позволяет использовать в работе точные, по своим физическим свойствам, материалы.

MERL библиотека (MERL database)

MERL библиотека - это более 100 физически корректных BRDF моделей реальных материалов, которые получены путем точных физических замеров, если грубо то это сканы материалов, записанные в виде бинарного кода. Данную библиотеку в основном используют ученые и R&D отделы крупных CG студий в своих диссертациях и разработках.

VrayScanedMtl

Лидером в сфере сканировании материалов, является компания Chaos Group, которая смогла монетизировать идею использования отсканированных материалов в коммерческой визуализации. Я имею ввиду их шейдер – VrayScanedMtl, который ретранслирует отсканированные данные и позволяет получать максимально реалистичную BRDF модель для отдельно взятого материала с небольшой возможностью кастомизировать некоторые опции. На текущий момент библиотека отсканированных материалов у Chaos Group содержит уже более 1000 образцов.

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

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

Долгое время рендеринга, при почти равном результате. На примере ниже — VrayScanedMtl материал шелковистой ткани со свойственной ей анизотропностью и аналогичный по своим свойствам материал, но реализованный через VrayMtl (BRDF GTR). Время рендеринга — 10 минут у VrayMtl, при «задранных» настройках качества, против 25 минут у VrayScanedMtl, при аналогичных настройках.

За «кадром» я провел еще ряд сравнений между VrayMtl и VrayScanedMtl. И могу сказать, что не испытал особых трудностей в реализации аналогов сканированных материалов через VrayMtl (исключая SSS поверхности) в связи с чем вывод напрашивается сам собой — зная природу (физику) материала его можно настроить достаточно точно и легко при помощи стандартных «инструментов» предлагаемых рендер системой. О базовых свойствах поверхности, которые определяют «узнаваемость» материала, я буду говорить в следующей статье, так что наберитесь терпения.

В завершении данного раздела вернусь к упоминанию о том, что не существует универсальной BRDF функции, которая давала бы 100% корректный результат для всех типов материалов. Доступные простому пользователю BRDF решения основаны на аппроксимации данных (приближение, упрощение), а значит какие-то частные случаи, свойственные отдельному типу материала, игнорируются, либо их надо «докручивать» как в случае с хромовым шариком.

Особенной нужды на самом деле в этом и нет. Я имею ввиду 100% физическую точность и корректность. Те же самые BRDF модели Blinn, Phong и Ward с лихвой покрывали нужды опытных CG художников. Так до появления GTR (GGX) при помощи VrayBlendMtl смешивали два материала с разными значениями Glossy и получали необходимый «хвост» у блика.

Продолжение следует…

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

Комментарии (8)

+1
abdufattoh93
Как я знаю, если например VrayBlendMtl в 2слоя, то Vray семплирует его как 2 материала, и время рендера замедлиться. У GTR (GGX) отражения в углах четче чем в центре (это добавитт реализм), а Blinn, Phong и Ward не дают такой результат, у них отражения везде одинаковы. Для себя хочу уточнить, прав ли я?))
+2
Pavel_Ushakov
Про то как технически реализуется процесс сэмплинга VrayBlendMtl не могу подтвердить или опровергнуть, если есть ссылка на первоисточник, мне будет интересно почитать. И да VrayBlendMtl действительно замедляет скорость рендера, но не критично долго и не во всех случаях. При простом миксе материалов через маску или цвет бленда - скорость рендера как правило не сильно проседает, а вот режим "шелак", в некоторых случаях, может сильно "съесть" время рендера.

Про GTR (GGX) про отражения "в углах и центре", мне не совсем понятно что имеется ввиду. Если речь ведется о таком эффекте как Fresnel Glossy то, он наоборот "глушит" силу отражения ближе к краям сферы, этот физически корректно и это свойство реализовано у всех BRDF моделей представленных в V-ray, но...
В Blinn, Phong и Ward не поддерживается Microfacet theory (Теория микрошероховатостей) математика которой реализована в GTR (GGX) шейдере.
Ну и кроме этого еще много отличий. Я об этом в четвертой части упомяну.
+2
xpp_nd_ruphus
у остальных режимов это тоже делается, но только через карту фаллофф с френелем в глосси, а у GGX это включается/выключается галкой fresnel glossy
0
Pavel_Ushakov
Ну да, результат похожий получается.
+1
Yehat
Самое главное в командной работе с PBR это то, что дизайнеры в них ничерта не понимают, и поэтому смысла упарываться в PBR попросту нет.
Себя же можно успокоить тем, что любой рендер, умеющий считать GI, так или иначе PBR, потому что основан на реальной физике, или стремится к ней, как умеет.
+1
Pavel_Ushakov
Смысл есть... для самого себя )
0
xpp_nd_ruphus
ну скажем откровенно, что тру PBR это наверно только максвелл со своей мудреной настройкой шейдеров, аналогов которой не видел ни в вирее, ни в короне, разве что если только cамому OSL шейдеры писать
+1
Stanislavskaya_ad
Спасибо за познавательный контент!