Ir al contenido

Entradas, parámetros y constantes

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")

Dónde está el píxel que se pinta, el tamaño del área, el tiempo y el ratón. Casi todo grafo empieza con uno de estos.

uv · Entrada · g.uv(...)

Dónde está el píxel, de (0, 0) arriba a la izquierda a (1, 1) abajo a la derecha.

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

El nodo más usado. x va de 0 a la izquierda a 1 a la derecha e y de 0 arriba a 1 abajo, sea cual sea el tamaño del widget. Conecta x a un Degradado para obtener una rampa horizontal.

Salida Tipo
uv vec2
x float
y float
Ejemplo
uv = g.uv()
g.output(g.gradient(uv["x"]))

Pixel · pixel · Entrada · g.pixel(...)

Dónde está el píxel, en píxeles desde arriba a la izquierda.

El nodo Píxel tal como se ve en la vista Shader, con su vista previa

Como UV pero en píxeles: úsalo para lo que debe mantener su tamaño en píxeles cuando el widget crece, como líneas cada 3 píxeles.

Salida Tipo
px · píxel vec2
x float
y float
Ejemplo
px = g.pixel()
lines = g.fract(px["y"] / 4.0)
g.output(g.rgba(g.step(0.5, lines), 1.0))

Size · size · Entrada · g.size(...)

El tamaño del área sombreada en píxeles y su proporción (ancho / alto).

El nodo Tamaño tal como se ve en la vista Shader, con su vista previa

El ancho y el alto del área en píxeles. aspect (ancho ÷ alto) mantiene redondos los círculos en widgets anchos; Centered UV ya lo usa por ti.

Salida Tipo
size · tamaño vec2
width · ancho float
height · alto float
aspect · proporción float
Ejemplo
s = g.size()
g.output(g.rgba(g.fract(s["aspect"]), 1.0))

Time · time · Entrada · g.time(...)

Segundos desde que arrancó la app (por scale), y su seno y coseno.

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

Segundos desde que arrancó la app: todo lo que se conecta a él se mueve. sin y cos oscilan suavemente entre −1 y 1, perfectos para pulsos. scale lo acelera o lo frena.

Entrada Tipo Por defecto
scale · escala float 1
Salida Tipo
time · tiempo float
sin float
cos float
Ejemplo
t = g.time(scale=2.0)
pulse = t["sin"] * 0.5 + 0.5
g.output(g.rgba(g.hsv_to_rgb(0.6, 0.8, pulse), 1.0))

Mouse · mouse · Entrada · g.mouse(...)

Dónde está el puntero de 0 a 1 (el centro mientras está fuera), y si está sobre el shader.

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

Dónde está el puntero, en UV (0 a 1). Mientras está fuera del shader, position es el centro e inside es falso. Ideal para focos y efectos al pasar el ratón.

Salida Tipo
position · posición vec2
inside · dentro bool
Ejemplo
m = g.mouse()
light = g.radial_gradient(center=m["position"], radius=0.3)
g.output(g.rgba(light, 1.0))

Centered UV · centered_uv · Entrada · g.centered_uv(...)

UV con (0, 0) en el centro y círculos redondos: donde dibujar formas. UV con proporción va de 0 a la proporción a lo ancho, para que el ruido y las celdas queden cuadrados.

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

Las coordenadas para dibujar formas: (0, 0) es el centro y una unidad es la altura, así un círculo sigue redondo en cualquier widget. aspect_uv mantiene cuadrados el ruido y las celdas.

Entrada Tipo Por defecto
uv vec2 UV (contexto)
Salida Tipo
centered · centrado vec2
aspect_uv · uv con proporción vec2
Ejemplo
c = g.centered_uv()
d = g.length(c["centered"])
g.output(g.rgba(g.smoothstep(0.4, 0.0, d), 1.0))

Un nodo Parámetro lee una de las variables del shader: los valores que cambia tu código Python (o un deslizador en la pestaña Vista previa).

Parameter · parameter · Parámetros · g.parameter(...)

Lee una variable del shader (ver la lista Variables): una mutable cambia sin recompilar, una constante queda dentro del código.

El nodo Parámetro tal como se ve en la vista Shader, con su vista previa

Los mandos de tu shader. g.uniform(...) añade una variable mutable y un nodo Parámetro a la vez; en el diseñador, arrastra una variable de la Estructura (Outline) al grafo. Una variable color da las salidas color, rgb y alpha.

Salida Tipo
value · valor float
Ajuste Valores Por defecto
name variable —

La salida toma el tipo de la variable; una variable color da color, rgb y alpha.

Ejemplo
tint = g.uniform("tint", "color", "#22d3ee")
glow = g.radial_gradient(radius=0.6)
g.output(g.rgba(tint["rgb"] * glow, 1.0))

Valores fijos escritos en el shader. Si un valor nunca cambia, una constante es lo más simple; si quieres cambiarlo desde código, usa una variable.

Float · float · Constantes · g.float(...)

Un número fijo.

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

Un número fijo. La mayoría de las entradas ya aceptan un valor escrito directamente, así que solo necesitas este nodo para llevar el mismo número a varios sitios.

Salida Tipo
value · valor float
Ajuste Valores Por defecto
value float 0.5
Ejemplo
half = g.float(0.5)
g.output(g.rgba(g.compose(half, half, 1.0), 1.0))

Int · int · Constantes · g.int(...)

Un número entero fijo.

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

Un número entero fijo, para entradas como las octavas de Ruido fractal.

Salida Tipo
value · valor int
Ajuste Valores Por defecto
value int 1
Ejemplo
octaves = g.int(3)
n = g.fbm(octaves=octaves)
g.output(g.rgba(n, 1.0))

Bool · bool · Constantes · g.bool(...)

Un verdadero o falso fijo.

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

Un verdadero o falso fijo, para los nodos Elegir y Lógica.

Salida Tipo
value · valor bool
Ajuste Valores Por defecto
value bool true
Ejemplo
on = g.bool(True)
g.output(g.rgba(g.select(on, 1.0, 0.2), 1.0))

vec2 · Constantes · g.vec2(...)

Dos números fijos.

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

Dos números fijos: un punto o un tamaño.

Salida Tipo
value · valor vec2
Ajuste Valores Por defecto
value vec2 (0.5, 0.5)
Ejemplo
center = g.vec2([0.3, 0.5])
g.output(g.rgba(g.radial_gradient(center=center, radius=0.3), 1.0))

vec3 · Constantes · g.vec3(...)

Tres números fijos.

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

Tres números fijos: a menudo un color RGB escrito con números de 0 a 1.

Salida Tipo
value · valor vec3
Ajuste Valores Por defecto
value vec3 (1, 1, 1)
Ejemplo
orange = g.vec3([1.0, 0.5, 0.0])
g.output(g.rgba(orange, 1.0))

vec4 · Constantes · g.vec4(...)

Cuatro números fijos.

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

Cuatro números fijos: un color con alfa, en números.

Salida Tipo
value · valor vec4
Ajuste Valores Por defecto
value vec4 (1, 1, 1, 1)
Ejemplo
g.output(g.vec4([0.1, 0.2, 0.4, 1.0]))

color · Constantes · g.color(...)

Un color fijo.

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

Un color fijo elegido con el selector de color (o escrito como #rrggbb).

Salida Tipo
color vec4
rgb vec3
alpha float
Ajuste Valores Por defecto
value color #7c3aed
Ejemplo
g.output(g.color("#7c3aed"))

Math constants · math_constants · Constantes · g.math_constants(...)

π, τ (2π), e y la proporción áurea.

El nodo Constantes matemáticas tal como se ve en la vista Shader, con su vista previa

π, τ (2π), e y φ, para no escribir 3.14159. Multiplica un valor 0..1 por τ para obtener una vuelta completa en radianes.

Salida Tipo
pi · π float
tau · τ float
e float
phi · φ float
Ejemplo
k = g.math_constants()
wave = g.sin(g.uv()["x"] * k["tau"] * 3.0) * 0.5 + 0.5
g.output(g.rgba(wave, 1.0))

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