Материалы PBR
Материалы PBR — это один из поддерживаемых типов материалов в службе Удаленной отрисовки Azure. Они используются для треугольных сеток , которые должны получать реалистичное освещение. С другой стороны, облака точек не влияют на динамическое освещение.
PBR расшифровывается как Physically Based Rendering (физически верная отрисовка) и означает, что материал описывает визуальные свойства поверхности в соответствии с реальным физическим миром, так что при любых условиях освещения результат будет выглядеть реалистично. Большинство современных игровых двигателей и средств создания контента поддерживают материалы PBR, так как они считаются лучшим приближением реальных сценариев для отрисовки в режиме реального времени.
Основная идея физически верной отрисовки заключается в использовании свойств BaseColor, Metalness и Roughness для имитации широкого спектра реальных материалов. В рамках этой статьи мы не будем подробно рассматривать PBR. Дополнительные сведения о PBR см. в других источниках.
Материалы PBR не являются универсальным решением, хотя. Существуют материалы, отражающие цвет иначе в зависимости от угла обзора. Например, некоторые ткани или краска для автомобилей. Эти виды материалов не обрабатываются стандартной моделью PBR и в настоящее время не поддерживаются azure Удаленная отрисовка. Это ограничение включает расширения PBR, такие как тонкие пленки (многоуровневые поверхности) и Clear-Coat (для автомобильных краски).
Свойства материала PBR
Следующие свойства материала предоставляются в API среды выполнения, например в классе C# Pbr Material или в классе C++ Pbr Material соответственно.
PbrFlags
: флаги функций misc можно объединить в этой битовой маске, чтобы включить следующие функции:TransparentMaterial
: Для материалов PBR существует только один параметр прозрачности: он включен или нет. Непрозрачность определяется альфа-каналом цвета альбедо. При включении вызывается более сложный метод отрисовки для рисования полупрозрачных поверхностей. Удаленная отрисовка Azure реализует настоящую порядко-независимую прозрачность (OIT). Отрисовка прозрачной геометрии требует очень много ресурсов. Если вам нужны только отверстия на поверхности, например для листьев дерева, лучше использовать альфа-вырезку.
Обратите внимание на приведенное выше изображение, как правая часть сферы полностью прозрачна, но отражение по-прежнему видно.
Внимание
Если материал должен переключаться с непрозрачного на прозрачный в среде выполнения, отрисовщик должен использовать режим отрисовки TileBasedComposition. Это ограничение не относится к материалам, которые с самого начала преобразуются в виде прозрачных материалов.
UseVertexColor
: если сетка содержит vertex цвета и этот параметр включен, цвет сетки vertex умножается наAlbedoColor
иAlbedoMap
. По умолчаниюUseVertexColor
отключен.DoubleSided
: Если двусторонность имеет значение true, треугольники с этим материалом отрисовываются, даже если камера смотрит на их задние лица. Для материалов PBR освещение также корректно вычисляется для задних граней. Этот параметр по умолчанию отключен. См. также Single-sided rendering.SpecularHighlights
: включает зрителя для этого материала. По умолчаниюSpecularHighlights
флаг включен.AlphaClipped
: включает жесткие вырезания на пиксель на основе альфа-значения ниже значенияAlphaClipThreshold
(см. ниже). Это работает для непрозрачных материалов, а также.FresnelEffect
: Этот флаг материала обеспечивает эффект аддитивного френеля на соответствующий материал. Внешний вид эффекта регулируется другими параметрамиFresnelEffectColor
fresnel иFresnelEffectExponent
описано ниже.TransparencyWritesDepth
: еслиTransparencyWritesDepth
флаг установлен на материале и материал прозрачный, объекты, использующие этот материал, также будут способствовать окончательному буферу глубины. См. флаг материала PBR transparent в следующем разделе. Включение этой функции рекомендуется, если для вашего сценария требуется более правдоподобное перепроецирование на поздних этапах полностью прозрачных сцен. Для смешанных прозрачных и непрозрачных сцен этот параметр может привести к нереалистичному поведению перепроецирования или неправдоподобным артефактам перепроецирования. По этой причине значение по умолчанию и рекомендуемый вариант для универсальных сценариев — отключить этот флаг. Записанные значения глубины взяты из попиксельного уровня глубины объекта, расположенного ближе всего к камере.
AlbedoColor
: этот цвет умножается на другие цвета, напримерAlbedoMap
цвета или vertex цвета. Если в материале включена прозрачность, альфа-канал используется для настройки непрозрачности, где1
— полностью непрозрачный, а0
— полностью прозрачный. Цвет albedo по умолчанию непрозрачный белый.Примечание.
Когда материал PBR полностью прозрачный, как идеально чистая стеклянная поверхность, она по-прежнему отражает окружающую среду. Яркие участки, например солнце, по-прежнему видны в отражении. Цветовые материалы ведут себя иначе.
AlbedoMap
: 2D-текстура для значений альбэдо на пиксель.AlphaClipThreshold
: еслиAlphaClipped
флаг задан в свойствеPbrFlags
, все пиксели, где альфа-значение albedo меньше, чемAlphaClipThreshold
не будет вырисовано. Альфа-обрезание можно использовать даже без включения прозрачности, и его гораздо быстрее отрисовать. Тем не менее материалы с альфа-обрезкой по-прежнему медленнее отрисовываются, чем полностью непрозрачные материалы. По умолчанию альфа-обрезка отключена.TexCoordScale
иTexCoordOffset
: масштабирование умножается на координаты текстуры UV, смещение добавляется к нему. Можно использовать для растяжения и сдвига текстур. Масштаб по умолчанию — (1, 1), а смещение — (0, 0).FresnelEffectColor
: цвет френеля, используемый для этого материала. Важно только при установке флага эффекта френеля на этом материале (см. выше). Это свойство управляет базовым цветом сияния Френеля (подробные сведения см. в разделе Эффект Френеля). В настоящее время важны только значения RGB-канала, и альфа-значение будет игнорироваться.FresnelEffectExponent
: экспонент fresnel, используемый для этого материала. Важно только при установке флага эффекта френеля на этом материале (см. выше). Это свойство управляет распространением сияния Френеля. Минимальное значение 0,01 приводит к распространению по всему объекту. Максимальное значение 10,0 сжимает блеск только наиболее пасущихся краев, видимых.PbrVertexAlphaMode
: определяет, как используется альфа-канал цветов вершин. Предоставляются следующие режимы:Occlusion
: альфа-значение представляет значение внешнего окклюзии и, следовательно, влияет только на косвенное освещение из неба.LightMask
: альфа-значение служит коэффициентом масштабирования для общего объема примененного освещения, то есть альфа-значение может использоваться для темных областей. Это влияет как на косвенное, так и прямое освещение.Opacity
: Альфа представляет, как непрозрачный (1.0) или прозрачный (0,0) материал.
NormalMap
: Чтобы имитировать подробные детали, можно предоставить обычную карту .NormalMapScale
: скалярное значение, которое масштабирует нормальную силу карты. Значение 1.0 принимает обычное значение карты как есть, значение 0 делает поверхность плоской. Значения, превышающие 1,0, преувеличивают нормальную пертурбацию карты.Roughness
иRoughnessMap
: грубость определяет, насколько шероховато или гладко поверхности. Неровная поверхность отражает свет в большем количестве направлений, чем гладкая, поэтому отражения выглядят размытыми, а не четкими. Диапазон значений — от0.0
до1.0
. Если значениеRoughness
равно0.0
, отражения будут четкими. Если значениеRoughness
равно0.5
, отражения будут размытыми. Если одновременно указаны значение неровности и схема неровности, итоговое значение будет являться их произведением.Metalness
иMetalnessMap
: в физике это свойство соответствует ли поверхность проводяющей или диэлектрической. У проводящих материалов другие отражающие свойства, и они, как правило, могут отражать свет без цвета альбедо. В материалах PBR это свойство влияет на то, насколько поверхность отражает окружающую среду. Допустимы значения от0.0
до1.0
. Когда металличность0.0
, цвет альбэдо полностью виден, и материал выглядит как пластик или керамика. Когда свойство металличности имеет значение0.5
, материал выглядит как окрашенный металл. Когда металличность1.0
, поверхность почти полностью теряет свой цвет альбэдо, и только отражает окружающую среду. Например, еслиmetalness
имеет значение1.0
, аroughness
—0.0
, поверхность выглядит как настоящее зеркало. Если одновременно указаны значение металличности и схема металличности, итоговое значение будет являться их произведением.На рисунке выше сфера в правом нижнем углу выглядит как реальный металл, а в левом нижнем углу — как керамика или пластик. Цвет альбедо также изменяется в соответствии с физическими свойствами. При увеличении неровности материал теряет четкость отражения.
AOMap
иAOScale
: внешний окклюзион делает объекты с трещинами выглядеть более реалистично, добавляя тени в occluded области. Значение затемнения имеет диапазон от0.0
до1.0
, где0.0
означает полное затемнение, а1.0
— его отсутствие. Если 2D-текстура предоставляется как карта окклюзии, эффект включен иAOScale
действует в качестве умножения.
Переопределение цветового материала во время преобразования
Подмножество свойств материала цвета можно переопределить во время преобразования модели через файл переопределения материала. В следующей таблице показано сопоставление свойств среды выполнения, описанных выше, и соответствующее имя свойства в файле переопределения:
Имя свойства материала | Имя свойства в переопределении файла |
---|---|
PbrFlags.TransparentMaterial |
transparent |
PbrFlags.AlphaClipped |
alphaClipEnabled |
PbrFlags.UseVertexColor |
useVertexColor |
PbrFlags.DoubleSided |
isDoubleSided |
PbrFlags.TransparencyWritesDepth |
transparencyWritesDepth |
AlbedoColor |
albedoColor |
TexCoordScale |
textureCoordinateScale |
TexCoordOffset |
textureCoordinateOffset |
NormalmapScale |
normalMapScale |
Metalness |
metalness |
Roughness |
roughness |
AlphaClipThreshold |
alphaClipThreshold |
Технические сведения
Удаленная отрисовка Azure использует модель BRDF микрограней Кука — Торренса с GGX NDF, апроксимацию Шлика для Френеля, функцию видимости Смита GGX и ламбертовское рассеяние. В настоящее время эта модель представляет собой промышленный стандарт. Более подробные сведения см. в этой статье: Физически верная отрисовка: Кук — Торренс
Альтернатива модели PBR металличности и неровности, используемой в Удаленной отрисовке Azure, — модель PBR зеркальности и глянца. Эта модель может представлять более широкий спектр материалов. Тем не менее, это дороже, и обычно не работает хорошо для случаев реального времени. Невозможно преобразовать из Specular-Glossiness в Metalness-Шероховатость, так как есть (диффузные, спекулярные) пары значений, которые не могут быть преобразованы в (BaseColor, Metalness). Преобразование в обратном направлении выполняется проще и точнее, поскольку все пары (BaseColor, Metalness) соответствуют хорошо определенным парам (Diffuse, Specular).
Документация по API
- Класс C# PbrMaterial
- C# RenderingConnection.CreateMaterial()
- Класс C++ PbrMaterial
- C++ RenderingConnection::CreateMaterial()