- GPU üzerinde Bézier eğrisi tabanlı font render etme işlemi yapan Slug algoritması, doku kullanmadan vektör verisini doğrudan render eder ve oyun, CAD, video düzenleme, tıbbi cihazlar gibi çeşitli sektörlerde kullanılır
- Münhasır haklardan 17/03/2026 itibarıyla vazgeçilerek patent tamamen kamu malı haline getirildi ve herkesin özgürce kullanabilmesi sağlandı
- Son sürümlerde band split optimizasyonunun ve supersampling'in kaldırılması, emoji render etme yönteminin sadeleştirilmesi gibi değişikliklerle performans ve kod verimliliği iyileştirildi
- En büyük değişiklik, glif boyutuna ve bakış açısına göre en uygun sınır genişletmesini otomatik hesaplayan dinamik genişleme (dynamic dilation) özelliği oldu
- GitHub referans shader kodu MIT lisansıyla yayımlandı; böylece herkes bunu özgürce uygulayabilir
Slug algoritmasının geliştirilmesi ve yaygınlaşması
- Slug algoritması 2016 sonbaharında geliştirildi ve 2017'de JCGT makalesi olarak yayımlandı
- Sonrasında Slug Library 1.0 ticarileştirildi ve Activision, Blizzard, Ubisoft, Adobe gibi büyük şirketlere lisanslandı
- Oyunlar, bilimsel görselleştirme, CAD, video düzenleme, tıbbi cihazlar, planetaryumlar gibi farklı alanlarda kullanıldı
- Başlangıçta C4 Engine için yüksek kaliteli metin render etme amacıyla geliştirildi, ardından Radical Pie denklem düzenleyicisine de uygulandı
- Formüller, parantezler, oklar gibi vektör grafik öğelerini yüksek çözünürlükte gösterebildi
Render etme yönteminin evrimi
- Slug, önceden hesaplanmış dokular olmadan Bézier eğrisi verisini GPU üzerinde doğrudan render eder
- Kayan nokta hatalarına karşı dayanıklıdır ve pürüzsüz eğriler ile keskin köşeleri korur
- band split optimizasyonu büyük gliflerde hız kazancı sağladı, ancak küçük fontlarda performans düşüşü ve artan karmaşıklık nedeniyle kaldırıldı
- Bunun sonucunda piksel shader sadeleşti ve band veri dokusunun boyutu yarıya indi
- adaptive supersampling, küçük fontlarda aliasing'i azaltmak için kullanılıyordu; ancak etkisi sınırlı kaldı ve yeni genişleme tekniğiyle değiştirildiği için kaldırıldı
- Çok renkli emoji render etme, her katmanı bağımsız bir glif olarak işleyen yapıya dönüştürüldü; böylece performans arttı ve kod sadeleşti
Dinamik genişleme (Dynamic Dilation)
- Önceden glif sınırı genişletmesinin sabit bir mesafe olarak elle belirtilmesi gerekiyordu
- Küçük fontlarda sınır kaybı, büyük fontlarda ise gereksiz alan israfı oluşuyordu
- Dinamik genişleme vertex shader içinde otomatik hesaplanır ve her glif render edilirken en uygun genişletme mesafesini belirler
- MVP matrisi ve viewport boyutu kullanılarak yarım piksel biriminde sınır genişletmesi yapılır
- Bakış açısı değişimine göre her vertex için farklı genişleme mesafeleri uygulanabilir
- Matematiksel olarak bu, viewport uzayında yarım piksel genişleme koşulunu sağlayan d mesafesini bulan ikinci dereceden bir denklemden türetilir
- Nihai çözüm (d = \frac{s^3t \pm s^2\sqrt{u^2 + v^2}}{u^2 + v^2 - s^2t^2}) biçimindedir
- Dışa doğru hareket için pozitif işaret seçilir
- Glif boyutunu korumak için em-space koordinat düzeltmesi de yapılır ve her vertex'te ters Jacobian matrisi saklanır
Patentten feragat ve kamuya açılma duyurusu
- Slug algoritması 2019'da ABD patenti (US10373352B1) aldı, ancak 2038'e kadar sürecek münhasır haklardan 17 Mart 2026 itibarıyla vazgeçildi
- USPTO'ya SB/43 formu sunulup ücret ödenerek patentin kalan süresinden resmen feragat edildi
- Bunun sonucunda herkes Slug algoritmasını özgürce uygulayabilir ve kullanabilir
- Hem ticari hem ticari olmayan kullanım serbesttir ve fikri mülkiyet ihlali endişesi yoktur
- Gerçek uygulama için referans olarak GitHub deposu (https://github.com/EricLengyel/Slug) yayımlandı
- MIT lisansı ile sunuluyor ve JCGT makalesine kıyasla geliştirilmiş piksel shader ile dinamik genişleme içeren vertex shader barındırıyor
Slug'un önemi
- Slug, GPU tabanlı vektör font render etmenin önde gelen uygulamalarından biri haline geldi
- 10 yıllık gelişim sürecinde performans, sadelik ve kalite birlikte iyileştirildi
- Patentin kaldırılmasıyla birlikte sektör genelinde özgürce benimsenme ve genişleme olasılığı sağlandı
2 yorum
Gerçekten harika bir haber.
Hacker News yorumları
Şimdi belli bir sürenin ardından onu kamu malına adaması gerçekten takdire değer. Bir gün bir terminal emülatörü yaparsam, kodun estetik çekiciliği nedeniyle bu algoritmayı denemek isterim
Windows 10/11 için profesyonel bir denklem düzenleyici; Slug'u render motoru olarak kullanıyor ve fiyatı 60 dolar. Muhtemelen FGED kitabını yazarken de bunu kullanıyordur
Yine de MathType için harika bir alternatif ve OLE entegrasyonu sayesinde Word'e iyi gömülmesi etkileyici
Yazılım mühendisliğinin zirvesi olduğunu düşünüyorum. Bunu kamu malı olarak bağışlayan yazara teşekkürler
Keşke bunun gibi daha fazla örnek olsa
Bu arada Microsoft'un Loop-Blinn patenti (kübik eğriler için) de yakında sona erecek, bu da metin render etme dünyasını büyük ölçüde değiştirebilir
O zamanlar eğrileri üçgenlerle yaklaşık gösterme yöntemi kullanılıyordu, hâlâ öyle mi bilmiyorum
Geçmişteki doku atlası ya da SDF yöntemleri geçici çözümler gibi geliyordu ve ölçek değiştiğinde kalite düşüyordu
Slug'un açılmasıyla birlikte büyük kütüphanelerin ya da oyun motorlarının daha yüksek kaliteli render yöntemlerini benimsemesini umuyorum
Onun hâlâ bu alanda aktif olduğunu bilmiyordum