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

Шейдерные ноды (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