- GPUでBézier曲線ベースのフォントレンダリングを行うSlugアルゴリズムは、テクスチャなしでベクターデータを直接レンダリングし、ゲーム・CAD・映像編集・医療機器など多様な産業で使われている
- 独占権を2026/3/17付で放棄し、特許がパブリックドメインとして完全に解放され、誰でも自由に使えるようになった
- 最近のバージョンでは、band split最適化とsupersamplingの削除、絵文字レンダリング方式の単純化などにより、性能とコード効率を改善
- 最大の変化は**動的膨張(dynamic dilation)**機能で、グリフのサイズと視点に応じて最適な境界拡張を自動計算する
- MITライセンスで公開されたGitHubのリファレンスシェーダーコードにより、誰でも自由に実装可能
Slugアルゴリズムの開発と普及
- Slugアルゴリズムは2016年秋に開発され、2017年にJCGT論文として発表された
- その後、Slug Library 1.0が商用化され、Activision、Blizzard、Ubisoft、Adobeなど主要企業にライセンス提供された
- ゲーム、科学可視化、CAD、ビデオ編集、医療機器、プラネタリウムなど多様な分野で使われている
- もともとはC4 Engineの高品質テキストレンダリングのために開発され、その後Radical Pie数式エディタにも適用された
- 数式、括弧、矢印などのベクターグラフィックス要素を高解像度で表現
レンダリング方式の進化
- Slugは事前計算されたテクスチャなしでBézier曲線データをGPU上で直接レンダリングする
- 浮動小数点誤差にも堅牢で、滑らかな曲線と鋭い角を維持
- band split最適化は大型グリフで速度向上があったが、小さなフォントでは性能低下と複雑性増加のため削除された
- これによりピクセルシェーダーが単純化され、bandデータテクスチャのサイズを半減
- adaptive supersamplingは小さなフォントのエイリアシング緩和に使われていたが、効果が限定的で新しい膨張手法に置き換えられたため削除された
- 多色絵文字レンダリングは、各レイヤーを独立したグリフとして処理する方式に変更され、性能向上とコードの単純化を達成
動的膨張(Dynamic Dilation)
- 従来はグリフ境界の拡張を固定距離で手動指定する必要があった
- 小さなフォントでは境界が失われ、大きなフォントでは不要な空間の浪費が発生
- 動的膨張は頂点シェーダーで自動計算され、各グリフのレンダリング時に最適な拡張距離を決定する
- MVP行列とビューポートサイズを用いて半ピクセル単位で境界を拡張
- 視点の変化に応じて各頂点ごとに異なる膨張距離を適用可能
- 数学的には、ビューポート空間で半ピクセル拡張条件を満たす距離 d を求める二次方程式として導出される
- 最終解は (d = \frac{s^3t \pm s^2\sqrt{u^2 + v^2}}{u^2 + v^2 - s^2t^2}) の形
- 正の符号を選んで外側方向へ移動
- グリフサイズを維持するためにem-space座標補正も行い、各頂点に逆Jacobian行列を保存する
特許解放と公開宣言
- Slugアルゴリズムは2019年に米国特許(US10373352B1) を取得したが、2038年までの独占権を2026年3月17日付で放棄した
- USPTOにSB/43フォームの提出と手数料の支払いを行い、特許の残存期間を正式に放棄
- これにより誰でもSlugアルゴリズムを自由に実装・利用可能になった
- 商用・非商用のいずれの目的も許可され、知的財産権侵害の懸念はない
- 実装の参考用としてGitHubリポジトリ(https://github.com/EricLengyel/Slug) を公開
- MITライセンスで提供され、JCGT論文より改善されたピクセルシェーダーと動的膨張を含む頂点シェーダーを収録
Slugの意義
- SlugはGPUベースのベクターフォントレンダリングの代表的な実装として位置づけられている
- 10年にわたる発展を通じて性能、単純性、品質をすべて向上させた
- 特許解放により、産業全体での自由な採用と拡張の可能性を確保
2件のコメント
本当に素晴らしい知らせですね。
Hacker Newsのコメント
それが一定期間後にパブリックドメインへ献呈されたとはありがたい。いつかターミナルエミュレータを作ることがあれば、コードの美学的な魅力ゆえにこのアルゴリズムを使ってみたい。
Windows 10/11向けのプロ向け数式エディタで、Slugをレンダリングエンジンとして使っており、価格は60ドル。おそらくFGED本の執筆にもこれを活用しているのだろう。
それでもMathTypeの優れた代替で、OLE統合によってWordにうまく挿入できる点は印象的だ。
ソフトウェア工学の到達点だと思う。これをパブリックドメインに寄贈した作者に感謝したい。
こうした事例がもっと増えてほしい。
ちなみにMicrosoftの**Loop-Blinn特許(3次曲線向け)**もまもなく失効予定で、テキストレンダリングの環境が大きく変わるかもしれない。
当時は曲線を三角形で近似する方式を使っていたが、今もそうなのかはわからない。
昔のテクスチャアトラスやSDF方式は場当たり的な対処に見えたし、スケールが変わると品質が落ちていた。
Slugが公開されたことで、主要ライブラリやゲームエンジンがより高品質なレンダリング方式を採用してほしい。
いまでもこの分野で活発に活動しているとは知らなかった。