Eric LengyelがSlug特許をパブリックドメインに:GPUテキスト描画の常識が変わる
SDF vs. MSDF vs. Slug: GPU Text Rendering
GPUでのテキスト描画は、解像度や3D変換、毎フレームの変化に対応しようとすると一気に難しくなる。本記事は、テクスチャアトラス、SDF、MSDF、テッセレーション、そしてEric Lengyelが開発したSlugという5つの手法を比較。Slugはアトラスも毎フレームのテッセレーションも使わず、フラグメントシェーダ内でアウトラインから直接カバレッジを解析的に計算する。2026年3月17日に同特許がパブリックドメイン化されたことを受け、筆者らはC++20実装のSlughornを公開。各手法の得意分野と限界を整理し、特に任意の3D変換下で鮮明さを保つSlugの強みを解説する。
Lengyelは2019年に特許を取得し、2026年3月17日にその特許をパブリックドメインに捧げた。
HNでの議論
52- YuechenLi
この記事には不正確な情報がいくつかある。MSDFアトラスは静的にベイクする必要はないので、非同期でアトラスにアップロードできるなら「CJK文字は巨大なアトラスを意味する」というのは実際には問題ではない(非同期のアウトライン抽出はCライブラリでは少し難しいので、パイプラインが主にアトラスアップロードに制限される理由だ)。
もう一つは、MSDFレンダリングはかなり安価で、GPUシェーダーなしでもCPUで簡単にできる。アトラスの生成/アップロードが高コストな部分だが、アトラスは単なる通常のビットマップテクスチャファイルなので、文字ごと、フォントごとに一度だけのコストだ。MSDFテキストはほとんどのズーム解像度でシャープなエッジを持ち、小さいサイズのテキストはどのみち単純なCPUラスタライズで扱う方が良い。
小さいフォントに対してMSDF + ラスタフォールバックよりもSlugを使うことの大きな利点は正直見えない。確かにSlugの方が正確だが、はるかに複雑なGPU依存のレンダリングに対して、わずかな解像度の利点が見合うかどうかはわからない。だから、明らかにAIが書いた記事の言葉を鵜呑みにするよりも、時間があるときに自分で試してみたい。