- O algoritmo Slug, que realiza renderização de fontes baseada em curvas de Bézier na GPU, renderiza dados vetoriais diretamente sem texturas, sendo usado em diversos setores como jogos, CAD, edição de vídeo e equipamentos médicos
- Ao renunciar à exclusividade a partir de 17/03/2026, a patente foi totalmente liberada para o domínio público, tornando-se livre para uso por qualquer pessoa
- Nas versões recentes, o desempenho e a eficiência do código foram melhorados com otimização
band split e remoção de supersampling, além da simplificação do método de renderização de emoji
- A maior mudança é o recurso de dilatação dinâmica (dynamic dilation), que calcula automaticamente a expansão ideal das bordas de acordo com o tamanho do glifo e o ponto de vista
- Qualquer pessoa pode implementar livremente por meio do código de shader de referência no GitHub, publicado sob licença MIT
Desenvolvimento e expansão do algoritmo Slug
- O algoritmo Slug foi desenvolvido no outono de 2016 e apresentado em um artigo da JCGT em 2017
- Depois disso, a Slug Library 1.0 foi comercializada e licenciada para grandes empresas como Activision, Blizzard, Ubisoft e Adobe
- Foi usada em várias áreas, incluindo jogos, visualização científica, CAD, edição de vídeo, equipamentos médicos e planetários
- Originalmente, foi desenvolvido para renderização de texto de alta qualidade no C4 Engine, e depois também aplicado ao editor de fórmulas Radical Pie
- Expressa em alta resolução elementos de gráficos vetoriais como fórmulas, parênteses e setas
Evolução da forma de renderização
- O Slug renderiza diretamente na GPU dados de curvas de Bézier sem texturas pré-calculadas
- É robusto contra erros de ponto flutuante e mantém curvas suaves e cantos nítidos
- A otimização
band split trouxe ganho de velocidade em glifos grandes, mas foi removida por causar queda de desempenho e maior complexidade em fontes pequenas
- Com isso, o pixel shader foi simplificado e o tamanho da textura de dados de banda foi reduzido pela metade
- O adaptive supersampling era usado para aliviar aliasing em fontes pequenas, mas foi removido por ter efeito limitado e ser substituído pela nova técnica de dilatação
- A renderização de emoji multicolorido foi alterada para um método que trata cada camada como um glifo independente, obtendo melhor desempenho e simplificação do código
Dilatação dinâmica (Dynamic Dilation)
- Antes, a expansão das bordas do glifo precisava ser definida manualmente com uma distância fixa
- Em fontes pequenas, isso causava perda de borda; em fontes grandes, desperdiçava espaço desnecessariamente
- A dilatação dinâmica é calculada automaticamente no vertex shader, determinando a distância ideal de expansão a cada renderização de glifo
- Usa a matriz MVP e o tamanho do viewport para expandir a borda em unidades de meio pixel
- Dependendo da mudança de ponto de vista, é possível aplicar uma distância de dilatação diferente a cada vértice
- Matematicamente, ela é derivada como uma equação quadrática que encontra a distância d que satisfaz a condição de expansão de meio pixel no espaço do viewport
- A solução final tem a forma (d = \frac{s^3t \pm s^2\sqrt{u^2 + v^2}}{u^2 + v^2 - s^2t^2})
- Escolhe-se o sinal positivo para mover na direção externa
- Para manter o tamanho do glifo, também é feita uma correção de coordenadas em em-space, armazenando a matriz Jacobiana inversa em cada vértice
Liberação da patente e anúncio público
- O algoritmo Slug obteve a patente dos EUA (US10373352B1) em 2019, mas renunciou ao direito de exclusividade até 2038 a partir de 17 de março de 2026
- A parte restante da patente foi oficialmente abandonada junto ao USPTO por meio do envio do formulário SB/43 e do pagamento da taxa
- Com isso, qualquer pessoa pode implementar e usar livremente o algoritmo Slug
- Permitido tanto para fins comerciais quanto não comerciais, sem preocupação com violação de propriedade intelectual
- O repositório no GitHub (https://github.com/EricLengyel/Slug) foi publicado como referência de implementação real
- Fornecido sob licença MIT, inclui um pixel shader melhorado em relação ao artigo da JCGT e um vertex shader com dilatação dinâmica
Importância do Slug
- O Slug se consolidou como uma implementação representativa de renderização vetorial de fontes baseada em GPU
- Ao longo de 10 anos de evolução, melhorou simultaneamente desempenho, simplicidade e qualidade
- Com a liberação da patente, abriu-se a possibilidade de adoção e expansão livres em toda a indústria
2 comentários
Que notícia maravilhosa.
Comentários do Hacker News
Agora, sou muito grato por ele ter sido dedicado ao domínio público após certo tempo. Se um dia eu acabar criando um emulador de terminal, gostaria de experimentar esse algoritmo pelo apelo estético do código
Um editor profissional de fórmulas para Windows 10/11, que usa o Slug como mecanismo de renderização e custa US$ 60. Provavelmente ele está usando isso para escrever o livro FGED
Ainda assim, é uma excelente alternativa ao MathType, e o fato de ter integração OLE e funcionar bem ao inserir no Word é impressionante
Acho que era o auge da engenharia de software. Obrigado ao autor por doá-la ao domínio público
Queria que houvesse mais casos assim
Como referência, a patente Loop-Blinn da Microsoft (para curvas cúbicas) também deve expirar em breve, então o cenário de renderização de texto pode mudar bastante
Na época, ele usava um método que aproximava curvas com triângulos, mas não sei se ainda é assim
Os antigos métodos de atlas de textura ou SDF pareciam soluções temporárias, e a qualidade caía quando a escala mudava
Agora que o Slug foi aberto, espero que grandes bibliotecas ou engines de jogos adotem métodos de renderização de maior qualidade
Eu não sabia que ele ainda estava tão ativo nessa área