Что такое PBR? Часть IV.I

Ранее в сериале...

В первой части обзора, я кратко затронул историю становления термина PBR и вывел главный тезис. PBR это не шейдер и не текстура или какой-то отдельно взятый рендер движок — это в первую очередь принципы и основы современной компьютерной графики, кто-то называет это философией.

Вторая часть обзора, была посвящена такому понятию как PBS — Физически корректный шейдинг, как неотделимая часть физически корректного рендеринга. Кратко рассмотрел, что такое BRDF функции.

Третья часть обзора — реализация GTR (GGX) функции в V-ray. Альтернативные, физически корректные, BRDF модели. Аналитические BRDF модели (Merl библиотека). Коммерческие BRDF решения — VRscans (VrayScanedMtl)

О физической корректности рендер систем.

Повторю еще раз для "горячих" финских парней - ни один рендер движок не имеет преимуществ над другим в контексте PBR, все они используют различные алгоритмы, которые решают математические задачи. Расчет глобального освещения (GI) это отдельная математическая задача. Каждый рендер движок решает эту задачу по-разному, но итог один, это результат наличия глобального освещения в 3d сцене. Глобальное освещение не может быть менее физически корректным у одного движка и более физически корректным у другого.

Корректней сравнивать алгоритмы и понимать, что каждый алгоритм нацелен на какой-то результат. Так например Irradiance Map в V-ray и Irradiance Cache в RedShift это алгоритмы с сильной интерполяцией результатов. Для вычисления GI эти алгоритмы используют меньшее число данных, поэтому рендеринг с этими алгоритмами происходит быстрей, но это не говорит о рендер движке как не состоятельном в контексте PBR. Вот если бы расчет GI заменялся бы расчетом Ambient Occlusion, то тогда да можно было бы сказать что мы имеем дело с физически некорректным решением.

"PBR" требования, предъявляемые к BRDF функции.

Расчет BRDF функции, которая определяет как луч света себя поведет при столкновении с поверхностью объекта в 3d пространстве, это то же задача. V-ray использует для этого GTR (GGX) функцию, Corona Renderer - GGX, Octan и Fstorm использует "свои" наработки, но это в любом случае подправленные в деталях известные BRDF функции, у Arnold - Cook-Torrance. На самом деле это не так важно название, важен результат и задачи с которыми справляется BRDF функция. На текущий момент к BRDF функции предъявляют следующие требования, соответствие которым определяет её как физически корректную:

Energy Conservation - закон сохранения энергии. Если по простому то все 100% света, которые попали на объект, должны быть правильно распределены - сколько-то % зеркально отразилось, сколько-то % поглотилось, сколько-то % прошло насквозь, но в сумме это должно давать вновь 100%

Reciprocity - Принцип взаимности или можно сказать инверсии, означает что результат BRDF функции останется не изменным, когда луч выпущенный из точки 1 (источник света), пройдя любое количество преломлений, отражений и т.д. при достижении конечной точки 2 (датчик), может вернуться тем же путем, если поменять местами точки 1 и 2, т.е. источник света и датчик. Другими словами, принцип математически доказывает утверждение: «Если я вижу тебя, ты можешь видеть меня».

Microfacets - поддерживать и соответствовать теории микрошероховатости поверхности (Microfacet theory)

Fresnel Effects - поддержка законов Френеля и связанных эффектов (Fresnel Glossy)

Anisotropy - поддержка анизотропности, которую можно встретить у таких материалов как брашированный метал, ткань, волосы, древесина.

Естественно, результаты сравниваются с аналитическими BRDF моделями из MERL библиотеки. GTR (GGX) отвечает большинству запросов, хотя у нее есть некоторые погрешности в Energy Conservation, возможно это только в имплементации у V-ray. Так же Octan может похвастать хорошими результатами, но дальнейшее повествование я буду вести про GTR (GGX) реализованную в V-ray поскольку с этим движком я иду по жизни уже более 15-ти лет.

Почему Chaos Group выбрали эту BRDF модель? Я думаю что это связано со определенными стандартами в киноиндустрии, где V-ray прочно занял свою нишу. В 2016 году вышел анимационный фильм FINAL FANTASY XV, полностью посчитанный на V-ray.

А 2017 году официальное лицо компании Chaos Group, он же папа V-ray - Владимир Койлазов (aka Vlado), получил Оскара за технологичные достижения в киноиндустрии.

Мне повезло встретиться с моим героем в живую, на CG EVENT 2018 MOSCOW

Clip2net_200302170135.png

И так почему GTR (GGX)? Я думаю это из-за того что бы быть конкуренто способным и одновременно дружественным рендер решением к студии Дисней. В этой студии так же выбрана BRDF модель GTR (GGX) в качестве основной функции, а эти ребята понимают в своем деле, поболее чем...

Так по запросу Physically-Based Shading at Disney в сети можно найти много документов с математическими формулами и графическими примерами, но поскольку я рассматриваю PBR принципы с потребительской точки зрения, мне интересно только то, как я эти все принципы могу адаптировать в пользовательской практике, а не через формулы.

В моей сфере самые актуальные рендер системы это Corona Renderer и V-ray Next. V-Ray, как я уже писал, мне знаком с первых версий, поэтому все свойства материалов я буду рассматривать и реализовывать на этом движке. Данные свойства кроссплатформенны, т.е. актуальны для любого современного рендер-движка. По этой причине я не буду впадать в сравнительный анализ всех доступных рендер систем. Люди со светлой головой смогут понять и правильно применить эти свойства не зависимо от используемой ими платформы.

Disney shading principles

По запросу «Disney shading principles» в Google можно найти кучу графических таблиц с цветными шариками, которые демонстрируют основные принципы, а фактически физические свойства любой поверхности, грамотное применение которых позволяет настроить любой материал. Я смог реализовать все диснеевские принципы на практике в рендер-движке V-ray Next и не испытал никаких трудностей, поскольку стандартный шейдер VRayMtl поддерживает их в полной мере, с небольшими "надстройками" в виде дополнительных расширений — VrayBlendMtl, Vray2SidedMtl и т.д.

20131117001743.jpg

Diffuse colour

Диффузный цвет (англ. Diffuse — рассеивать свет) базовая характеристика поверхности задающая цвет поверхности освещенной прямым источником света.
В последнее время термин Diffuse colour, применяемый в CG стали подменять\путать\приравнивать к термину Альбедо (англ. Albedo — коэффициент отражательной способности).
В реальности Albedo это комплексная характеристика поверхности — итог совместной работы всех представленных в таблице свойств материала — Specular Colour, Diffuse colour, SSS и т.д., а не просто диффузный цвет поверхности. Albedo — важная характеристика и при настройке шейдера следует поглядывать в таблицу известных значений альбедо, для некоторых материалов, что бы не делать дилетантских ошибок.

На практике я ограничиваю альбедо для максимально темного цвета равным значениями от 0.005 до 0.01, а для самых светлых тонов 0.7-0.8 - это контрольные цифры, которые определяют мой рабочий диапазон. Конечно не все данные есть в интернете, но вот сводная таблица некоторых значений, которые помогут верно "взять" диффузный цвет.

Clip2net_200302174837.png

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

Diff-Albedo-00.png

Diffuse Roughness

Diffuse Roughness (англ. Roughness — шероховатость) В оригинальной таблице Дисней данная опция не представлена. Она используется в студии, но практика её применения достаточно узкая, чтобы уделять ей много внимания. Данную опцию в некоторых рендер системах называют Flatness (англ. Flatness — плоская).

Коротко о том чем обусловлено появление этой опции. Взгляните на изображение луны, фактически это сфера, но мы её видим плоской. Это связано с тем что из-за грубой поверхности и прочего комплекса физических явлений — объем «уплощается» и освещенная отраженным светом луна выглядит плоской. Физика и имплементация в CG описаны здесь. Применение данной опции актуально для грубых и глубоко матовых поверхностей — грубая ткань, натуральный камень, рыхлая бумага и т.д.

02_Diffuse-Roughness.png

Subsurface Scattering

Корректней, на мой взгляд, назвать это свойство Translucency (англ. Translucency — светопроницаемость, полупрозрачность), поскольку определение Subsurface Scattering (англ. Subsurface Scattering — подповерхностное рассеивание ) это процесс поведения света внутри полупрозрачного объекта, а транслюцентность это свойство. В V-Ray для реализации этого свойства есть множество решений, как через стандартный шейдер, так и через отдельные решения, такие как VrayALSurfaceMtl, VrayFastSSS2 и т.д.
Вопрос физически корректной имплементации подповерхностного рассеивания открытый, поскольку точных измерений было произведено достаточно мало, но все же в ряде источников можно найти некоторые из них. Эти данные используются в пред установках шейдера VrayFastSSS2 и их можно считать вполне физически корректными.

_SSS.png

Metallic

В CG , по типу отражения, шейдеры разделяют на Dielectric и Conductive (или Metallic и Non-Metallic), в русской адаптации с английского языка, можно сказать металлы и… «все остальные», поскольку если переводить дословно, то Conductive это токопроводящий материал, но вода так же проводит ток, а имеет свойства отражения как у диэлектриков, поэтому правильней и понятней применять определение «металлы» и условно «неметаллы».
В V-ray Next, в стандартном шейдере, ввели дополнительную опцию Metalness, но с небольшой оговоркой, физически корректный результат это значение либо 1 либо 0, промежуточные значения, не имеют за собой физически обоснованного контекста.

03_Metallic.png

Specular

Specular (англ. Specular — зеркальный, отражающий и т.д.) С этим термином иногда возникает путаница — в V-Ray за отражающие свойства поверхности отвечает параметр Reflect, а за силу отражения параметр IOR (англ. Index of Refraction — Индекс преломления). Если грубо, то белый цвет рефлекта «включает» зеркальность материала, а IOR определяет силу этого отражения.
На практике физически-корректные значения IOR для «неметаллов» колеблются от 1,3 до 1,8. Особняком стоят некоторые минералы, значение которых достигает 3. IOR металлов в CG имплементируется совершенно другим способом, здесь можно найти подробную инструкцию как получить максимально точный цвет метала.
Иногда, термин IOR вводит в заблуждение. Индекс преломления актуален и для визуально непрозрачных материалов, таких как металлы. Измерения IOR у таких материалов производят на очень тонкой пленке, толщина которой меньше длинны световой волны, при таких размерностях IOR металла становится доступен к измерению. Что бы сделать измерения - пленку металла наносят на прозрачную поверхность: вода, стекло или пластик.

04_Specular.png

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

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

Specular Tint

Specular Tint — цветное отражение у «неметаллов», цвет устанавливается аналогичным диффузному или близким к нему. Если «притягивать за уши» физическое обоснование этой опции, то этот фейковый прием, позволяет реализовать некоторые свойства тканевых поверхностей «по-быстрому», минуя долгие SSS расчеты.
Все дело в том, что волокна из которых состоят нити тканей транслюцентны, свет проникает вовнутрь, отражается и возвращается обратно на поверхность, «окрашивая» волокна «диффузным» цветом. Это грубая трактовка, но уместная для приблизительного понимания в каких случаях это решение можно использовать на практике.

05_Specular-Tint.png

Specular Roughness

Specular Roughness (англ. Roughness — шероховатость). В V-Ray, по дефолту, за «размытые» отражения отвечает опция Glossy Reflect, это инвертированная опция Specular Roughness. Если необходимо работать в PBR workflow, то в стандартном шейдере VRayMtl есть возможность переключаться между Roughness\Glossy для «размытия» отражений.
Результаты работы Roughness и Glossy идентичны, просто они начинаются с разных концов, но в серединном значении 0,5 они совпадают.
Roughness в V-Ray ввели для того что бы удобно было использовать так называемые «PBR текстуры» задающие параметры для опции Specular Roughness.

06_Specular-Roughnes.png

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

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

797 0 850 11
6
2020-03-03
"Reciprocity - Если честно, то я не до конца понял это понятие, если грубо, то BRDF должен давать корректные результат на любом типе поверхности под любым углом зрения и не важно, будет простая ровная плоскость или лесной массив." -- немного не так:

"BRDF-функция плоских поверхностей имеет точное определение и, как правило, считается обратимой, что означает, что значение не меняется, если источник и детектор поменять местами. Структурированные поверхности, такие как лесной массив или травяной луг, требуют расширенного определения функции и дополнительных измерений."
2020-03-04
Михаил Наумов (Mic Nau)"Reciprocity - Если честно, то я не до конца понял это понятие, если грубо, то BRDF должен давать корректные результат на любом типе поверхности под любым углом зрения и не важно, будет простая ровная плоскость или лесной массив." -- немного не так:

"BRDF-функция плоских поверхностей имеет точное определение и, как правило, считается обратимой, что означает, что значение не меняется, если источник и детектор поменять местами. Структурированные поверхности, такие как лесной массив или травяной луг, требуют расширенного определения функции и дополнительных измерений."

Спасибо Михаил, но фактически это дословный перевод. Мне хотелось это объяснить как-то по простому, адаптированно, поскольку техническая формулировка не дает понимания что имеется ввиду для обычного читателя, который не погружен глубоко в тему.
2020-03-04
Pavel Ushakov
Спасибо Михаил, но фактически это дословный перевод. Мне хотелось это объяснить как-то по простому, адаптированно, поскольку техническая формулировка не дает понимания что имеется ввиду для обычного читателя, который не погружен глубоко в тему.

Тогда так: "BRDF-функция для плоских поверхностей считается обратимой, то есть если поменять местами источник света и наблюдателя, то картина не изменится. Однако если речь идет о поверхностях имеющих структуру (например, лесной массив сверху или трава на лугу), то всё усложнаяется" :)


И спасибо за вашу работу! Объяснять доступно, но не поверхностно -- действительно очень сложно )
2020-03-05
Павел, вот тут можно почитать подробно про Reciprocity (взаимность) – https://en.wikipedia.org/wiki/Helmholtz_reciprocit...
Очень просто говоря – при сохранении пары углов (сенсор-ИС) измерения света не меняются. Для сложных структур это правило сохраняется, но его работа сильно усложняется. Поэтому для этих случаев необходимы дополнительные условия расчёта.
П.С. Вот тут можно посмотреть наглядно – https://www.researchgate.net/publication/5507507_I...
2020-03-05
Алекс Мелькин (Elfak)Павел, вот тут можно почитать подробно про Reciprocity (взаимность) – https://en.wikipedia.org/wiki/Helmholtz_reciprocit...
Очень просто говоря – при сохранении пары углов (сенсор-ИС) измерения света не меняются. Для сложных структур это правило сохраняется, но его работа сильно усложняется. Поэтому для этих случаев необходимы дополнительные условия расчёта.
П.С. Вот тут можно посмотреть наглядно – https://www.researchgate.net/publication/5507507_I...

Спасибо, то что нужно. Отредактировал.
2020-03-22
Автор - холодный финский парень )

Все последующие части своего "глубокого" повествования скачет на граблях разложенных в предыдущих ...

Альбедо от диффуза отличается так же как блэндшейп от морфинга, то-есть - никак!
Потому что и то и другое - частные случаи незеркальных поверхностей.

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

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

Как "3D кинотеатр" и "стерео кинотеатр" )

PBR позволяет главное: получить такую картинку в реальном времени, которая уже может пусть и с большими допущениями, пободаться с пост-рендером за клиента в дизайне интерьеров и теплые финские интерьерщики вам подтвердят в один голос, что клиент голосует за риалтайм и "подешевле"

А для любого рендера (и трагичная судьба ментал рэй тому свидетельство) критичным оказывается не то как он обзывает дифуз и даже не насколько достоверную картинку он может отрендерить а то сколько людей им пользуются! И никакой послужной список в голливуде не спасает.

И кстати врэй как раз топает по стопам ментала и уже давно, интерфейс вообще не отличишь с третьей версии, а вот новый вирэй - это корона (не вирус)!

Которая тоже уже не торт, потому как реалтайм...
RENDER.RU