Имплементация 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 и получали необходимый «хвост» у блика.
Продолжение следует…