Базовая теория физического рендеринга (перевод-конспект)

Источник -1, Источник — 2

Физический рендеринг (PBR) — интересная тенденция в мире рендеринга в реальном времени в последнее время. Термин часто на слуху, но не всегда понятно, что именно он означает. Давайте рассмотрим этот термин (PBR) поближе, а также посмотрим, чем он отличается от более старых методов рендеринга. Эта информация для тех, кто не является инженерами (в основном для 3д-художников) и не содержит никакой математики или кода.

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

Начнем с некоторых основ, прежде чем мы начнем отмечать то, что является новым. Возможно, вы также захотите почитать также материал Джо Уилсона о создании PBR-иллюстраций.

Diffusion & Reflection (Рассеяние и отражение)

Диффузия и отражение, также известные как “рассеянный” и “зеркальный” свет, соответственно, – это два термина, описывающие самое основное разделение взаимодействия поверхности и света. Большинство людей знакомы с этими понятиями на практическом уровне, но могут не знать, как они различаются физически.

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

Однако не весь свет отражается от поверхности. Обычно часть света проникает внутрь освещаемого объекта. Там он либо поглощается материалом (обычно преобразуясь в тепло), либо рассеивается внутри. Часть этого рассеянного света может проникать обратно с поверхности, а затем снова становиться видимой для глаз и камер. Это явление известно под многими названиями: Diffuse Light (Рассеянный свет), Diffusion (Диффузия), Subsurface Scattering (Подповерхностное рассеяние) – все они описывают один и тот же эффект.

Еще раз: диффуз – рассеянное отражение, а рефлект – направленное.

Absorption (Поглощение) и difusion (разброс рассеянного света) часто сильно различаются для разных длин волн света, что и придает объектам их цвет (например, если объект поглощает большую часть света, но рассеивает синий, он будет казаться синим). Рассеяние часто бывает настолько равномерно хаотичным, что можно сказать, что оно выглядит одинаково со всех сторон – в полную противоположость к зеркалу! Шейдеру, использующему это усреджненное значение, на самом деле нужен только один параметр: Albedo (Альбедо), цвет, который описывает доли различных цветов света, которые будут рассеиваться от поверхности.

Albedo

Альбедо (в переводе от лат. albedo – белизна) – это, если просто, отсвет (возврат) света. Сам термин пришел из астрофизики, где альбедо – величина рассеивающей или отражающей силы поверхности планет, звезд, астероидов. Альбедо (в переводе от лат. albedo – белизна) – это, если просто, отсвет (возврат) света. Сам термин пришел из астрофизики, где альбедо – величина рассеивающей или отражающей силы поверхности планет, звезд, астероидов. В рендерах Corona и Vray есть возможность управлять данным значением. 

Коэффициент Альбедо – это отношение светового потока, рассеянного плоским элементом поверхности во всех направлениях, к потоку, падающему на этот элемент.

Посмотрите на два рендера ниже. Материалы те же, объекты тоже, но что-то явно не так. Второй вариант выглядит естественнее и реалистичнее. Что же исправили в этой работе? Все дело в альбедо.

Визуализация с неправильно настроенным альбедо
Правильно настроенный альбедо

Коэффициент альбедо популярных материалов

  • Гипс ~0,8
  • Штукатурка ~0,43
  • Алюминий ~0,7
  • Стеклянное зеркало ~0,8 (!)
  • Снег ~0,75
  • Дерево ~0,4
  • Сухой асфальт ~0,15
  • Древесный угль ~0,04

Что значит «дерево ~0,4»? Это значит, что пиксели на текстуре должны быть не ярче 102 по RGB (если принять, что 255 — соответствует значению 1.0). Редко попадаются текстуры, где это соблюдается, поэтому надо корректировать руками. В целом нежелательно использовать цвета ниже 40 и выше 220.

Translucency & Transparency (Прозрачность)

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

Energy Conservation (Энергосбережение)

Теперь достаточно информации, чтобы сделать важный вывод, который заключается в том, что reflection (отражение) и diffusion (рассеивание) являются взаимоисключающими понятиями. Это связано с тем, что для того, чтобы свет был рассеянным, он должен сначала проникнуть через поверхность (то есть не отразиться). На языке рендера это называется примером Energy Conservation (энергосбережения), что просто означает, что свет, покидающий поверхность, никогда не бывает ярче того, который падал на нее изначально.

Чем сильнее отражение, тем темнее рассеивание. У зеркала, металлов, стекла – в идеале цвет рассеивания черный. Поэтому мокрый асфальт выглядит темным

Это легко реализуется в shading system (системе рендера): нужно просто вычесть отраженный свет, прежде чем создавать рассеянние. Это означает, что объекты с высокой отражающей способностью практически не будут освещаться рассеянным светом, просто потому, что на поверхность проникает мало света, так как в основном он отражается. Верно и обратное: если объект обладает яркой диффузией (рассеянием), то он не может быть сильно отражающим. Т.о. в предельных числах – объект или освещается или отражает (как на картинке ниже).

Энергосбережение такого рода является важным аспектом physically-based shading (рендера, основанного на физических данных). Это позволяет 3д-художнику работать со значениями отражательной способности и альбедо материала, случайно не нарушая законы физики (что, как правило, выглядит плохо). Хотя соблюдение этих ограничений в коде не является строго необходимым для создания красивого произведения искусства, оно играет полезную роль своего рода учителя по физике, который не позволяет произведениям искусства слишком сильно отклоняться от правил или становиться непоследовательными при разном освещении.

Metals

Электропроводящие материалы, в первую очередь металлы, заслуживают особого упоминания по нескольким причинам.

Во-первых, они обладают гораздо большей отражающей способностью, чем изоляторы (непроводники). Коэффициент отражения проводников обычно достигает 60-90%, в то время как у изоляторов он, как правило, намного ниже и находится в диапазоне 0-20%. Эти высокие коэффициенты не позволяют свету проникать внутрь и рассеиваться, придавая металлам очень блестящий вид.

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

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

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

Fresnel (Френель)

Огюстен-Жан Френель – его имя связано с целым рядом явлений, которые он первым точно описал. Было бы трудно вести дискуссию об отражении света без упоминания его имени.

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

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

Грани (поверхности) любого гладкого объекта должны действовать как идеальные (неокрашенные) зеркала, независимо от материала

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

Второе наблюдение, касающееся свойств Френеля, заключается в том, что кривая или градиент между углами не сильно варьируется от материала к материалу. Металлы отличаются друг от друга больше всего, но их тоже можно объяснить аналитически.

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

Это отличная новость, поскольку она может упростить создание контента. Рендер теперь может практически полностью справляться с эффектом Френеля самостоятельно. Программе рендера нужно только учитывать некоторые другие уже существующие свойства материала, такие как блеск и отражательная способность.

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

Microsurface (Микродетали поверхности)

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

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

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

На диаграмме выше вы можете видеть, как параллельные линии падающего света начинают расходиться при отражении от более грубой поверхности, поскольку каждый луч попадает на участок поверхности с разной ориентацией. Аналогом в случае с мячом и стеной может быть скала или что-то подобное неровное: мяч все равно будет отскакивать, но под непредсказуемым углом. Короче говоря, чем шероховатее поверхность, тем больше будет отклоняться отраженный свет или казаться размытым.

Т.к. оценка каждого элемента микроповерхности для рендеринга была бы непомерно трудоемкой с точки зрения использования памяти и вычислений, мы откажемся от непосредственного описания деталей микроповерхности и вместо этого зададим общий показатель шероховатости. При этом мы сможем создать довольно точные шейдеры (материалы), которые дадут аналогичные результаты. Эт показатель (показатели) часто называют Gloss (Глянцем), Гладкостью (Smoothness) или шероховатостью (Roughness).

Параметр микроповерхности является очень важной характеристикой любого материала, поскольку реальный мир полон самых разнообразных особенностей. Этот параметр может быть задан как текстура (gloss mapping) или как константа (число) для конкретного материала.

Карта блеска (gloss mapping) – не новая концепция, но она играет ключевую роль при рендере на физическом уровне (PBR), поскольку детализация микроповерхностей оказывает большое влияние на отражение света.

Energy Conservation (Again) (Сохранение энергии, снова)

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

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

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

Здесь мы имеем дело со второй формой энергосбережения, которую необходимо соблюдать в дополнение к балансу рассеяния/отражения, описанному ранее. Правильное использование этого параметра — один из наиболее важных моментов, требуемых для любого рендерера, стремящегося работать «на основе физических законов».

All Hail Microsurface (Сплошная микроповерхность)

И именно с учетом вышеизложенного мы приходим к важному выводу – блеск микроповерхности напрямую влияет на видимую яркость отражений. Это означает, что 3д-художник может наносить изменения непосредственно на карту блеска – царапины, вмятины, стертые или отполированные участки, что угодно, – а система PBR отобразит не только изменение формы отражения, но и относительную интенсивность. Никаких изменений специальной маски отражательной способности не требуется!

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

Кроме того, исследование реальных материалов показывает, что значения отражательной способности не сильно различаются (см. предыдущий раздел о проводимости). Хорошим примером могут служить вода и грязь (Water and Mud): обе поверхности обладают очень похожей отражательной способностью, но поскольку грязь шероховатая, а поверхность лужи очень гладкая, они кажутся очень разными с точки зрения их отражений. 3д-художник, создающий такую сцену в системе PBR, в первую очередь установил бы разницу с помощью карт блеска (Gloss) или шероховатости (Rough), а не корректировал бы отражательную способность (reflectivity), как показано ниже:

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

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

В заключение

Здесь собрано множество ссылок на статьи и инструменты www.riadesign.ru/3d-materialy.