- El algoritmo Slug, que realiza renderizado de fuentes basado en curvas de Bézier en la GPU, renderiza directamente datos vectoriales sin texturas y se utiliza en diversas industrias como videojuegos, CAD, edición de video y equipos médicos
- Al renunciar a la exclusividad a partir del 17/3/2026, la patente quedó completamente liberada al dominio público, por lo que ahora cualquiera puede usarla libremente
- En las versiones recientes, se mejoraron el rendimiento y la eficiencia del código con cambios como la eliminación de la optimización band split y del supersampling, además de la simplificación del método de renderizado de emojis
- El cambio más importante es la función de dilatación dinámica (dynamic dilation), que calcula automáticamente la expansión óptima de bordes según el tamaño del glifo y el punto de vista
- Gracias al código shader de referencia en GitHub publicado bajo licencia MIT, cualquiera puede implementarlo libremente
Desarrollo y expansión del algoritmo Slug
- El algoritmo Slug fue desarrollado en otoño de 2016 y presentado en un artículo de JCGT en 2017
- Después, Slug Library 1.0 se comercializó y se otorgaron licencias a empresas importantes como Activision, Blizzard, Ubisoft y Adobe
- Se ha utilizado en campos diversos como videojuegos, visualización científica, CAD, edición de video, equipos médicos y planetarios
- Originalmente fue desarrollado para el renderizado de texto de alta calidad en C4 Engine, y después también se aplicó al editor de fórmulas Radical Pie
- Permite representar a alta resolución elementos gráficos vectoriales como fórmulas, paréntesis y flechas
Evolución del método de renderizado
- Slug renderiza directamente en la GPU datos de curvas de Bézier sin texturas precalculadas
- Es robusto frente a errores de punto flotante y mantiene curvas suaves y esquinas nítidas
- La optimización band split mejoró la velocidad en glifos grandes, pero fue eliminada porque en fuentes pequeñas degradaba el rendimiento y aumentaba la complejidad
- Como resultado, se simplificó el pixel shader y el tamaño de la textura de datos de banda se redujo a la mitad
- El adaptive supersampling se usaba para reducir el aliasing en fuentes pequeñas, pero como su efecto era limitado y fue reemplazado por una nueva técnica de dilatación, se eliminó
- El renderizado de emojis multicolor cambió a un método que trata cada capa como un glifo independiente, logrando mejor rendimiento y simplificación del código
Dilatación dinámica (Dynamic Dilation)
- Antes, la expansión del borde del glifo debía especificarse manualmente con una distancia fija
- En fuentes pequeñas eso provocaba pérdida de borde, y en fuentes grandes generaba desperdicio innecesario de espacio
- La dilatación dinámica se calcula automáticamente en el vertex shader, determinando la distancia de expansión óptima al renderizar cada glifo
- Usa la matriz MVP y el tamaño del viewport para expandir el borde en unidades de medio píxel
- Según cambie el punto de vista, puede aplicarse una distancia de dilatación distinta a cada vértice
- Matemáticamente, se deriva como una ecuación cuadrática que obtiene una distancia d que satisface la condición de expansión de medio píxel en el espacio del viewport
- La solución final tiene la forma (d = \frac{s^3t \pm s^2\sqrt{u^2 + v^2}}{u^2 + v^2 - s^2t^2})
- Se elige el signo positivo para desplazarse hacia afuera
- Para mantener el tamaño del glifo, también se realiza una corrección de coordenadas en em-space, almacenando una matriz Jacobiana inversa en cada vértice
Liberación de la patente y anuncio público
- El algoritmo Slug obtuvo en 2019 la patente estadounidense (US10373352B1), pero renunció a su exclusividad hasta 2038 a partir del 17 de marzo de 2026
- La vigencia restante de la patente fue abandonada oficialmente ante la USPTO mediante la presentación del formulario SB/43 y el pago de la tarifa correspondiente
- Como resultado, ahora cualquiera puede implementar y usar libremente el algoritmo Slug
- Se permite tanto para fines comerciales como no comerciales, sin riesgo de infringir derechos de propiedad intelectual
- Se publicó el repositorio de GitHub (https://github.com/EricLengyel/Slug) como referencia para implementaciones reales
- Está disponible bajo licencia MIT e incluye un pixel shader mejorado respecto al artículo de JCGT y un vertex shader con dilatación dinámica
Importancia de Slug
- Slug se ha consolidado como una implementación representativa del renderizado vectorial de fuentes basado en GPU
- A lo largo de 10 años, ha mejorado rendimiento, simplicidad y calidad
- Con la liberación de la patente, queda abierta la posibilidad de adopción y expansión libres en toda la industria
2 comentarios
Es una noticia excelente.
Comentarios en Hacker News
Ahora que lo dedicaron al dominio público después de cierto tiempo, es algo muy de agradecer. Si algún día termino haciendo un emulador de terminal, me gustaría probar este algoritmo por la belleza estética del código
Es un editor profesional de ecuaciones para Windows 10/11, usa Slug como motor de renderizado y cuesta 60 dólares. Probablemente lo esté usando para escribir el libro FGED
Aun así, es un excelente reemplazo de MathType, y resulta impresionante que se inserte bien en Word gracias a la integración OLE
Me parece la cumbre de la ingeniería de software. Gracias al autor por donarlo al dominio público
Ojalá hubiera más casos así
Como referencia, la patente Loop-Blinn de Microsoft (para curvas cúbicas) también está por vencer, así que el panorama del renderizado de texto podría cambiar bastante
En ese momento usaban un método que aproximaba las curvas con triángulos, pero no sé si eso sigue igual
Los antiguos atlas de texturas o el método SDF siempre parecieron soluciones temporales, y al cambiar la escala la calidad se degradaba.
Ahora que Slug está abierto, ojalá las bibliotecas principales y los motores de juego adopten métodos de renderizado de mayor calidad
No sabía que seguía tan activo en este campo