Shader
pz.shader ejecuta una función que escribes en WGSL, fn shade(uv, px, size, time) -> vec4<f32>, para cada píxel del widget, en cada fotograma, en la GPU: fondos animados, plasma, fuego o el barrido de un radar no le cuestan nada a Python. Cada entrada de uniforms se convierte en una función WGSL con el mismo nombre, y mouse() da la posición del puntero. Sin GPU el widget muestra fallback. Ver la guía de shaders y las demos.
pz.shader · Categoría: Contenido · Referencia completa →


pz.shader("""fn shade(uv: vec2<f32>, px: vec2<f32>, size: vec2<f32>, time: f32) -> vec4<f32> { let wave = 0.5 + 0.5 * sin(uv.x * 12.0 + uv.y * 4.0 + time * speed()); return vec4<f32>(mix(vec3<f32>(0.08, 0.09, 0.2), tint().rgb, wave), 1.0);}""", uniforms={"speed": 2.0, "tint": "#c678dd"}, width=640, height=240, time=0.5, fallback=pz.Gradient(["#14172f", "#c678dd"], angle=0))Cuándo usarlo
Sección titulada «Cuándo usarlo»- Para fondos animados detrás de paneles de cristal, menús y HUDs.
- Para gráficos y efectos de juegos que serían demasiado lentos de dibujar desde Python en cada fotograma.
import pyzed as pz
pz.shader("""fn shade(uv: vec2<f32>, px: vec2<f32>, size: vec2<f32>, time: f32) -> vec4<f32> { let wave = 0.5 + 0.5 * sin(uv.x * 12.0 + uv.y * 4.0 + time * speed()); return vec4<f32>(mix(vec3<f32>(0.08, 0.09, 0.2), tint().rgb, wave), 1.0);}""", uniforms={"speed": 2.0, "tint": "#c678dd"}, width=640, height=240, time=0.5, fallback=pz.Gradient(["#14172f", "#c678dd"], angle=0))Variantes
Sección titulada «Variantes»Uniforms
Sección titulada «Uniforms»Cada captura es un fotograma con time=0.5; ejecuta el ejemplo para verlo moverse. Sin GPU el widget dibuja su fallback.


tint="#c678dd"Código
pz.shader("""fn shade(uv: vec2<f32>, px: vec2<f32>, size: vec2<f32>, time: f32) -> vec4<f32> { let wave = 0.5 + 0.5 * sin(uv.x * 12.0 + uv.y * 4.0 + time * 2.0); return vec4<f32>(mix(vec3<f32>(0.08, 0.09, 0.2), tint().rgb, wave), 1.0);}""", uniforms={"tint": "#c678dd"}, width=260, height=110, time=0.5, fallback=pz.Gradient(["#14172f", "#c678dd"], angle=0))

tint="#56b6c2"Código
pz.shader("""fn shade(uv: vec2<f32>, px: vec2<f32>, size: vec2<f32>, time: f32) -> vec4<f32> { let wave = 0.5 + 0.5 * sin(uv.x * 12.0 + uv.y * 4.0 + time * 2.0); return vec4<f32>(mix(vec3<f32>(0.08, 0.09, 0.2), tint().rgb, wave), 1.0);}""", uniforms={"tint": "#56b6c2"}, width=260, height=110, time=0.5, fallback=pz.Gradient(["#14172f", "#56b6c2"], angle=0))

tint="#e5c07b"Código
pz.shader("""fn shade(uv: vec2<f32>, px: vec2<f32>, size: vec2<f32>, time: f32) -> vec4<f32> { let wave = 0.5 + 0.5 * sin(uv.x * 12.0 + uv.y * 4.0 + time * 2.0); return vec4<f32>(mix(vec3<f32>(0.08, 0.09, 0.2), tint().rgb, wave), 1.0);}""", uniforms={"tint": "#e5c07b"}, width=260, height=110, time=0.5, fallback=pz.Gradient(["#14172f", "#e5c07b"], angle=0))Eventos
Sección titulada «Eventos»Shader no tiene eventos propios: muestra lo que le das. Como todo widget, también tiene los 18 eventos comunes (click, double_click, right_click, mouse_enter, drag, key_down, resize…), que se conectan con .on(...): mira Eventos y Eventos de cada componente.
Consejos
Sección titulada «Consejos»Propiedades y API
Sección titulada «Propiedades y API»pz.shader
Sección titulada «pz.shader»shader( code, *, uniforms=None, textures=None, width=None, height=None, animate=True, time=None, fallback=None,)Un widget que pinta la GPU con tu función WGSL fn shade(uv, px, size, time) -> vec4<f32>, que devuelve el color de cada píxel, o con un grafo de shader hecho de nodos (una ruta .pzshad o un Graph o Shader de pyzed.shading). Cada entrada de uniforms se convierte en una función con su nombre ({"speed": 2} -> speed()); mouse() da la posición del puntero. Sin GPU el widget muestra fallback. Lanza ValueError con el mensaje del compilador si el código no es válido. Ver la guía de shaders.
| Propiedad | Por defecto | Descripción |
|---|---|---|
code |
obligatorio | Código WGSL que define shade (y las funciones auxiliares que quieras), o una ruta .pzshad, un Graph o un Shader. |
uniforms |
None |
Hasta 32 valores con nombre: un número, de 2 a 4 números o un color. Con un .pzshad, las variables mutables del shader por nombre. |
textures |
None |
Hasta 8 imágenes, {nombre: ruta}: cada una se convierte en nombre(uv), el color de la imagen en uv. |
width |
None |
Ancho ("fill" por defecto). |
height |
None |
Alto ("fill" por defecto). |
animate |
True |
Redibuja en cada frame para que avance time (True). |
time |
None |
Un time fijo en segundos, para un fotograma quieto. |
fallback |
None |
Color o degradado que se muestra sin GPU. |