Цветовые материалы
Цветовые материалы — это один из поддерживаемых типов материалов в Удаленной отрисовке Azure. Они используются для сеток , которые не должны получать никакого освещения, но, скорее, всегда отображаются на полной яркости. Это могут быть светящиеся материалы, например приборная панель в автомобиле, лампочка или данные, которые уже включают статическое освещение, например модели, полученные через фотограмметрию.
Цветовые материалы более эффективны для отрисовки, чем материалы PBR, из-за простой модели заливки. Они также поддерживают различные режимы прозрачности.
Свойства цветовых материалов
Следующие свойства материала предоставляются в API среды выполнения, например в классе Color Material C# или классе Color Material C++ соответственно.
ColorFlags
: флаги других функций можно объединить в этой битовой маске, чтобы включить следующие функции:UseVertexColor
: если сетка содержит vertex цвета и этот параметр включен, цвет сетки vertex умножается наAlbedoColor
иAlbedoMap
. По умолчаниюUseVertexColor
отключен.DoubleSided
: Если двусторонность имеет значение true, треугольники с этим материалом отрисовываются, даже если камера смотрит на их задние лица. Этот параметр по умолчанию отключен. См. также Single-sided rendering.AlphaClipped
: включает жесткие вырезания на пиксель на основе альфа-значения ниже значенияAlphaClipThreshold
(см. ниже). Это работает для непрозрачных материалов, а также.TransparencyWritesDepth
: еслиTransparencyWritesDepth
флаг установлен на материале и материал прозрачный, объекты, использующие этот материал, также будут способствовать окончательному буферу глубины. См. свойствоColorTransparencyMode
цвета материала в следующем разделе. Включение этой функции рекомендуется, если для вашего сценария требуется более правдоподобное перепроецирование на поздних этапах полностью прозрачных сцен. Для смешанных прозрачных и непрозрачных сцен этот параметр может привести к нереалистичному поведению перепроецирования или неправдоподобным артефактам перепроецирования. По этой причине значение по умолчанию и рекомендуемый вариант для универсальных сценариев — отключить этот флаг. Записанные значения глубины взяты из попиксельного уровня глубины объекта, расположенного ближе всего к камере.FresnelEffect
: Этот флаг материала обеспечивает эффект аддитивного френеля на соответствующий материал. Внешний вид эффекта регулируется другими параметрамиFresnelEffectColor
fresnel иFresnelEffectExponent
описано ниже.
AlbedoColor
: этот цвет умножается на другие цвета, напримерAlbedoMap
цвета или vertex цвета. Если в материале включена прозрачность, альфа-канал используется для настройки непрозрачности, где1
— полностью непрозрачный, а0
— полностью прозрачный. Цвет albedo по умолчанию непрозрачный белый.Примечание.
Так как цветовые материалы не отражают среду, полностью прозрачный цветовой материал станет невидимым. Материалы PBR ведут себя иначе.
AlbedoMap
: 2D-текстура для значений альбэдо на пиксель.AlphaClipThreshold
: еслиAlphaClipped
флаг задан в свойствеColorFlags
, все пиксели, где альфа-значение albedo меньше, чем значениеAlphaClipThreshold
не будет вырисовано. Альфа-обрезание можно использовать даже без включения прозрачности, и его гораздо быстрее отрисовать. Тем не менее материалы с альфа-обрезкой по-прежнему медленнее отрисовываются, чем полностью непрозрачные материалы. По умолчанию альфа-обрезка отключена.TexCoordMode
: определяет режим, используемый для создания координат текстуры для текстуры albedo. Этот режим игнорируется, если этот материал не использует текстуру. По умолчанию координаты текстуры извлекаются из входных потоков вершин сетки (режимTextureCoordinateGenerationMode.SourceUv0
илиTextureCoordinateGenerationMode.SourceUv1
) и затем преобразуются черезTexCoordScale
иTexCoordOffset
. При настройке материала с помощью кода этот режим также можно задатьTextureCoordinateGenerationMode.PlanarObjectSpace
илиTextureCoordinateGenerationMode.PlanarWorldSpace
создать координаты в качестве расстояния вершин до двух настраиваемых трехмерных плоскостейTexCoordPlaneU
иTexCoordPlaneV
. Это называется планомерным сопоставлением текстур.TexCoordScale
иTexCoordOffset
: для координат текстуры из исходной сетки можно применить дополнительное линейное преобразование. Масштаб умножается на координаты текстуры UV, смещение добавляется к нему. Можно использовать для растяжения и сдвига текстур. Масштаб по умолчанию — (1, 1), а смещение — (0, 0).TexCoordPlaneU
иTexCoordPlaneV
: для режимов планарного сопоставления эти плоскости определяют плоскости текстур для координат u-координат и v-координат соответственно. Плоскости определяются в стандартной обычной форме (A, B,C,D), поэтому координата вычисляется как t = Ax + B+ C*z + D, где (x,y,z) — это позиция вершины в мире или в пространстве объектов.FresnelEffectColor
: цвет френеля, используемый для этого материала. Важно только при установке флага эффекта френеля на этом материале (см. выше). Это свойство управляет базовым цветом сияния Френеля (подробные сведения см. в разделе Эффект Френеля). В настоящее время важны только значения RGB-канала, и альфа-значение будет игнорироваться.FresnelEffectExponent
: экспонент fresnel, используемый для этого материала. Важно только при установке флага эффекта френеля на этом материале (см. выше). Это свойство управляет распространением сияния Френеля. Минимальное значение 0,01 приводит к распространению по всему объекту. Максимальное значение 10,0 сжимает блеск только наиболее пасущихся краев, видимых.VertexMix
: это значение между0
и1
указывает, насколько сильно vertex цвет в сетке способствует окончательному цвету. При значении по умолчанию, равном 1, цвет vertex полностью умножается на цвет альбедо. Если значение равно 0, цвета vertex полностью игнорируются.ColorTransparencyMode
: В отличие от материалов PBR, цветные материалы различаются между различными режимами прозрачности:Opaque
: режим по умолчанию отключает прозрачность. Тем не менее альфа-обрезку по-прежнему можно использовать и это рекомендуемый вариант, если ее будет достаточно.AlphaBlended
: этот режим аналогичен режиму прозрачности для материалов PBR. Его следует использовать для прозрачных материалов, например для стекла.Additive
: этот режим является самым простым и наиболее эффективным режимом прозрачности. Материал добавляется к отрисованному изображению. Этот режим можно использовать для имитации свечения (прозрачных материалов), таких как выделительные маркеры.
Примечание.
Хотя AlbedoColor
и имеют тот же допустимый диапазон значений, что и FresnelEffectColor
для материалов PBR, их каналы будут эффективно зажаты в [0; 1] для цветных материалов.
Переопределение цветового материала во время преобразования
Подмножество свойств материала цвета можно переопределить во время преобразования модели через файл переопределения материала. В следующей таблице показано сопоставление свойств среды выполнения, описанных выше, и соответствующее имя свойства в файле переопределения:
Имя свойства материала | Имя свойства в переопределении файла |
---|---|
ColorFlags.AlphaClipped |
alphaClipEnabled |
ColorFlags.UseVertexColor |
useVertexColor |
ColorFlags.DoubleSided |
isDoubleSided |
ColorFlags.TransparencyWritesDepth |
transparencyWritesDepth |
AlbedoColor |
albedoColor |
TexCoordScale |
textureCoordinateScale |
TexCoordOffset |
textureCoordinateOffset |
ColorTransparencyMode |
transparent |
AlphaClipThreshold |
alphaClipThreshold |
Документация по API
- Класс C# ColorMaterial
- C# RenderingConnection.CreateMaterial()
- Класс C++ ColorMaterial
- C++ RenderingConnection::CreateMaterial()