Lógica, variables y utilidades
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")Valores verdadero/falso y elegir entre dos valores. Los shaders corren en todos los píxeles a la vez: prefiere Mezclar y Paso suave para transiciones suaves y deja Elegir para elecciones tajantes.
Comparar
Sección titulada «Comparar»Compare · compare · Lógica · g.compare(...)
Si a es menor, mayor o igual que b (en vectores: todos los componentes).

Compara a y b (<, <=, >, >=, ==, !=) y da verdadero o falso.
| Entrada | Tipo | Por defecto |
|---|---|---|
a |
T |
0 |
b |
T |
0.5 |
| Salida | Tipo |
|---|---|
result · resultado |
bool |
| Ajuste | Valores | Por defecto |
|---|---|---|
op |
<, <=, >, >=, ==, != |
< |
left = g.compare(g.uv()["x"], 0.5, op="<")g.output(g.rgba(g.select(left, 1.0, 0.2), 1.0))Select · select · Lógica · g.select(...)
si condition entonces a, si no b.

Si condition es verdadero, a (entonces); si no, b (si no).
| Entrada | Tipo | Por defecto |
|---|---|---|
condition · condición |
bool |
true |
a · entonces |
T |
1 |
b · si no |
T |
0 |
| Salida | Tipo |
|---|---|
result · resultado |
T |
inside = g.mouse()["inside"]g.output(g.rgba(g.select(inside, [0.2, 0.8, 0.4], [0.3, 0.3, 0.3]), 1.0))Logic · logic · Lógica · g.logic(...)
and, or, xor y not de valores verdadero/falso.

and, or, xor y not de valores verdadero/falso.
| Entrada | Tipo | Por defecto |
|---|---|---|
a |
bool |
true |
b |
bool |
false |
| Salida | Tipo |
|---|---|
result · resultado |
bool |
| Ajuste | Valores | Por defecto |
|---|---|---|
op |
and, or, xor, not |
and |
uv = g.uv()both = g.logic(g.compare(uv["x"], 0.5, op=">"), g.compare(uv["y"], 0.5, op=">"), op="and")g.output(g.rgba(g.select(both, 1.0, 0.0), 1.0))Variables
Sección titulada «Variables»Valores con nombre dentro del grafo: calcula algo una vez, ponle nombre y léelo en cualquier lugar sin un cable largo por el lienzo.
Guardar valor
Sección titulada «Guardar valor»Set value · set_var · Variables · g.set_var(...)
Da nombre a un valor para que los nodos Leer valor lo lean en cualquier parte sin una conexión larga.

Da nombre a un valor. Cualquier Leer valor con el mismo nombre lo lee, así puedes reutilizarlo lejos sin un cable que cruce todo el lienzo.
| Entrada | Tipo | Por defecto |
|---|---|---|
value · valor |
T |
0 |
| Salida | Tipo |
|---|---|
value · valor |
T |
| Ajuste | Valores | Por defecto |
|---|---|---|
name |
text |
value1 |
g.set_var(g.noise(scale=4.0), name="n")n = g.get_var(name="n")g.output(g.rgba(g.palette(n), 1.0))Leer valor
Sección titulada «Leer valor»Get value · get_var · Variables · g.get_var(...)
Lee un valor nombrado por un nodo Guardar valor.

Lee un valor al que un nodo Guardar valor puso nombre.
| Salida | Tipo |
|---|---|
value · valor |
T |
| Ajuste | Valores | Por defecto |
|---|---|---|
name |
local |
value1 |
g.set_var(g.uv()["x"], name="x")g.output(g.gradient(g.get_var(name="x")))Utilidades
Sección titulada «Utilidades»Nodos que mantienen ordenados los grafos grandes y te dejan ir más allá del catálogo.
Reroute · reroute · Utilidades · g.reroute(...)
Un punto para desviar una conexión alrededor de otros nodos.

Un punto que solo desvía un cable alrededor de otros nodos: no cambia nada.
| Entrada | Tipo | Por defecto |
|---|---|---|
in · entrada |
T |
0 |
| Salida | Tipo |
|---|---|
out · salida |
T |
x = g.reroute(g.uv()["x"])g.output(g.gradient(x))Expresión
Sección titulada «Expresión»Expression · expression · Utilidades · g.expression(...)
Tu propio WGSL: una expresión con a, b, c y d (y uv, px, size, time), o el cuerpo de una función con return. Los tipos de a a d siguen lo que esté conectado.

Tu propia línea de WGSL cuando ningún nodo hace lo que necesitas: una expresión de a, b, c y d (más uv, px, size y time), o el cuerpo de una función con return. Elige el type del resultado.
| Entrada | Tipo | Por defecto |
|---|---|---|
a |
any |
0 |
b |
any |
0 |
c |
any |
0 |
d |
any |
0 |
| Salida | Tipo |
|---|---|
result · resultado |
float |
| Ajuste | Valores | Por defecto |
|---|---|---|
code |
code |
a + b |
type |
float, vec2, vec3, vec4, int, bool |
float |
Los tipos de a a d siguen lo que se les conecta (any); type fija el del resultado.
e = g.expression(g.uv()["x"], 8.0, code="abs(sin(a * b + time))", type="float")g.output(g.rgba(e, 1.0))Función shader
Sección titulada «Función shader»Shader function · subgraph · Utilidades · g.subgraph(...)
Otro .pzshad usado como función: sus variables mutables son entradas y su salida es el color. Conecta uv para moverlo, repetirlo o deformarlo.

Usa otro .pzshad como función: sus variables mutables se vuelven entradas y su color la salida. Pasa un uv para mover, repetir o deformar el shader entero.
| Entrada | Tipo | Por defecto |
|---|---|---|
uv |
vec2 |
UV (contexto) |
| Salida | Tipo |
|---|---|
color |
vec4 |
rgb |
vec3 |
alpha |
float |
| Ajuste | Valores | Por defecto |
|---|---|---|
path |
file |
— |
Además de uv, cada variable mutable del otro shader se vuelve una entrada.
Un Shader function necesita otro archivo .pzshad: g.subgraph(path="plasma.pzshad", uv=...). En el diseñador, haz doble clic en el nodo para abrir ese archivo.
Comentario
Sección titulada «Comentario»Comment · comment · Utilidades · g.comment(...)
Una nota en el grafo.

Una nota en el lienzo para explicar una parte del grafo. No afecta al shader.
| Ajuste | Valores | Por defecto |
|---|---|---|
text |
text |
Note |
g.comment(text="Sky: gradient from top to bottom")g.output(g.gradient(g.uv()["y"]))Todo shader tiene un nodo Salida: lo que llega a él es el color del píxel.
Output · output · Salida · g.output(...)
El color de cada píxel. Alpha, si se conecta, reemplaza el alfa de color.

El final del grafo: el color que recibe es el color del píxel. Si alpha está conectado, reemplaza el alfa del color. En Python, g.output(color) lo añade o lo encuentra.
| Entrada | Tipo | Por defecto |
|---|---|---|
color |
vec4 |
(0, 0, 0, 1) |
alpha |
float |
— (sin usar hasta que se conecta) |
g.output([1.0, 0.4, 0.1, 1.0], alpha=g.radial_gradient(radius=0.5))Ver también: Primeros pasos · La vista Shader · Recetas · Grafos de shader en Python