Ноды шейдеров
Нод: 95, категорий: 7. Из них собирают материалы. Как ими пользоваться, рассказано на странице Графы материалов.
У входов и выходов один из четырёх типов: float — одно число, а vec2, vec3 и vec4 — два, три и четыре числа. В vec3 хранится цвет или направление. Если соединить порты разного размера, это обработается само там, где это имеет смысл.
const
Фиксированные значения, которые вы вводите сами.
| Нода | Что делает | Входы | Выходы |
|---|---|---|---|
constFloat | Фиксированное число. | — | out:float |
constVec3 | Три фиксированных числа. | — | out:vec3 |
input
Исходные значения: текстурные координаты (UV), нормаль поверхности, время, текстуры и то, какая копия объекта сейчас рисуется.
| Нода | Что делает | Входы | Выходы |
|---|---|---|---|
cameraDistance | Как далеко этот пиксель от камеры. Подходит, чтобы что-то растворялось с расстоянием. | — | out:float |
chromaKey — Chroma key | Убирает цвет, например чтобы сделать зелёный фон прозрачным. | color:vec3, key:vec3, similarity:float, smoothness:float, spill:float | rgba:vec4 |
instanceColor — Instance Color | Оттенок копии, которая сейчас рисуется. | — | out:vec3 |
instanceId — Instance ID | Какая копия объекта сейчас рисуется. Передайте его в хеш, чтобы все копии стали разными. | — | out:float |
materialRef — Material | Берёт другой материал за основу. | — | out:vec3 |
normal | Куда смотрит поверхность. | — | out:vec3 |
normalMap | Применяет карту нормалей и добавляет детали поверхности без лишней геометрии. | uv:vec2, strength:float | out:vec3 |
paramColor — Param (color) | Цвет, который виден в настройках материала. Его можно менять, не трогая граф. | — | out:vec3 |
paramFloat — Param (float) | Число, которое видно в настройках материала. Его можно менять, не трогая граф. | — | out:float |
position | Точка на поверхности в собственных координатах объекта. | — | out:vec3 |
sampleLod — Sample Texture LOD | Читает изображение с выбранной степенью размытия. Простой способ его смягчить. | uv:vec2, lod:float | rgba:vec4 |
screenUv | Где пиксель находится на экране, а не на поверхности. | — | out:vec2 |
texelFetch — Texel Fetch | Читает ровно один пиксель, без сглаживания. | texel:vec2 | rgba:vec4 |
texelSize — Texture Size | Размер одного пикселя текстуры — для эффектов, которые читают соседние пиксели. | — | size:vec2, texel:vec2 |
texture | Читает изображение в заданных координатах. | uv:vec2 | rgba:vec4 |
time | Секунды с запуска сцены. Подходит для всего, что движется. | — | out:float |
triplanar | Накладывает текстуру сразу с трёх сторон, чтобы правильно выглядели формы без текстурных координат или с растянутыми координатами. | scale:float, blend:float | rgba:vec4 |
uv | Текстурные координаты пикселя, который сейчас рисуется. С них начинается большинство узоров. | — | out:vec2 |
viewDirection | Направление от поверхности к камере. | — | out:vec3 |
worldPosition | Та же точка в мировых координатах. Подходит для эффектов, которые остаются на месте, когда объект движется. | — | out:vec3 |
light
Освещение, которое можно настроить самому.
| Нода | Что делает | Входы | Выходы |
|---|---|---|---|
fresnel | Сильнее по краям, где поверхность отворачивается. Подходит для контурного света, силовых полей или блеска на машине. | power:float, normal:vec3 | out:float |
lit — Lit (scene lights) | Стандартное освещение, чтобы свой граф всё равно вписывался в сцену. | color:vec3, roughness:float, specular:float, normal:vec3 | out:vec3 |
toonLit — Toon (scene lights) | Освещение полосами для мультяшного вида. | color:vec3, steps:float, normal:vec3 | out:vec3 |
math
Вычисления с отдельными числами.
| Нода | Что делает | Входы | Выходы |
|---|---|---|---|
abs | Убирает знак минус. | x:float | out:float |
add | Складывает. | a:float, b:float | out:float |
atan2 | Угол до точки. Подходит для круговых (радиальных) узоров. | y:float, x:float | out:float |
ceil | Округляет вверх. | x:float | out:float |
clamp | Не даёт значению выйти за пределы диапазона. | x:float, min:float, max:float | out:float |
cos | Косинус. | x:float | out:float |
divide | Делит. | a:float, b:float | out:float |
exp | e в степени входа. | x:float | out:float |
fbm | Шум в несколько слоёв — для облаков, дыма, ржавчины и рельефа. | uv:vec2, scale:float, octaves:float | out:float |
floor | Округляет вниз. | x:float | out:float |
fract | Оставляет только часть после запятой. Обычный способ сделать узор повторяющимся. | x:float | out:float |
log | Натуральный логарифм. | x:float | out:float |
max | Большее из двух. | a:float, b:float | out:float |
min | Меньшее из двух. | a:float, b:float | out:float |
mix | Смешивает два значения. | a:float, b:float, t:float | out:float |
mod | Остаток от деления. Ещё один способ пустить значение по кругу. | x:float, y:float | out:float |
multiply | Умножает. | a:float, b:float | out:float |
noise | Плавные случайные значения. Начните с неё для всего, что должно выглядеть естественно. | uv:vec2, scale:float | out:float |
oneMinus | Переворачивает значение от 0 до 1: 0 становится 1, а 1 становится 0. | x:float | out:float |
posterize | Сводит значения к заданному числу ступеней, чтобы получились полосы. | x:float, steps:float | out:float |
pow | Возводит в степень. | x:float, e:float | out:float |
remap | Переводит значение из одного диапазона в другой. | x:float, inMin:float, inMax:float, outMin:float, outMax:float | out:float |
round | Округляет до ближайшего. | x:float | out:float |
sign | Даёт −1, 0 или 1. | x:float | out:float |
sin | Синус. Подходит для покачиваний, пульсации и ряби. | x:float | out:float |
smoothstep | Мягкая граница с плавным переходом между двумя порогами. Одна из самых нужных нод. | from:float, to:float, x:float | out:float |
sqrt | Квадратный корень. | x:float | out:float |
step | Резкая граница: ниже порога 0, выше — 1. | edge:float, x:float | out:float |
subtract | Вычитает. | a:float, b:float | out:float |
tan | Тангенс. | x:float | out:float |
voronoi | Узор из ячеек — для чешуи, потрескавшейся земли и витража. | uv:vec2, scale:float | dist:float, cell:float |
output
Где граф заканчивается: как в итоге выглядит поверхность.
| Нода | Что делает | Входы | Выходы |
|---|---|---|---|
mrtOutput — Output (MRT) | Записывает несколько выходов сразу, для сложных схем. | color:vec3, alpha:float, color1:vec3, alpha1:float, color2:vec3, alpha2:float, color3:vec3, alpha3:float | — |
output | Где граф заканчивается: итоговый вид поверхности. | color:vec3, alpha:float, offset:vec3 | — |
surfaceOutput — Output (surface) | Описывает поверхность: основной цвет, металличность, шероховатость, нормаль, свечение и прозрачность. | baseColor:vec3, metallic:float, roughness:float, emissive:vec3, normal:vec3, alpha:float, offset:vec3, clearcoat:float, clearcoatRoughness:float, ior:float, transmission:float, thickness:float | — |
post
Ноды, которые читают готовый кадр. Если использовать такую ноду, граф станет эффектом на весь экран, а не материалом поверхности.
| Нода | Что делает | Входы | Выходы |
|---|---|---|---|
chromaticAberration | Разводит цветовые каналы по краям, как настоящий объектив. | uv:vec2, amount:float | out:vec3 |
contrast | Делает светлое светлее, а тёмное темнее. | color:vec3, amount:float | out:vec3 |
exposure | Делает всё изображение светлее или темнее. | color:vec3, amount:float | out:vec3 |
grain | Добавляет плёночное зерно. | color:vec3, intensity:float | out:vec3 |
invert | Инвертирует цвета изображения. | color:vec3 | out:vec3 |
saturation | Делает цвета ярче или бледнее. | color:vec3, amount:float | out:vec3 |
screenColor | Сцена в том виде, в каком она уже нарисована. С этой нодой граф становится эффектом на весь экран. | — | out:vec3 |
tint | Сдвигает изображение к заданному цвету. | color:vec3, tint:vec3 | out:vec3 |
vignette | Затемняет края кадра. | color:vec3, offset:float, darkness:float | out:vec3 |
vector
Собрать, разобрать и изменить векторы и цвета.
| Нода | Что делает | Входы | Выходы |
|---|---|---|---|
addVec3 | Складывает два вектора из трёх чисел. | a:vec3, b:vec3 | out:vec3 |
alpha | Достаёт канал прозрачности. | v:vec4 | out:float |
combineVec2 | Собирает вектор из двух чисел. | x:float, y:float | out:vec2 |
combineVec3 | Собирает вектор из трёх чисел. | r:float, g:float, b:float | out:vec3 |
combineVec4 | Собирает вектор из четырёх чисел. | rgb:vec3, a:float | out:vec4 |
cross | Направление под прямым углом к обоим. | a:vec3, b:vec3 | out:vec3 |
distance | Расстояние между двумя точками. | a:vec3, b:vec3 | out:float |
dot | Скалярное произведение: насколько совпадают два направления. | a:vec3, b:vec3 | out:float |
equirectUv — Equirect UV | Переводит направление в точку на панорамном изображении. | dir:vec3 | uv:vec2 |
flipbook — Flipbook | Проигрывает как анимацию сетку кадров, собранную в одном изображении. | uv:vec2, frame:float, tilesX:float, tilesY:float | uv:vec2 |
gamma | Применяет гамма-кривую. | rgb:vec3, gamma:float | out:vec3 |
hsvToRgb | Собирает цвет обратно из тона, насыщенности и яркости. | hsv:vec3 | out:vec3 |
hueToRgb | Превращает тон сразу в цвет. | h:float | out:vec3 |
length | Длина вектора. | v:vec3 | out:float |
luminance | Насколько ярким цвет кажется глазу. | rgb:vec3 | out:float |
mixVec3 | Смешивает два вектора из трёх чисел. | a:vec3, b:vec3, t:float | out:vec3 |
multiplyVec3 | Умножает два вектора из трёх чисел. | a:vec3, b:vec3 | out:vec3 |
normalize | Сохраняет направление и делает длину равной 1. | v:vec3 | out:vec3 |
panner | Сдвигает координаты со временем — для текущей воды, конвейерных лент или энергетических лучей. | uv:vec2, speed:vec2 | out:vec2 |
reflect | Отражает направление от поверхности. | v:vec3, normal:vec3 | out:vec3 |
rgb | Собирает цвет из трёх чисел. | v:vec4 | out:vec3 |
rgbToHsv | Раскладывает цвет на тон, насыщенность и яркость. Так проще всего сдвинуть тон. | rgb:vec3 | out:vec3 |
scaleVec2 | Умножает вектор из двух чисел на число. | v:vec2, s:float | out:vec2 |
scaleVec3 | Умножает вектор из трёх чисел на число. | v:vec3, s:float | out:vec3 |
splitVec2 | Разделяет два числа. | v:vec2 | x:float, y:float |
splitVec3 | Разделяет три числа. | v:vec3 | x:float, y:float, z:float |
uvTransform | Масштабирует, поворачивает и сдвигает координаты, прежде чем читать изображение. | uv:vec2, tiling:vec2, offset:vec2, rotation:float, center:vec2 | out:vec2 |