# Renderizado de fuentes en GPU con Slug: Dilatación dinámica y licencia MIT
El algoritmo Slug, desarrollado en 2016, permite el renderizado directo de fuentes y gráficos vectoriales en GPU a partir de curvas Bézier sin necesidad de atlas de texturas. En la última década ha evolucionado con una mejora clave —la dilatación dinámica— y ahora su patente está disponible para uso libre bajo la licencia MIT.
Evolución del algoritmo Slug
Slug aborda el reto del renderizado de texto en tiempo real fiable, rápido y de alta calidad. Fiable significa sin píxeles perdidos ni artefactos, rendimiento que mantiene los FPS estables incluso en consolas de la era 2016, y calidad con curvas suaves y bordes nítidos a cualquier escala o perspectiva.
Desde su publicación en JCGT en 2017, el código ha recibido varias mejoras:
- Eliminada la optimización de división en franjas, que aceleraba glifos grandes pero causaba divergencia en el shader y duplicaba el volumen de datos.
- Suprimido el supersampling adaptativo, ya que sus beneficios solo se notaban en texto apenas legible, mientras que la dilatación maneja eficazmente el aliasing en tamaños pequeños.
- Rediseñado el renderizado de emojis multicolores: reemplazados los bucles de pixel shader por glifos independientes con sus propios polígonos de delimitación, simplificando el código y mejorando el rendimiento.
Estos cambios agilizaron el pixel shader, redujeron el uso de datos y potenciaron la eficiencia general del renderizado.
Dilatación dinámica: Optimización automática
Antes de la dilatación dinámica, los usuarios debían ajustar manualmente un desplazamiento fijo para expandir los polígonos de delimitación de glifos. Esto generaba artefactos de aliasing en tamaños pequeños y desperdiciaba recursos de GPU en los grandes. La dilatación dinámica resuelve ambos problemas calculando automáticamente el desplazamiento óptimo en el vertex shader según la matriz modelo-vista-proyección (MVP) y las dimensiones del viewport.
El cálculo asegura que los centros de píxeles parcialmente cubiertos caigan dentro del polígono para una rasterización correcta, sin relleno excesivo. La fórmula se deriva de una expansión de medio píxel en el espacio del viewport y se resuelve como una ecuación cuadrática:
d = (s³t + s²√(u² + v²)) / (u² + v² - s²t²)
donde s = m₃₀p_x + m₃₁p_y + m₃₃, t = m₃₀n̂_x + m₃₁n̂_y, y u y v son derivadas de los parámetros MVP y la normal. El signo "+" da el desplazamiento hacia afuera a lo largo de la normal unitaria.
Para preservar el tamaño original del glifo, las coordenadas de muestreo en la superficie mipmapeada se ajustan con la matriz Jacobiana 2×2 inversa, transformando el desplazamiento al espacio del objeto.
Liberación de la patente y licenciamiento
En 2019, el autor patentó el algoritmo Slug, pero ahora se libera para uso sin restricciones bajo la licencia MIT. Los desarrolladores pueden integrarlo en sus proyectos sin obstáculos legales. Slug ya ha sido licenciado por empresas como Activision, Adobe y Ubisoft para videojuegos, visualización científica, CAD y más, demostrando su valor en el mundo real.
Lecciones clave
- Slug renderiza fuentes y gráficos vectoriales directamente en GPU desde curvas Bézier, ofreciendo fiabilidad, velocidad y calidad superior.
- La dilatación dinámica optimiza automáticamente la expansión de polígonos de delimitación, eliminando artefactos y desperdicio de recursos.
- El algoritmo ha evolucionado: eliminadas división en franjas y supersampling, simplificado renderizado de emojis.
- La patente de Slug ahora está bajo licencia MIT para uso libre en proyectos comerciales y de código abierto.
- Está probado en gaming, visualización científica, CAD y más.
— Editorial Team
Aún no hay comentarios.