Zpět na domů

GPU-renderování fontů Slug: dynamická dilatace a MIT licence

Algoritmus Slug pro GPU-renderování fontů z křivek Bézier získal klíčové vylepšení — dynamickou dilataci, která automaticky optimalizuje rozšíření polygonů. Po evoluci kódu a odstranění zastaralých optimalizací je patent na metodu otevřen pod licencí MIT, umožňující volné použití v projektech.

Slug: GPU-renderování fontů s dynamickou dilatací — nyní pod MIT
Advertisement 728x90

GPU renderování písem Slug: dynamická dilatace a otevření patentu

Algoritmus Slug, vyvinutý v roce 2016, umožňuje renderovat písma a vektorovou grafiku na GPU přímo z Bezierových křivek, bez použití texturních map. Během deseti let se metoda vyvíjela, získala klíčové vylepšení – dynamickou dilataci, a nyní je jeho patent otevřen pro volné použití pod licencí MIT.

Evoluce algoritmu Slug

Slug řeší složitý úkol spolehlivého, rychlého a kvalitního renderování textu v reálném čase. Spolehlivost vylučuje artefakty jako vynechané pixely, rychlost zajišťuje renderování bez poklesu FPS na konzolích z roku 2016, a vysoká kvalita – plynulé křivky a ostré rohy v jakémkoli měřítku a perspektivě.

Od publikace v JCGT v roce 2017 prošel kód několika změnami:

Google AdInline article slot
  • Odstraněna optimalizace rozdělení pásů, která zrychlila velké glyfy, ale zaváděla divergenci do shaderů a zdvojnásobovala objem dat.
  • Vyloučen adaptivní super-sampling, protože jeho vliv byl patrný pouze u stěží čitelného textu, a aliasing malých velikostí je efektivně zmírněn dilatací.
  • Předělán přístup k renderování vícebarevných emodži: místo cyklu v pixel shaderu se nyní používá sada nezávislých glyfů s vlastními ohraničujícími polygony, což zjednodušuje kód a zvyšuje výkon.

Tyto úpravy zjednodušily pixel shader, snížily objem dat a zlepšily celkovou efektivitu renderování.

Dynamická dilatace: automatická optimalizace

Před zavedením dynamické dilatace uživatel ručně nastavoval konstantní vzdálenost pro rozšíření ohraničujících polygonů glyfů. To vedlo ke dvěma problémům: artefaktům aliasingu při malých velikostech a nadměrnému čerpání zdrojů GPU při velkých. Dynamická dilatace řeší oba, automaticky počítající optimální posunutí ve vertex shaderu na základě model-view-projekční matice (MVP) a rozměrů viewportu.

Výpočet zaručuje, že středy částečně pokrytých pixelů spadají do polygonu, zachycovány rasterizátorem, bez zbytečného vyplňování. Vzorec je odvozen z podmínky rozšíření o polovinu pixelu ve viewportu a redukuje se na kvadratickou rovnici:

Google AdInline article slot
d = (s³t + s²√(u² + v²)) / (u² + v² - s²t²)

kde s = m₃₀p_x + m₃₁p_y + m₃₃, t = m₃₀n̂_x + m₃₁n̂_y, a u a v jsou derivace parametrů MVP a normály. Znaménko «+» dává posunutí ven podél jednotkové normály.

Pro zachování původní velikosti glyfu jsou koordináty vzorkování na kagelní ploše korigovány pomocí inverzní Jakobovy matice 2×2, která transformuje posunutí v objektovém prostoru.

Otevření patentu a licencování

V roce 2019 autor získal patent na algoritmus Slug, ale nyní jej otevírá pro volné použití pod licencí MIT. To umožňuje vývojářům integrovat metodu do svých projektů bez právních omezení. Knihovna Slug již je licencována společnostmi jako Activision, Adobe a Ubisoft pro videohry, vědeckou vizualizaci, CAD a další oblasti, což demonstruje její praktickou hodnotu.

Google AdInline article slot

Co je důležité

  • Slug renderuje písma a vektorovou grafiku na GPU přímo z Bezierových křivek, zajišťuje spolehlivost, rychlost a vysokou kvalitu.
  • Dynamická dilatace automaticky optimalizuje rozšíření ohraničujících polygonů, odstraňuje artefakty a nadbytečné náklady na zdroje.
  • Algoritmus se vyvinul: odstraněny optimalizace rozdělení pásů a super-sampling, zjednodušen renderování emodži.
  • Patent na Slug je nyní otevřen pod licencí MIT, umožňující volné použití v komerčních a nekomerčních projektech.
  • Metoda se používá v průmyslu videohier, vědecké vizualizace, CAD a dalších oblastech, potvrzuje svou efektivitu.

— Editorial Team

Advertisement 728x90

Číst dál