Nodos de shader
95 nodos en 7 categorías, para crear materiales con nodos. Para aprender a usarlos, consulta Grafos de materiales.
Las entradas y las salidas tienen uno de cuatro tipos: float es un número, y vec2, vec3 y vec4 contienen dos, tres y cuatro números. Un vec3 contiene un color o una dirección. Si conectas puertos de tamaños distintos, se resuelve por ti cuando tiene sentido.
const
Valores fijos que escribes tú.
| Nodo | Qué hace | Entradas | Salidas |
|---|---|---|---|
constFloat | Un número fijo. | — | out:float |
constVec3 | Tres números fijos. | — | out:vec3 |
input
Valores de partida: coordenadas de textura (UV), la normal de la superficie, el tiempo, texturas y qué copia de un objeto se está dibujando.
| Nodo | Qué hace | Entradas | Salidas |
|---|---|---|---|
cameraDistance | A qué distancia está este píxel de la cámara. Sirve para desvanecer cosas con la distancia. | — | out:float |
chromaKey — Chroma key | Quita un color, por ejemplo para que un fondo verde se vuelva transparente. | color:vec3, key:vec3, similarity:float, smoothness:float, spill:float | rgba:vec4 |
instanceColor — Instance Color | El tono de la copia que se está dibujando. | — | out:vec3 |
instanceId — Instance ID | Qué copia de un objeto instanciado se está dibujando. Pásalo por un hash para que cada copia sea distinta. | — | out:float |
materialRef — Material | Usa otro material como punto de partida. | — | out:vec3 |
normal | Hacia dónde mira la superficie. | — | out:vec3 |
normalMap | Aplica un mapa de normales, que añade detalle a la superficie sin más geometría. | uv:vec2, strength:float | out:vec3 |
paramColor — Param (color) | Un color que aparece como ajuste del material, para que puedas cambiarlo sin editar el grafo. | — | out:vec3 |
paramFloat — Param (float) | Un número que aparece como ajuste del material, para que puedas cambiarlo sin editar el grafo. | — | out:float |
position | El punto de la superficie, en el espacio propio del objeto. | — | out:vec3 |
sampleLod — Sample Texture LOD | Lee una imagen con el nivel de desenfoque que elijas. Una forma barata de suavizarla. | uv:vec2, lod:float | rgba:vec4 |
screenUv | Dónde está el píxel en la pantalla, en lugar de en la superficie. | — | out:vec2 |
texelFetch — Texel Fetch | Lee un píxel exacto, sin suavizado. | texel:vec2 | rgba:vec4 |
texelSize — Texture Size | El tamaño de un píxel de una textura, para efectos que leen los píxeles vecinos. | — | size:vec2, texel:vec2 |
texture | Lee una imagen en las coordenadas indicadas. | uv:vec2 | rgba:vec4 |
time | Segundos desde que empezó la escena. Úsalo para todo lo que se mueve. | — | out:float |
triplanar | Proyecta una textura desde tres direcciones a la vez, para que las formas sin coordenadas de textura, o con coordenadas estiradas, se vean bien. | scale:float, blend:float | rgba:vec4 |
uv | Las coordenadas de textura del píxel que se está dibujando. La mayoría de los patrones empiezan aquí. | — | out:vec2 |
viewDirection | La dirección que va de la superficie hacia la cámara. | — | out:vec3 |
worldPosition | El mismo punto en coordenadas del mundo. Úsalo para efectos que se quedan en su sitio cuando un objeto se mueve. | — | out:vec3 |
light
Iluminación que puedes ajustar a tu gusto.
| Nodo | Qué hace | Entradas | Salidas |
|---|---|---|---|
fresnel | Más intenso en los bordes, donde la superficie se aleja de la vista. Úsalo para luz de contorno, campos de fuerza o el brillo de un coche. | power:float, normal:vec3 | out:float |
lit — Lit (scene lights) | Iluminación estándar, para que un grafo propio encaje en la escena. | color:vec3, roughness:float, specular:float, normal:vec3 | out:vec3 |
toonLit — Toon (scene lights) | Iluminación por franjas, para un aspecto de dibujo animado. | color:vec3, steps:float, normal:vec3 | out:vec3 |
math
Operaciones con números sueltos.
| Nodo | Qué hace | Entradas | Salidas |
|---|---|---|---|
abs | Quita el signo menos. | x:float | out:float |
add | Suma. | a:float, b:float | out:float |
atan2 | El ángulo hacia un punto. Úsalo para crear patrones circulares (radiales). | y:float, x:float | out:float |
ceil | Redondea hacia arriba. | x:float | out:float |
clamp | Mantiene un valor dentro de un rango. | x:float, min:float, max:float | out:float |
cos | Coseno. | x:float | out:float |
divide | Divide. | a:float, b:float | out:float |
exp | e elevado a la entrada. | x:float | out:float |
fbm | Ruido en capas, para nubes, humo, óxido y terreno. | uv:vec2, scale:float, octaves:float | out:float |
floor | Redondea hacia abajo. | x:float | out:float |
fract | Se queda solo con la parte decimal. La forma habitual de hacer que un patrón se repita. | x:float | out:float |
log | Logaritmo natural. | x:float | out:float |
max | El mayor de dos. | a:float, b:float | out:float |
min | El menor de dos. | a:float, b:float | out:float |
mix | Mezcla dos valores. | a:float, b:float, t:float | out:float |
mod | El resto de una división. Otra forma de que un valor vuelva a empezar cuando llega al límite. | x:float, y:float | out:float |
multiply | Multiplica. | a:float, b:float | out:float |
noise | Valores aleatorios suaves. Empieza por aquí para todo lo que deba parecer natural. | uv:vec2, scale:float | out:float |
oneMinus | Da la vuelta a un valor de 0 a 1: 0 pasa a ser 1, y 1 pasa a ser 0. | x:float | out:float |
posterize | Ajusta los valores a un número fijo de niveles, para un aspecto por franjas. | x:float, steps:float | out:float |
pow | Eleva a una potencia. | x:float, e:float | out:float |
remap | Pasa un valor de un rango a otro. | x:float, inMin:float, inMax:float, outMin:float, outMax:float | out:float |
round | Redondea al más cercano. | x:float | out:float |
sign | Da −1, 0 o 1. | x:float | out:float |
sin | Seno. Úsalo para oscilaciones, pulsos y ondas. | x:float | out:float |
smoothstep | Un borde suave, con una transición gradual entre los dos umbrales. Uno de los nodos más usados. | from:float, to:float, x:float | out:float |
sqrt | Raíz cuadrada. | x:float | out:float |
step | Un borde duro: 0 por debajo del umbral y 1 por encima. | edge:float, x:float | out:float |
subtract | Resta. | a:float, b:float | out:float |
tan | Tangente. | x:float | out:float |
voronoi | Patrones de celdas, para escamas, tierra agrietada y vidrieras. | uv:vec2, scale:float | dist:float, cell:float |
output
Donde termina el grafo: el aspecto final de la superficie.
| Nodo | Qué hace | Entradas | Salidas |
|---|---|---|---|
mrtOutput — Output (MRT) | Escribe varias salidas a la vez, para configuraciones avanzadas. | color:vec3, alpha:float, color1:vec3, alpha1:float, color2:vec3, alpha2:float, color3:vec3, alpha3:float | — |
output | Donde termina el grafo: el aspecto final de la superficie. | color:vec3, alpha:float, offset:vec3 | — |
surfaceOutput — Output (surface) | Describe la superficie: color base, metálico, rugosidad, normal, emisión y alfa. | 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
Nodos que leen la imagen ya terminada. Si usas uno, el grafo se convierte en un efecto a pantalla completa en lugar de un material de superficie.
| Nodo | Qué hace | Entradas | Salidas |
|---|---|---|---|
chromaticAberration | Separa los canales de color en los bordes, como un objetivo real. | uv:vec2, amount:float | out:vec3 |
contrast | Hace más claras las partes claras y más oscuras las oscuras. | color:vec3, amount:float | out:vec3 |
exposure | Hace más clara o más oscura toda la imagen. | color:vec3, amount:float | out:vec3 |
grain | Añade grano de película. | color:vec3, intensity:float | out:vec3 |
invert | Invierte los colores de la imagen. | color:vec3 | out:vec3 |
saturation | Hace los colores más intensos o más apagados. | color:vec3, amount:float | out:vec3 |
screenColor | La escena tal y como ya se ha dibujado. Si usas este nodo, el grafo se convierte en un efecto a pantalla completa. | — | out:vec3 |
tint | Lleva la imagen hacia un color. | color:vec3, tint:vec3 | out:vec3 |
vignette | Oscurece los bordes de la imagen. | color:vec3, offset:float, darkness:float | out:vec3 |
vector
Crea, separa y cambia vectores y colores.
| Nodo | Qué hace | Entradas | Salidas |
|---|---|---|---|
addVec3 | Suma dos vectores de tres números. | a:vec3, b:vec3 | out:vec3 |
alpha | Saca el canal de transparencia. | v:vec4 | out:float |
combineVec2 | Crea un vector con dos números. | x:float, y:float | out:vec2 |
combineVec3 | Crea un vector con tres números. | r:float, g:float, b:float | out:vec3 |
combineVec4 | Crea un vector con cuatro números. | rgb:vec3, a:float | out:vec4 |
cross | Una dirección perpendicular a las dos. | a:vec3, b:vec3 | out:vec3 |
distance | La distancia entre dos puntos. | a:vec3, b:vec3 | out:float |
dot | Producto escalar: cuánto se parecen dos direcciones. | a:vec3, b:vec3 | out:float |
equirectUv — Equirect UV | Proyecta una dirección sobre una imagen panorámica. | dir:vec3 | uv:vec2 |
flipbook — Flipbook | Reproduce como animación una cuadrícula de fotogramas guardada en una sola imagen. | uv:vec2, frame:float, tilesX:float, tilesY:float | uv:vec2 |
gamma | Aplica una curva gamma. | rgb:vec3, gamma:float | out:vec3 |
hsvToRgb | Vuelve a convertir tono, saturación y valor en un color. | hsv:vec3 | out:vec3 |
hueToRgb | Convierte un tono directamente en un color. | h:float | out:vec3 |
length | La longitud de un vector. | v:vec3 | out:float |
luminance | Lo claro que parece un color a la vista. | rgb:vec3 | out:float |
mixVec3 | Mezcla dos vectores de tres números. | a:vec3, b:vec3, t:float | out:vec3 |
multiplyVec3 | Multiplica dos vectores de tres números. | a:vec3, b:vec3 | out:vec3 |
normalize | Mantiene la dirección y pone la longitud a 1. | v:vec3 | out:vec3 |
panner | Desplaza las coordenadas con el tiempo, para agua que corre, cintas transportadoras o rayos de energía. | uv:vec2, speed:vec2 | out:vec2 |
reflect | Hace rebotar una dirección en una superficie. | v:vec3, normal:vec3 | out:vec3 |
rgb | Crea un color a partir de tres números. | v:vec4 | out:vec3 |
rgbToHsv | Convierte un color en tono, saturación y valor. La forma fácil de cambiar el tono. | rgb:vec3 | out:vec3 |
scaleVec2 | Multiplica un vector de dos números por un número. | v:vec2, s:float | out:vec2 |
scaleVec3 | Multiplica un vector de tres números por un número. | v:vec3, s:float | out:vec3 |
splitVec2 | Separa dos números. | v:vec2 | x:float, y:float |
splitVec3 | Separa tres números. | v:vec3 | x:float, y:float, z:float |
uvTransform | Escala, gira y mueve las coordenadas antes de leer una imagen. | uv:vec2, tiling:vec2, offset:vec2, rotation:float, center:vec2 | out:vec2 |