Demostración de Buffers: un shader procedural en ensamblador y WGSL

Fuentes: Buffers: a procedural shader demo in assembly and WGSL

Buffers es una demostración incluida en el proyecto asm-shader-toy, un entorno que permite escribir shaders mediante un dialecto ensamblador propio y compilarlos a WGSL para su ejecución en navegador. El ejemplo combina operaciones trigonométricas —seno y coseno— con las coordenadas del fragmento y una variable de tiempo para generar una imagen animada en bucle, sin texturas ni geometría adicional. El código en ensamblador define un píxel mediante cálculos sobre los ejes uv_x y uv_y, modulados por la variable time y la constante tau (2π), y asigna los componentes RGB mediante instrucciones sin y cos. En la sección WGSL se muestra la estructura de entradas AstInputs, que el runtime expone al shader: tiempo, resolución, posición y estado del ratón, reloj del sistema, texturas de hasta cuatro canales y entradas de teclado, gamepad y rueda. También se definen utilidades de compilación como ast_safe_div, ast_mod y ast_eq, que sustituyen las operaciones nativas de división, módulo y comparación por versiones seguras frente a valores cercanos a cero. El proyecto se presenta como listo para WebGPU, con WebGL2 como fallback automático, y se distribuye con un visor interactivo que carga el código fuente y lo compila en el cliente. Se trata, en definitiva, de un banco de pruebas de bajo nivel para experimentar con pipelines gráficos programables desde una sintaxis tipo ensamblador.