Наша новая игра 8 сентября в раннем доступе на steam



Что такое PBR, вторая часть

Это вторая часть руководства по PBR.

BRDF (двунаправленная функция распределения отражений)

         BRDF рассматривается как функция, которая описывает отражательные свойства поверхности. В компьютерной графике существуют разные BRDF модели, некоторые из них не физически корректные. Что бы быть физически корректной, модель должна проявлять качества взаимообмена (взаимности) и сохранения энергии. Под взаимностью я имею ввиду принцип взаимообмена Гермгольца, в котором говорится, что исходящие и приходящие световые лучи могут взаимозаменяться, не воздействуя на результат BRDF.

         BRDF которые используются в PBR шейдерах Substance, основаны на Диснеевском принципе отражения, который в свою очередь основан на распределении микрограней GGX. GGX предлагает одно из лучших решений в условиях зеркального отражения, так как имеет меньший пик освещения и большую глубину проникновения что, кстати говоря, выглядит реалистичней, как показано на рис. 8.

Реалистичность GGX отражений

Рисунок 8.

        На рисунке выше показано, что при одинаковой шероховатости поверхности, GGX позволяет получить:

  • больше деталей в отражении;
  • более реалистичный блик от прямых лучшей;
  • блики имеют более короткий пик и длиннее хвост.

Кстати, GGX отражения уже внедрили в VRay 3.1.

Закон сохранения энергии

        Закон сохранения энергии играет важную роль в решениях для физически корректного рендеринга (далее – PBR – physically-based rendering). Он утверждает, что общее количество света, переизлучаемого поверхностью (отраженного и рассеянного) меньше, чем общая сумма падающего излучения. Другими словами, свет, отраженный от поверхности никогда не будет более интенсивным, чем свет падающий на эту поверхность. Как художники, мы не должны беспокоиться о соблюдении закона сохранения энергии. Это один из позитивных аспектов PBR, в котором закон сохранения энергии всегда соблюдается шейдером. Это часть физически корректной модели, что позволяет нам сосредоточиться на искусстве, а не на физике.

Эффект Френеля

        Коэффициент френелевского отражения (далее – коэффициент Френеля) также играет важную роль в физически корректном шейдинге (затенении) и используется в качестве коэффициента в двулучевой функции отражательной способности – ДФОС (далее – BRDF – bidirectional reflectance distribution function). Закон, открытый французским физиком Августином-Жаном Френелем (Augustin-JeanFresnel) утверждает, что количество света, отраженного от поверхности зависит от угла наблюдения, при котором мы воспринимаем его.

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

         В отличие от традиционного шейдинга Френелевские отражения не являются факторами, контролируемыми в PBR. Опять же, это иной физический коэффициент, который обрабатывается для нас шейдерами PBR. В случае наблюдения поверхности при скользящем падении света (т.е. при угле падения 90 градусов), все сглаженные поверхности станут почти на 100% отражающими.

          Для шероховатых поверхностей, отражения будут становиться все более зеркальными, но никогда не достигнут 100% зеркального отражения. Важно понимать, что угол между нормалью каждой микроповерхности и направлением света, не есть аналогом угла между нормалью к макроповерхности и направлением света, ибо лучи света рассеиваются в разные стороны, отражение становятся мягче или темнее. Все явления на макроскопическом уровне лишь приближенно можно трактовать как среднее значение всех эффектов Френеля на микроповерхностях.

         Для шероховатых поверхностей, отражения будут становиться все более зеркальными, но никогда не достигнут 100% зеркального отражения.

F0 (Френелевские отражения при угле падения 0°).

        Когда свет попадает на поверхность прямо или перпендикулярно (угол падения равен 0 градусов), есть доля этого света, который отражается обратно, как блик. Используя показатель преломления (IOR) для поверхности, вы можете получить сумму, которая отражается обратно. Эта величина известна как коэффициент F0 (Fresnel0). Как показано на рисунке 09, количество света, который преломляется в поверхности равно 1 - F0.

Количество отражённого света по френелю

Рисунок 9.

         Диапазон F0 для большинства распространенных диэлектриков находится в пределах 0,02 – 0,05, для проводников F0 равен 0,5 – 1,0. Таким образом, отражательная способность поверхности определяется показателем преломления, как показано в следующем уравнении, приведенном в работе [3] в конце статьи, (см. рисунок 10).

Отражаемость поверхности определяется коэффициентом преломления

Рисунок 10.

         Это значение отражения F0, должно учитываться при создании и использовании текстур. Неметаллы (диэлектрики / изоляторы) будет иметь отражения в оттенках серого, металлы (проводники) будут иметь отражения с различными значениями RGB. Относительно PBR и наглядной интерпретации отражательной способности, можно утверждать, что в общем для гладкой поверхности диэлектрика, значение F0 будет отражать от 2% до 5% от света и 100% при углах скольжения, как было показано на рисунке 09.

         Из-за шероховатости фактические изменения цветовых значений отражений могут быть трудно различимыми. Тем не менее, разница в величинах существует. На рисунке 11, вы можете увидеть диаграмму, которая показывает диапазоны значений F0 для металлических и неметаллических материалов.

         Примечательно, что значения F0 для неметаллов не отклоняются друг от друга коренным образом. Драгоценные камни являются исключением, так как они имеют более высокие значения F0.

Цвет (значение F0) для получения отражений неметаллов

Цвет (значение F0) для получения отражений металлов

Рисунок 11.

        Далее приведено обсуждение значений F0 в частности для проводников и изоляторов.

Проводники и Диэлектрики/Изоляторы (Металлы и Неметаллы)

        При создании материалов для PBR, полезно размышлять в терминах металла или неметалла. Я просто определяюсь, если поверхность металлом или нет. Если это так, то я руководствуюсь одним набором руководящих принципов, и если это не так – следует другой принцип. Возможно это довольно упрощенный подход, т.к. некоторые материалы могут не войти ни в одну из этих категорий, например металлоиды, но в общем процессе создания материалов, определение различий между металлическими и неметаллическими материалами является хорошим подходом, а металлоиды являются скорее исключением. Чтобы установить руководящие принципы для материалов, мы сначала должны понять, что мы пытаемся создать. В рамках PBR, для того, чтобы получить этот набор руководящих принципов мы должны руководствоваться свойствами металлов (проводников) и неметаллов (изоляторов).

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

Металлы

        Металлы (проводники) являются хорошими проводниками тепла и электричества. Проще говоря, электрическое поле в проводящих металлах равно нулю и когда входящая волна света, состоящая из электрических и магнитных полей, попадает на поверхность, она частично отражается, а весь преломленный свет поглощается. Значение коэффициента отражения для полированного металла будет на высоком уровне – в диапазоне примерно 70-100% от количества падающего света, как показано на рисунке 12.

Степень отражения для металлов

Рисунок 12.

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

         У металлов, значение отраженной составляющей будет иметь различные значения RGB и может быть окрашено в соответствующий цвет. Так как мы работаем в рамках физически корректной модели, в наших картах мы должны использовать реальные измеренные значения отражения для металла.

         Другой важный аспект в случае с металлами состоит, в плане текстурирования, в том, что металл может подвергаться коррозии (окисляться). Это означает, что окисленные участки могут играть большую роль в отражающей способности металла. Если металл, например, ржавеет, то этот процесс изменяет состояние отражающего металла. Поэтому участки, поддавшиеся коррозии, "покрываются" диэлектрическим материалом, как показано на рисунке 13.

Как создать материал покрашенного ржавого железа

Рисунок 13.

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

         Выше упоминалось, что я всегда спрашиваю себя, если материал металлом или не является таковым. Тем не менее, если быть более точным, то вопрос должен также касаться состояния металла: окрашенный ли он, ржавый или покрыт грунтовкой / смазкой. Результирующий материал будет рассматриваться в качестве диэлектрика, если это не сырой необработанный металл. Кроме того, на нем могут быть участки с некоторым смешиванием между металлом и неметаллическими включениями в зависимости от погодных условий.

Элементы коррозии могут играть большую роль в отражающей способности металла

Неметаллы

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

         Мы заявили ранее, что значение отражения в пересчете на F0 для обычных диэлектриков находится в диапазоне 2-5%. Эти значения находятся в пределах линейного диапазона 0.017-0.067 (40-75 sRGB), как показано на рисунке 14. У большинства диэлектриков, за исключением драгоценных камней, это значение не будет больше, чем 4%.

Сколько отражают неметаллы

Рисунок 14.

         Как и в случае с металлами, для неметаллических материалов мы должны использовать реальные измеренные значения коэффициента преломления (IOR), Следует отметить, что поиск значений IOR для других непрозрачных материалов, может оказаться весьма трудоемкой задачей. Тем не менее, эти значения для наиболее распространенных диэлектрических материалов изменяются не кардинально, поэтому мы можем использовать несколько руководящих принципов, чтобы следовать методике определения отражений. О такой методике мы расскажем во втором томе этого издания.

Значение показателя преломления (IOR) для обычных диэлектриков в пересчете на F0 изменяются в пределах 2-5%.

Рендеринг в линейном пространстве.

         Обсуждение вопросов рендеринга в линейном пространство может потребовать до целой статьи. Поэтому, мы не будем вдаваться в глубину и специфику этой проблемы. Тем не менее, важно то, что при таком виде рендеринга вычисления проводятся в линейном пространстве.

Проще говоря, линейное пространство рендеринга обеспечивает правильные математические расчеты освещенности. Речь идет о создании условий, которые позволят свету вести себя, как в реальном мире. В линейном пространстве значение гаммы равно 1,0. Тем не менее, для того чтобы изображение на экране монитора правильно воспринималось нашими глазами, линейная гамма должна быть сдвинута. Гамма-закодированное пространство (sRGB) компенсирует различие изображений, которые отображаются на экране компьютера. Значение такой компенсации изображения регулируется для каждого монитора.

         При вычислении значения цвета и выполнения операций с цветом, все расчеты должны быть выполнены в линейном пространстве. Что бы увидеть как базовый или диффузный цвет будет отображаться при визуализации цветовое пространство соответствующих карт должно быть установлено как sRGB. В шейдерах Substance, sRGB пространство изображения будет преобразовано в линейное пространство для расчетов, а затем преобразовано обратно в sRGB для отображения на мониторе. Однако, когда вы храните математические данные в текстуре, которая явно описывает атрибуты поверхности, например, шероховатости или блеск, то эти карты должны быть установлены как линейные.

         В шейдерах Substance преобразования между линейным и sRGB пространством для входящих изображений осуществляются автоматически, как и гамма-коррекция вычисленного результата (изображения) в окне рендеринга. Как художникам, вам не нужно беспокоиться о внутренней специфике линейно-пространственных вычислений и преобразований при использовании шейдеров Substance в вашем производственном процессе (пайплайне). При использовании Substance-материаловс помощью плагина Substance Integration, преобразования для линейного пространства также осуществляется автоматически.

         Тем не менее, важно понимать сам процесс: так как Substance-карты используются в качестве экспортируемых растровых изображений, а не как Substance-материалов, вам, возможно, потребуется вручную обрабатывать преобразования в зависимости от используемого вами визуализатора (рендера). Вы должны знать, что карты основного / диффузнго цвета есть sRGB картами, остальные карты – линейными.

         При использовании Substance-материалов с помощью плагина Substance Integration, преобразования для линейного пространства также осуществляется автоматически.

Ключевые моменты

         Теперь, когда мы изучили основы теории физики процессов, мы можем вывести некоторые ключевые факторы PBR.

  1. Закон сохранение энергии. Яркость отраженного луча никогда не превышает значения, которое он имел, когда он впервые попал на поверхность. Закон сохранение энергии учитывается шейдерами.
  2. Френелевские отражения. BRDFучитывается шейдерами. Значение F0 отражения имеет минимальное изменение для наиболее распространенных диэлектриков и колеблется в пределах от 2% - 5%. F0 для металлов имеет высокое значение в диапазоне от 70-100%.
  3. Интенсивность зеркального отражения контролируется BRDF, картами шероховатости или глянцевитости, а также величиной коэффициента отражения F0.
  4. Расчеты освещения вычисляются в линейном пространстве. Все карты, которые имеют гамма-кодированные величины, такие, как базовый или диффузный цвет, как правило, обрабатываются шейдерами в линейном пространстве. Убедиться, что преобразование сделано правильно, можно выбрав соответствующую опцию при импорте изображения в движок игры или при визуализации. Карты, которые описывают атрибуты поверхности, такие как шероховатость, блеск, металловидность и рельеф должны быть интерпретированы в линейном пространстве.

Полезные ссылки

  1. Physically-Based Shading at Disney Brent Burley, Walt Disney Animation Studios.
  2. Microfacet Models for Refraction through Rough Surfaces
  3. Feeding a Physically-Based Shading Model by Sebastien Lagarde
  4. An Introduction to BRDF Models by Daniël Jimenez Kwast

Читайте продолжение тут - как создавать PBR текстуры.

Спасибо за помощь с переводом Игорю Гнатюку.



Подпишитесь на обновление блога (вот 3 причины для этого).
Введите ваш e-mail:





Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Введите ваш e-mail (используется только для отправления обновлений блога):

комментариев 5 к статье “Что такое PBR: физически корректный рендеринг и шейдинг 2”

  1. Спасибо, интересно!)

  2. Спасибо за перевод, как раз изучаю этот софт. Жду вторую часть 🙂

  3. Юрий, у меня есть пара вопросов, которые не дают мне до конца осознать эту статью:
    1) Авторы рассказывают нам про коэффициент F0 и даже приводят рекомендуемые значения для различных классов материалов. F0 здесь и IOR в VRay — одно и тоже? В смысле и то и другое регулирует френелево отражение?
    Еще мне не понятно, куда конкретно применять эти рекомендуемые диапазоны F0, в base color или, например, в metallic? Или же это работает только для другой модели PBR, в которой есть specular/glossiness?
    Дело в том, что я пытаюсь создать бронированный металл, он должен быть темный с красноватым оттенком. «На глаз» у меня base color — 30,0,0, metallic — 221. Но эти значения, вроде как, отличаются от тех, что должны быть для металла, судя по моему пониманию статьи.
    2) «Что бы увидеть как базовый или диффузный цвет будет отображаться при визуализации цветовое пространство соответствующих карт должно быть установлено как sRGB. Однако, когда вы храните математические данные в текстуре, которая явно описывает атрибуты поверхности, например, шероховатости или блеск, то эти карты должны быть установлены как линейные.»
    Где это надо устанавливать?

    • 1.) Интерпретировать информацию описанную в этом уроке относительно V-Ray-я особого смыслу нету. Из оффлайн рендеров с PBR работает разве-что Mantra Render (Houdini). Например разрабы Quixel Suite уже отписывались на PolyCount-е что они не представляют как можно PBR-ориентированные текстуры адаптировать под V-Ray.

      2.) Текстура с цветами в линейном пространстве имеется ввиду 32-Битные форматы. OpenEXR/HDR/TIFF/RAW. В них цвета идут в линейном пространстве.

      8Бит — 0-255
      16Бит — 1-65535
      32Бит — 0.0 — До бесконечности. (С плавающей запятой/точкой).

      Что-бы видеть текстуру в sRGB я в Photoshop-е нажимаю CTRL+SHIFT+K и в RGB ставлю sRGB. Ну и естественно если текстура с высоким диапазоном цветов я кручу экспозицию что-бы видеть что там происходит.

      P.S.
      Ну а вообще пока не появится перевод второй части смыслу что-то обсуждать нету. Там показывается практическая составляющая и отпадет сходу ряд вопросов и непоняток по PBR-у.

  4. Спасибо за перевод,ребята

Извините, в данный момент комметарии закрыты.

© 2008 - 2018 3dyuriki.com
Для связи со мной 3dyuriki@gmail.com