Нодовые материалы

Шейдерные ноды (Shader Nodes) существенно расширяют возможности стандартных материалов Blender, позволяя представить освещение как серию базовых преобразований.

_images/node_materials_title.png

Стандартные ноды

Blend4Web поддерживает все стандартные ноды Blender, однако некоторые из них работают недостаточно быстро и не рекомендуются к использованию в приложениях реального времени. Не рекомендуется создавать сложные материалы, особенно использующие большое количество нод Geometry и Texture.

Движок также частично поддерживает некоторые ноды Cycles. Более подробно этот вопрос рассмотрен в соответствующей главе.

Производительность и степень поддержки движком стандартных нод описаны в таблице.

Название ноды Функция Поддержка Производительность
Camera Data Используется для получения информации от активной камеры Поддерживается Средняя
ColorRamp Используется для генерации градиента Типы интерполяции B-Spline, Cardinal и Ease не поддерживаются Средняя
Combine HSV Собирает цвет из заданных значений тона, насыщенности и яркости Поддерживается Средняя
Combine RGB Собирает цвет из заданных значений красного, зелёного и синего каналов Поддерживается Высокая
Extended Material Подключает стандартный материал. Обладает большим количеством настроек по сравнению с нодой Material Входы Ambient и SpecTra не поддерживаются. Выход AO не поддерживается. Средняя
Gamma Регулирует гамму заданного цвета Поддерживается Высокая
Geometry Используется для получения информации о геометрии объекта Выход Vertex Alpha не поддерживается Не рекомендуется использовать большое количество этих нод
Hue/Saturation Регулирует оттенок и насыщенность заданного цвета Поддерживается Низкая
Invert Инвертирует заданный цвет Поддерживается Высокая
Lamp Data Используется для получения информации о заданном источнике света Выход Shadow не поддерживается Средняя
Mapping Преобразует текстурные координаты Поддерживается Средняя
Material Используется для подключения стандартного материала Поддерживается Средняя
Math Производит математические операции с заданными значениями Поддерживается Высокая
MixRGB Микширует два заданных цвета Поддерживается Низкая в режимах Burn, Dodge, Value, Saturation, Hue и Color, высокая в остальных режимах
Normal Генерирует нормальный вектор Поддерживается Высокая
Normal Map [1] Используется для подключения карты нормалей Поддерживается Средняя
Output Выводит результат работы нодового материала Поддерживается Средняя
Particle Info Используется для получения информации о системе частиц В материалах систем частиц типа Emitter Средняя
RGB Генерирует цвет в формате RGB Поддерживается Высокая
RGB Curves Определяет кривую, по которой изменяется заданный цвет Поддерживается Средняя
RGB to BW Преобразует заданный цвет в формате RGB из цветного в чёрно-белый Поддерживается Высокая
Separate HSV Разделяет заданный цвет на тон, насыщенность и яркость Поддерживается Высокая
Separate RGB Разделяет заданный цвет на красный, зелёный и синий каналы Поддерживается Высокая
Squeeze Value Сжимает заданное значение Поддерживается Высокая
Texture Задаёт текстуру Поддерживается Не рекомендуется использовать большое количество этих нод
Value Генерирует численное значение Поддерживается Высокая
Vector Curves Определяет кривую, по которой изменяется заданный вектор Поддерживается Средняя
Vector Math Производит математические операции над двумя заданными векторами Поддерживается Высокая
Vector Transform [2] Преобразует векторы, точки и нормали между пространствами координат мира, камеры и объекта. Поддерживается Средняя
[1]Параметр Color Space карты нормалей, используемой с этой нодой, должен иметь значение Non-Color. В противном случае результаты могут быть непредсказуемыми (хотя это не приведёт к крэшу движка).
[2]Если хотя бы один из внутренних параметров (Space to convert from... или Space to convert to...) имеет значение Object, любой объект, использующий данный материал, будет считаться динамическим.

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

Дополнительные ноды

Дополнительные ноды расширяют функционал стандартных с учётом специфики работы движка. Ноды оформляются в виде нодовых групп (Node Groups или Node Tree) со специально выбранным именем и форматом входов. Для удобства, все дополнительные ноды добавляются в blend-файл при его открытии.

_images/node_materials_nodes.png

Clamp (B4W_CLAMP)

Осуществить операцию ограничения над входом. В результате, все элементы вектора на выходе получают значения от 0 до 1 включительно.

_images/node_materials_clamp.png

Входные параметры

Image
Заданный вектор.

Выходные параметры

Image
Вектор после ограничения.

Glow Output (B4W_GLOW_OUTPUT)

Применяет эффект свечения (Glow) к нодовому материалу. Помимо ноды B4W_GLOW_OUTPUT в нодовом материале должна присутствовать нода Output.

_images/node_materials_glow_output.png

Входные параметры

Glow Color
Цвет свечения.
Factor

Степень свечения. Factor \(\in [0, 1]\).

  • Factor = 0 - свечение отсутствует.
  • Factor \(\in (0, 1]\) - свечение цветом Glow Color.

Levels of Quality (B4W_LEVELS_OF_QUALITY)

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

_images/node_materials_levels_of_quality.png

Входные параметры

HIGH
Значение, которое будет подано в выходной параметр Color при высоком и максимальном качестве изображения.
LOW
Значение, которое будет подано в выходной параметр Color при низком качестве изображения.
Fac
Значение, определяющее, какое из значений (HIGH или LOW) будет отображаться в Blender. Может принимать значения от 0 до 1. При значении параметра менее 0.5 будет виден вариант HIGH, при значении 0.5 и выше будет виден вариант LOW.

Parallax (B4W_PARALLAX)

Реализует смещение текстурных координат в соответствии с картой высот.

_images/node_materials_parallax.png

Входные параметры

UV
Исходные текстурные координаты.
Height Map
RGBA текстура с картой высот в альфа канале.
Scale
Коэффициент смещения текстурных координат.
Steps
Количество шагов при генерации смещенных текстурных координат. Чем больше данное значение, тем выше качество получаемой текстуры.
Lod Distance
Максимальное расстояние от камеры, на котором виден эффект.

Выходные параметры

UV
Измененные текстурные координаты, которые используются как вход для текстурных нод.

Reflect (B4W_REFLECT)

Вычисляет отражение заданного вектора относительно заданной нормали. Может применяться для наложения кубической карты (cubemap) на объект.

_images/node_materials_reflect.png

Входные параметры

Vector
Заданный вектор. Должен быть подключён ко входу View ноды Geometry.
Vector
Заданная нормаль. Для получения желаемого результата, вектор должен быть нормирован. Должен быть подключён ко входу Normal ноды Geometry.

Выходные параметры

Vector
Отражённый вектор. Следует подключать к входному параметру Vector ноды Texture, содержащего кубическую карту.

Refraction (B4W_REFRACTION)

Реализует эффект преломления. Этот эффект виден только в движке Blend4Web, но не в Blender.

_images/node_materials_refraction.png

Входные параметры

Normal
Вектор нормали в пространстве камеры, по которому происходит возмущение (сдвиг).
Refraction Bump

Коэффициент возмущения (сдвига) текстуры сцены позади объекта.

Значение по умолчанию: 0.001.

Выходные параметры

Color
Текстура сцены позади объекта с внесённым возмущением.

Примечание

Для отображения эффекта необходимо переключить опцию Refractions на панели Render > Reflections and Refractions в состояние AUTO или ON. Объект должен быть с типом прозрачности Alpha Blend.

См.также

Прозрачность

Replace (B4W_REPLACE)

Осуществляет замену входов в зависимости от того, в какой среде (viewport Blender’а или движок) в данный момент работает текущая сцена. При работе в Blender вход Color1 подключается к выходу Color, вход Color2 игнорируется. При работе в движке входы меняются местами (Color1 игнорируется, Color2 подключается к выходу). Нода предназначена для отображения во viewport’e одной конструкции нодов, а в движке - другой.

_images/node_materials_replace.png

Используется, как правило, для подключения карт нормалей. Нодовые материалы Blender’а не поддерживают тангентное пространство координат, в связи с чем единственный способ корректного отображения карт нормалей во viewport’e - их подключение внутри нод Material.

Входные параметры

Color1
Конструкция нод, видимая во вьюпорте Blender’а
Color2
Конструкция нод, видимая объекта в движке Blend4Web.

Выходные параметры

Color
Следует подключать к выходу Color ноды Material или Extended Material.

Smoothstep (B4W_SMOOTHSTEP)

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

_images/node_materials_smoothstep.png

Входные параметры

Value
Значение, на основе которого осуществляется интерполяция.
Edge0
Первое значениe для интерполяции.
Edge1
Второе значениe для интерполяции.

Выходные параметры

Value
Сглаженное значение.

Примечание

Для корректной интерполяции входное значение Value должно лежать в диапазоне между Edge0 и Edge1.

Time (B4W_TIME)

Осуществляет отсчет времени с момента старта движка в секундах. Может использоваться для анимации любых параметров в нодовых материалах - UV-координат, факторов смешивания, прозрачности и т.п.

_images/node_time.png

Входные параметры

Отсутствуют.

Выходные параметры

Value
Время (в секундах), прошедшее с момента старта движка.

Translucency (B4W_TRANSLUCENCY)

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

_images/node_materials_translucency.png

Входные параметры

Color
Одноканальная текстура, определяющая неоднородность материала, белый - максимальный эффект просвечивания, черный - его отсутствие. По умолчанию используется белый.
Backside Factor

Коэффициент коррекции цвета материала на обратной от источника света стороне. Основан на визуальном эффекте большей насыщенности цвета при просвечивании.

  • Backside Factor < 1 - коррекция в сторону осветления
  • Backside Factor = 1 - без коррекции
  • Backside Factor > 1 - коррекция в сторону затемнения

Значение по умолчанию: 1.

Spot Hardness
Коэффициент размытия светового пятна. При увеличении размеры пятна уменьшаются, края становятся более резкими. Значение по умолчанию: 1000.
Spot Intensity
Интенсивность светового пятна. При увеличении становится более ярким. Значение по умолчанию: 1.
Spot Diffuse Factor

Коэффициент влияния диффузного цвета материала на цвет светового пятна.

  • Spot Diffuse Factor = 0 - световое пятно имеет диффузный цвет
  • Spot Diffuse Factor = 1 - световое пятно имеет белый цвет

Значение по умолчанию: 1.

Выходные параметры

Translucency
Выход должен быть подключен ко входу Translucency ноды Extended Material.

Примечание

Возможно некорректное поведение ноды, если используются отредактированные нормали.

Vector View (B4W_VECTOR_VIEW)

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

_images/node_materials_vector_view.png

Входные параметры

Vector
Вектор в мировой системе координат.

Выходные параметры

Vector
Вектор в системе координат камеры.

Linear to SRGB и SRGB to Linear (Deprecated)

Преобразование цвета из линейного цветового пространства в пространство sRGB и наоборот. Функционал объявлен устаревшим с версии 15.04. В более новых версиях для преобразования цвета из sRGB в линейное пространство следует использовать нативную ноду Gamma со значением 2.200, а для преобразования из линейного пространства в sRGB - ту же ноду со значением 0.455.

_images/node_materials_gamma.png

Ноды Сycles

Примечание

Поддержка нод Cycles - экспериментальная возможность, которая на данный момент не рекомендуется к использованию при разработке серьёзных приложений.

Следует также заметить, что при использовании нод Cycles в Blend4Web конечный результат будет близок к изображению, созданному в самом Cycles, но всё же не идентичен ему.

Движок поддерживает следующие ноды Cycles:

  • Material Output (поддерживаются только входы Surface и Displacement);
  • BSDF Diffuse;
  • BSDF Glossy (поддерживается только распределение GGX; параметр Roughness не влияет на отражения);
  • Transparent BSDF;
  • Mix Shader;
  • Fresnel;
  • Layer Weight;
  • Image Texture;
  • Environment Texture;
  • Object Info;
  • Bump.

Следующие ноды поддерживаются частично:

  • Principled BSDF

    _images/node_materials_principled_bsdf.png
    • Поддерживаются входы Roughness, Metallic, Specular, Normal, Transmission и IOR;
  • Texture Coordinates (параметр From Dupli не поддерживается);

  • UV Map (параметр From Dupli не поддерживается);

  • Geometry (параметры Pointness и Parametric не поддерживаются).

  • Emission (не влияет на освещённость сцены).

Ноды Cycles также поддерживаются для объекта World, однако на данный момент нодовые материалы не влияют на цвет окружающей среды.

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

Ограничения

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

Если вы хотите узнать, как ваша сцена поведёт себя на низкопроизводительном устройстве, но не располагаете таковым, вы можете использовать очень полезную опцию Min Capabilities Mode. Она находится в Просмотрщике сцен на панели Tools & Debug.

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

Ниже приводятся две таблицы, содержащие количество текстур и переменных векторов, выделяемых движком для различных нод материалов.

Переменные векторы

Нода/Эффект Выделенные переменные векторы
Всегда зарезервировано 3
Нода Input -> Texture (если используется выход Normal) 1
Нода Blend4Web -> Parallax 1
Нода Vector -> Normal Map 1
Нода Input -> Material (если для материала выставлена опция Shading -> Tangent Shading) 1
Нода Input -> Geometry (если используется выход UV) 1
Cycles-нода Input -> UV Map 1
Cycles-нода Input -> Texture Coordinate (если используется выход UV) 1
Нода Input -> Geometry (если используется выход Vertex Color) 1
Тени на объекте с Alpha Blend-материалом

1 - 4

(в зависимости от количества каскадов теней и источников света, генерирующих тени)

Тени на объекте с Opaque-материалом

Эффект рефракции на материале

Планарное отражение, активированное для объекта

1
Эффект рефракции на материале 2

Текстуры

Нода/Эффект Выделенные текстуры
Нода Blend4Web -> Parallax 1
Нода Input -> Texture 1
Cycles-нода Texture -> Environment Texture 1

Нода Vector -> Vector Curves

Нода Color -> RGB Curves

Нода Converter -> Color Ramp

1

(количество нод в материале не играет роли)

Тени на объекте с Alpha Blend-материалом

1 - 4

(в зависимости от кол-ва каскадов/источников света, генерирующих тени)

Тени на объекте с Opaque-материалом 1
Эффект рефракции на материале 2
World -> Environment Lighting -> SkyTexture включена для World 1
Эффект отражения на объекте 1