this post was submitted on 03 Nov 2025
14 points (88.9% liked)
Chile
852 readers
16 users here now
Comunidad general de Chile para Feddit.cl
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Hace unos meses vi un efecto visual bakán en shadertoy.
Shadertoy es una página en donde puedes poner código shader de gpu y la página muestra el resultado de lo que escribiste. La gente comparte sus códigos y uno los puede modificar y ver qué pasa si cambia algunas cosas.
El efecto que vi era este. Para los que les de lata hacer click se ve así pero con los mosaicos moviéndose:
Lo encontré demasiado bakán y me dieron ganas de escribir algo que lograra ese efecto, pero con el feed de una webcam y en tiempo real. Resulta que incluso contando con el código de la página, esto fue un desafío enorme para mí.
Las separaciones de mosaicos corresponden a un diagrama voronoi. Básicamente lo que hace un diagrama voronoi es ilustrar qué áreas de una superficie están más cercas de puntos que están dispersos en éste. En la imagen del mosaico no se muestran los puntos, pero imaginen que hubiera uno al medio de cada sección, así.
Para lograr el efecto con una cámara en tiempo real esos puntos no podían ser ruido aleatorio al lote como lo es en código de shadertoy, sino cada uno debía representar uno o varios pixeles capturados por la cámara, con su color correspondiente.
El problema con esto es que en shaders OpenGL, código para gpu, sólo puedes mandarle del cpu/la ram a cada miniprocesador del gpu lo que se llama 1 "primitivo", que puede ser la ubicación de una línea, triángulo o punto (o similares) y el procesador queda ciego a qué pasa con los otros primitivos. Así es como los GPU procesan lo que deben mostrar toooooodos los pixeles de una pantalla tan rápido. tienen muchos muchos miniprocesadores que solamente se preocupa de 1 vértice/color/problema chico, y no mira lo que están haciendo los otros procesos en paralelo.
Esto es un problema significativo porque para calcular las divisiones de las líneas voronoi necesitas saber dónde están TODOS los puntos... Así que súper fácil si los generas todos en el mismo lugar y al lote (como lo hacen en shadertoy) pero muy difícil si tienen que venir con info (como de una cámara).
Bueno, sin latearlos más, les comento que acabo de lograr el efecto que buscaba. No tiene propósito alguno y no sirve de nada, pero creo que quedó bien y pasa a mi colección de ejercicios de procesamiento gráfico completos.
Acá está funcionando en tiempo real.
Disculpen el latón y gracias por leer de mis puduventuras de programación. :)
Usted claramente es BORIC estimado, ya no puede ocultarlo mas jaja
Quedo hermosamente hermoso, excelente e interesante ejercicio :D
Me lo han gritado en la calle más de una vez.
Y gracias! :)
mish