Ir al contenido

Color, efectos y texturas

Cada ejemplo de esta página se ejecuta después de estas dos líneas y termina enviando un color al nodo Salida:

from pyzed import shading
g = shading.Graph("demo")

Los colores son vec3 (r, g, b) o vec4 (r, g, b, a) con valores de 0 a 1, no de 0 a 255: (1, 0.5, 0) es naranja.

HSV to RGB · hsv_to_rgb · Color · g.hsv_to_rgb(...)

Un color a partir de tono (de 0 a 1 alrededor de la rueda), saturación y valor.

El nodo HSV a RGB tal como se ve en la vista Shader, con su vista previa

Un color a partir del tono (0..1 alrededor de la rueda: rojo, amarillo, verde, cian, azul, magenta, rojo), la saturación y el valor. Conecta el Tiempo al tono para un arcoíris que gira.

Entrada Tipo Por defecto
h · tono float 0
s · saturación float 1
v · valor float 1
Salida Tipo
rgb vec3
Ejemplo
uv = g.uv()
g.output(g.rgba(g.hsv_to_rgb(uv["x"], 0.8, 1.0), 1.0))

RGB to HSV · rgb_to_hsv · Color · g.rgb_to_hsv(...)

El tono, la saturación y el valor de un color.

El nodo RGB a HSV tal como se ve en la vista Shader, con su vista previa

Separa un color en tono, saturación y valor, para cambiar uno de ellos.

Entrada Tipo Por defecto
rgb vec3 (1, 0, 0)
Salida Tipo
hsv vec3
h · tono float
s · saturación float
v · valor float
Ejemplo
hsv = g.rgb_to_hsv([1.0, 0.5, 0.0])
g.output(g.rgba(g.hsv_to_rgb(hsv["h"], 0.3, hsv["v"]), 1.0))

Hue shift · hue_shift · Color · g.hue_shift(...)

Gira el tono de un color (shift de 0 a 1 es una vuelta completa).

El nodo Desplazar tono tal como se ve en la vista Shader, con su vista previa

Gira el tono de un color por la rueda (shift 1 es una vuelta completa).

Entrada Tipo Por defecto
rgb vec3 (1, 0, 0)
shift · desplazamiento float 0.25
Salida Tipo
rgb vec3
Ejemplo
g.output(g.rgba(g.hue_shift([1.0, 0.2, 0.2], g.time(scale=0.2)["time"]), 1.0))

Saturation · saturation · Color · g.saturation(...)

Más (por encima de 1) o menos (por debajo de 1) colorido; 0 es gris.

El nodo Saturación tal como se ve en la vista Shader, con su vista previa

Más (por encima de 1) o menos (por debajo de 1) colorido; 0 es gris.

Entrada Tipo Por defecto
rgb vec3 (1, 0.5, 0)
amount · cantidad float 1.5
Salida Tipo
rgb vec3
Ejemplo
c = g.palette(g.uv()["x"])
g.output(g.rgba(g.saturation(c, 0.4), 1.0))

Brightness and contrast · brightness_contrast · Color · g.brightness_contrast(...)

Más claro u oscuro, y más o menos contraste.

El nodo Brillo y contraste tal como se ve en la vista Shader, con su vista previa

Más claro u oscuro, y más o menos contraste, como en un editor de fotos.

Entrada Tipo Por defecto
rgb vec3 (0.5, 0.5, 0.5)
brightness · brillo float 0
contrast · contraste float 1
Salida Tipo
rgb vec3
Ejemplo
c = g.palette(g.uv()["x"])
g.output(g.rgba(g.brightness_contrast(c, 0.1, 1.4), 1.0))

Luminance · luminance · Color · g.luminance(...)

Lo brillante que se ve un color, de 0 a 1.

El nodo Luminancia tal como se ve en la vista Shader, con su vista previa

Lo brillante que parece un color al ojo, como un número de 0 a 1.

Entrada Tipo Por defecto
rgb vec3 (1, 1, 1)
Salida Tipo
value · valor float
Ejemplo
l = g.luminance([0.2, 0.7, 0.3])
g.output(g.rgba(l, 1.0))

Grayscale · grayscale · Color · g.grayscale(...)

El color en tonos de gris.

El nodo Escala de grises tal como se ve en la vista Shader, con su vista previa

El color en tonos de gris (blanco y negro).

Entrada Tipo Por defecto
rgb vec3 (1, 0.5, 0)
Salida Tipo
rgb vec3
Ejemplo
c = g.palette(g.uv()["x"])
g.output(g.rgba(g.grayscale(c), 1.0))

Invert · invert · Color · g.invert(...)

El color opuesto: 1 − color (conserva el alfa).

El nodo Invertir tal como se ve en la vista Shader, con su vista previa

El negativo de un color (1 − color); el alfa se mantiene.

Entrada Tipo Por defecto
color T (1, 0.5, 0)
Salida Tipo
color T
Ejemplo
c = g.gradient(g.uv()["x"])
g.output(g.invert(c["color"]))

gamma · Color · g.gamma(...)

Aclara (por encima de 1) u oscurece (por debajo de 1) los tonos medios.

El nodo Gamma tal como se ve en la vista Shader, con su vista previa

Aclara (por encima de 1) u oscurece (por debajo de 1) los medios tonos sin tocar el blanco y el negro.

Entrada Tipo Por defecto
rgb vec3 (0.5, 0.5, 0.5)
gamma float 2.2
Salida Tipo
rgb vec3
Ejemplo
v = g.uv()["x"]
g.output(g.rgba(g.gamma(g.compose(v, v, v), 2.2), 1.0))

Posterize · posterize · Color · g.posterize(...)

Conserva solo unos pocos niveles de cada componente.

El nodo Posterizar tal como se ve en la vista Shader, con su vista previa

Deja solo unos pocos escalones de cada color: sombreado cel y aspecto retro.

Entrada Tipo Por defecto
color T (0.3, 0.6, 0.9)
steps · niveles float 4
Salida Tipo
color T
Ejemplo
c = g.palette(g.uv()["x"])
g.output(g.rgba(g.posterize(c, 4.0), 1.0))

Blend · blend · Color · g.blend(...)

Fusiona layer sobre base como los modos de capa de un editor de imágenes.

El nodo Fusionar tal como se ve en la vista Shader, con su vista previa

Mezcla layer sobre base como los modos de capa de un editor de imágenes: normal, multiply, screen, overlay, add, subtract, difference, darken, lighten, soft light, color dodge y color burn.

Entrada Tipo Por defecto
base vec3 (0.2, 0.4, 0.8)
layer · capa vec3 (1, 0.6, 0.2)
opacity · opacidad float 1
Salida Tipo
rgb vec3
Ajuste Valores Por defecto
mode normal, multiply, screen, overlay, add, subtract, difference, darken, lighten, soft_light, color_dodge, color_burn multiply
Ejemplo
base = g.gradient(g.uv()["y"])
clouds = g.fbm(scale=3.0)
layer = g.compose(clouds, clouds, clouds)
g.output(g.rgba(g.blend(base["rgb"], layer, 0.8, mode="screen"), 1.0))

Palette · palette · Color · g.palette(...)

Un color suave tipo arcoíris para t, con las paletas de coseno de Inigo Quilez: a + b × cos(2π(c × t + d)).

El nodo Paleta tal como se ve en la vista Shader, con su vista previa

Convierte un número de 0 a 1 en un color suave tipo arcoíris con una fórmula de cosenos. Cambia d para desplazar los colores; es la forma más rápida de colorear un ruido.

Entrada Tipo Por defecto
t float 0
a vec3 (0.5, 0.5, 0.5)
b vec3 (0.5, 0.5, 0.5)
c vec3 (1, 1, 1)
d vec3 (0, 0.33, 0.67)
Salida Tipo
rgb vec3
Ejemplo
n = g.noise(scale=4.0)
g.output(g.rgba(g.palette(n), 1.0))

Gradient · gradient · Color · g.gradient(...)

Una rampa de color: el color en t (0 a 1) entre las paradas que elijas.

El nodo Degradado tal como se ve en la vista Shader, con su vista previa

Una rampa de color que editas con paradas: el color en t entre las paradas. En el diseñador arrastras las paradas; en Python pasa stops=[[posición, color], ...].

Entrada Tipo Por defecto
t float 0.5
Salida Tipo
color vec4
rgb vec3
alpha float
Ajuste Valores Por defecto
stops stops 0 #1e1b4b, 0.5 #db2777, 1 #fde047
Ejemplo
ramp = g.gradient(g.uv()["x"], stops=[[0.0, "#0f172a"], [0.6, "#7c3aed"], [1.0, "#f472b6"]])
g.output(ramp)

rgba · Color · g.rgba(...)

Un color con alfa a partir de un color vec3 y una opacidad.

El nodo RGBA tal como se ve en la vista Shader, con su vista previa

Une un color RGB y una opacidad en el vec4 que quiere la Salida.

Entrada Tipo Por defecto
rgb vec3 (1, 1, 1)
alpha float 1
Salida Tipo
color vec4
Ejemplo
g.output(g.rgba([0.2, 0.6, 1.0], 0.5))

Layer · layer · Color · g.layer(...)

Pone front sobre back usando el alfa de front.

El nodo Capa tal como se ve en la vista Shader, con su vista previa

Pone front sobre back usando el alfa de front, como apilar dos capas.

Entrada Tipo Por defecto
back · fondo vec4 (0, 0, 0, 1)
front · frente vec4 (1, 1, 1, 0.5)
Salida Tipo
color vec4
Ejemplo
back = g.gradient(g.uv()["y"])
spot = g.rgba([1.0, 1.0, 1.0], g.fill(g.circle(radius=0.2)))
g.output(g.layer(back["color"], spot))

Efectos de pantalla que devuelven un número cercano a 1: multiplica tu color final por ellos.

Vignette · vignette · Efectos · g.vignette(...)

Oscurece hacia las esquinas: multiplica un color por él.

El nodo Viñeta tal como se ve en la vista Shader, con su vista previa

Oscurece hacia las esquinas y lleva la mirada al centro.

Entrada Tipo Por defecto
uv vec2 UV (contexto)
strength · intensidad float 0.8
Salida Tipo
value · valor float
Ejemplo
c = g.gradient(g.uv()["x"])
g.output(g.rgba(c["rgb"] * g.vignette(strength=0.9), 1.0))

Scanlines · scanlines · Efectos · g.scanlines(...)

Las líneas horizontales de una pantalla CRT: multiplica un color por ellas.

El nodo Líneas de barrido tal como se ve en la vista Shader, con su vista previa

Las líneas horizontales de un televisor antiguo; speed las hace desplazarse.

Entrada Tipo Por defecto
px · píxel vec2 Píxel (contexto)
spacing · espaciado float 3
strength · intensidad float 0.25
speed · velocidad float 0
Salida Tipo
value · valor float
Ejemplo
c = g.gradient(g.uv()["y"])
g.output(g.rgba(c["rgb"] * g.scanlines(spacing=3.0, strength=0.3), 1.0))

Film grain · grain · Efectos · g.grain(...)

Motas aleatorias que cambian cada fotograma: multiplica un color por ellas.

El nodo Grano de película tal como se ve en la vista Shader, con su vista previa

Motas aleatorias que cambian en cada fotograma, como en una película.

Entrada Tipo Por defecto
px · píxel vec2 Píxel (contexto)
strength · intensidad float 0.12
Salida Tipo
value · valor float
Ejemplo
c = g.gradient(g.uv()["x"])
g.output(g.rgba(c["rgb"] * g.grain(strength=0.15), 1.0))

Imágenes en un shader: añade una variable texture (un archivo de imagen) y lee sus colores.

Sample texture · sample_texture · Textura · g.sample_texture(...)

El color de una textura (una variable de imagen) en uv.

El nodo Muestrear textura tal como se ve en la vista Shader, con su vista previa

Lee el color de una imagen en un UV. Añade una variable texture cuyo valor sea la ruta de una imagen (relativa al .pzshad), conéctala a texture y deforma antes el UV para ondas o pixelado.

Entrada Tipo Por defecto
texture · textura texture —
uv vec2 UV (contexto)
Salida Tipo
color vec4
rgb vec3
alpha float
Ejemplo
photo = g.uniform("photo", "texture", "photo.png")
uv = g.pixelate(cells=[40.0, 30.0])
g.output(g.sample_texture(photo, uv["uv"]))

Ver también: Primeros pasos · La vista Shader · Recetas · Grafos de shader en Python