メインコンテンツへスキップ

GPUで文字がくっきり!鮮明レンダリング技術

·4 分
2025/06 GPU レンダリング テキスト グラフィックス プログラミング

GPUで文字がくっきり!鮮明レンダリング技術

引用元:https://news.ycombinator.com/item?id=44265233

osor_io 2025/06/13 08:20:29

著者だよ!まさか記事がここに載るとは思わなかった。読んでくれて、面白い議論に参加してくれて、本当にありがとう!

muglug 2025/06/13 13:57:45

すごくいい記事だね!最初の動画の、斜体の“j”の点、どうなったの?

osor_io 2025/06/14 11:25:18

ありがとう!よく気づいたね。あれはね、あの点の輪郭の点が、フォントの他の曲線と逆方向に定義されてるからなんだ。だからレンダラーが外側の輪郭じゃなくて内側の輪郭として解釈しちゃう。
TrueType(外側が時計回り)かPostscript(外側が反時計回り)で向きが決まってるんだけど、Postscriptスタイルを見つけたら反転させて、レンダラーが同じように処理できるようにしてるんだ。でもなぜか、あの点はFreeTypeで反転を避けてるか、元のフォントファイル自体がおかしいか。
多くのレンダラーは輪郭の向きを気にしないけど、それもそれで問題(変な場所が塗りつぶされたり)があるから、どっちもどっちって感じかな。Sebastian Lagueのテキストレンダリングのすごい動画でも、これに対処してたと思うよ。
元のフォントファイル(Libre Baskervilleはオープンソースだから)を見て、何がおかしいのか確認してみようかな。もしそのレベルの不整合なら、直せるかもね。ナイスな発見!

vecplane 2025/06/13 03:35:56

サブピクセルフォントレンダリングは可読性には必須だけど、著者が指摘するように、既存のディスプレイ規格がピクセルレイアウトの仕様を提供してくれないのは悲劇だね。

crazygringo 2025/06/13 05:19:15

標準解像度ディスプレイだけだね。それも“必須”じゃなくて、あるといいねくらい。世界はRetinaみたいなディスプレイにどんどん移行してるし、そこでサブピクセルレンダリングが必要な理由はほとんどない。
それに、スクショが特定のサブピクセルレイアウトに縛られたり、Bitmapを拡大できなかったり、たくさんの問題があるしね。CRTとRetinaの間のLCD時代の、一時的なイノベーションだったんだよ。今となっては時代遅れ。AppleがmacOSから何年も前に削除したのにはちゃんとした理由があるんだよ。

NoGravitas 2025/06/13 12:53:34

標準解像度で標準的なサブピクセルレイアウトのディスプレイでも、サブピクセルレンダリングで色ずれが見えるんだよね(カラーフリンジング)。HiDPIディスプレイはスマホ以外どこにも持ってないけど、それでもサブピクセルテキストレンダリングはいらない。みんなあれを万能薬みたいに言うけど、正直、あれに行き着いた経緯って結構特殊でちょっと変なんだよ。

zozbot234 2025/06/13 13:00:18

サブピクセルレンダリングで色ずれが見えるって?ディスプレイのRGBサブチャンネルごとにガンマ調整してみた?サブピクセルアンチエイリアシングは、他の種類のアンチエイリアスよりもさらに正確な色空間情報に頼ってるんだよ。

jeroenhd 2025/06/13 16:08:17

世界がRetinaに移行してるって?俺の世界じゃ違うな。クリスピーな仕事用MacBookに繋いでるディスプレイもまだ1080pだし(macOSだとすごく変に見えるけど)。技術系の知り合いでも、ほとんどが1080pノートだよ。世界はみんなが思ってるほどRetinaじゃない。
なんか理由があって、テレビじゃないと1080pから4kに結構な値段が跳ね上がるんだよね。パネルがもっと高いのはわかるけど、メーカーが本当に倍も払ってるかは疑問だな。

josephg 2025/06/13 21:43:40

俺のデスクトップモニターは47インチのディスプレイ… 4kで動かしてるよ。基本的にテレビをコンピューターモニターにしたもの。デスクの全幅を占めてる。
プログラミングにはとてつもなく素晴らしいディスプレイだよ。コードを3列フル幅で並べられる。あるいは2列とターミナルウィンドウ。
でもピクセルはまだ“普通”のサイズ。テキストはサブピクセルレンダリングがあると目に見えてシャープに見えるんだ。サブピクセルレンダリングが複雑で正しく実装するのが難しいのはわかるけど、いい技術だよ。このサイズで同じくらいきれいなテキストレンダリングをするには、8kディスプレイが必要になる。それだと値段がずっと高いだけじゃなく、8k画像をレンダリングしたら、どんなコンピューターもほぼ悲鳴をあげるだろうね。
サブピクセルフォントレンダリングを終わらせるのは早すぎるよ。いいものだし、まだ必要だ。

HappMacDonald 2025/06/13 19:39:51

このメッセージを読んでる4k(3840x2160 UHD)モニターは、10(10)年前に250usdで買ったやつだよ。
同じ年に800usdで買った、ほぼあり得ない(50インチ?正確には覚えてない)4k TVを失ったことを今でも嘆いてる。当時あった他のどの4kモデルも3.3k usd以上だったのに。
その黒点は「黒フレームをレンダリングすると、セットが100%電源オフに見える」で、白点は「おめでとう、これが野球場の投光器を凝視する様子だ」って感じだった。当然10%の明るさで使ってたけど、適当なコンテンツを再生するだけで、夜のリビングとダイニングを合わせた部屋の他の照明は全く不要だったくらいだ。
この世には純粋すぎたんだ… 子供の一人がリビングで何か投げて壊しちゃったんだよ。:(

MindSpunk 2025/06/14 01:06:12

MacOSって、非Retinaディスプレイだと見た目が悪いんだよね。テキストにサブピクセルAA使わないのが原因かな。

zajio1am 2025/06/14 02:43:28

知ってる限りだと、MacOSが標準解像度で見づらいのはグリッドフィッティングしないのが主な理由じゃないかな。俺はLinux使ってて、サブピクセルAAは使ってないけど(通常のAAだけ)、グリッドフィッティングをしっかりやってるから文字がシャープだよ。

f33d5173 2025/06/13 05:45:31

Appleはハードウェア全部自分で作ってるから、みんな特定の機能を持ってるって前提で開発できるんだよ。持ってない人は気にしない。他のメーカーにはそんな特権ないもんね。

akdor1154 2025/06/13 08:18:51

Appleならエコシステム全体の画面で特定のサブピクセル配列を簡単に統一できたはずなのに、それでもその機能をやめちゃったんだよね。

LoganDark 2025/06/13 08:55:54

ピクセル密度が高くてグレースケール表示で十分綺麗なら、サブピクセルAAで発生するアーティファクトなんて要らないし馬鹿げてる。それにディスプレイのスケーリングと組み合わせるとサブピクセルAAは余計なノイズを生むんだよね。(まあスケーリング自体も綺麗じゃないけどね。例’えばiPadのスケーリングのノイズは耐えられないな)

wpm 2025/06/13 14:36:03

Appleはピクセル密度が十分高いことを保証できないよ。だってどんな外部モニターにも繋がるPCやタブレット作ってるじゃん。MacOSって218ppiじゃないとマジひどい見た目なんだよね。Appleの高いディスプレイ以外でこれ満たすのって、LGのUltrafine 5KとDellの6Kだけ。LGはもう売ってないらしいけど。
つまり、LGかAppleの高いディスプレイ買わないと外部モニターでのMacOSは最悪になる可能性が高いってこと。接続設定の酷さとか、BetterDisplay買わないとリフレッシュレート選べないとか、そういう問題もあるしね。

eviks 2025/06/13 09:53:02

でも、世界中のディスプレイ全体で見たら、Retinaタイプって何%くらいあると思う?全然普及してないんじゃない?

jeroenhd 2025/06/13 16:13:55

面白いことに、それって当たってる部分があるんだよね。今のスマホは全部Retinaだし、安いタブレットですら高解像度。俺が持ってるので一番解像度高いのってGalaxy Tab S7 FEかも。なのにPCは高いの買わないと1080pのまま。大手メーカーがケチってるだけだと思うんだよね。だってChromebookくらいの値段で高解像度タブレット出てるのに、PCに同じの載せるのに500ユーロも値上げする必要ないでしょ。

gfody 2025/06/13 19:29:34

>スクリーンショットが特定のサブピクセル配列に縛られる、みたいな話’だけど、スクリーンショットはもっと良い画像形式が欲しいよね。ラスタライズじゃなくてベクトルとかテキスト情報ごと保存できるやつ。WindowsのHDRスクリーンショットも似た理由でダメになってるし。

meindnoch 2025/06/15 12:07:50

または、単純にスクリーンショットを水平方向の解像度を3倍にして、ピクセルアスペクト比を3:1で保存するとかどう?

zozbot234 2025/06/13 06:51:12

DisplayID 標準 (EDID の後継) って、このためにあるはずじゃない?
https://en.wikipedia.org/wiki/DisplayID#0x0C_Display_device_…
メーカーがこれ実装してないだけ?
どっちにしても、簡単に情報取って hardware-info database に入れられるはずなのにね、少なくともよくあるディスプレイモデルなら。

jeroenhd 2025/06/13 16:18:34

OS がこれ用の API を公開してるとは思えないなー。
Linux tool で画面の明るさ変えるやつ、GPU 経由で hardware に direct に話しかけてるし。
Unfortunately、EDID も always 信頼できるわけじゃないんだよね。向き知らないと rotated screens が awful になるし。
必要な data を取るには administrator access がいるだろうし、 security とか ease-of-use の問題にもなるかも。
Plus、vendor によっては EDID に lie するみたい。ACPI みたいな他の情報 tables と同じで、別の product の config を copy して、覚えてる metadata だけ update して出荷してる感じ。

jasonthorsness 2025/06/13 03:47:58

なんで? decades 前からあったのに :(.
記事は excellent だし、この ”subpixel zoo” も面白いよ。
https://geometrian.com/resources/subpixelzoo/

layer8 2025/06/13 14:57:25

“Tragedy” はちょっと overstate じゃない?
各 OS が Window の former ClearType tuner みたいなの提供して、 screen や monitor model ごとに results を覚えればいいじゃん。
monitor が間違った layout を report する inevitable case のためにも、それが desirable だと思うよ。

mrob 2025/06/13 06:04:15

Subpixel rendering って most languages では unnecessary なんだよね。
Bitmap fonts や hinted vector fonts を antialiasing 無しで使えば excellent な readability が得られるよ。
Chinese や Japanese みたいに very intricate details を持つ characters を使う言語の場合だけ important。

kvemkon 2025/06/13 04:09:04

GTK4 は rendering を GPU に move して RGB subpixel rendering を give up したんだ。
GPU-centric な decision で impractical になったって聞いたけど、article は possible って示してるね。
So perhaps、GTK の reason は another one だったか、presented solution が disadvantages を持ってたか、just not integrate in the stack だったのかも。

dbcooper 2025/06/13 04:42:39

Cosmic Text (Cosmic DE) は swash 経由で GPU 上でこれやるかもね。
Subpixel rendering があるよ。

xiaoiver 2025/06/13 05:56:59

SDF と MSDF を WebGL / WebGPU で implement する方法に interest があるなら、この tutorial を take a look してみて。
https://infinitecanvas.cc/guide/lesson-015#msdf.

Buttons840 2025/06/13 07:16:26

This looks great。
Rust の WebGPU implementation である WGPU に some interest があって、この tutorial は advance course みたい。
JavaScript examples を Rust に translate するの、learning に ideal なんだ。
code を copy/paste できないけど、APIs は enough に近いから port しやすいし、WGPU docs に慣れる excuse になるよ。

tamat 2025/06/13 09:59:35

わー、サイトの形式めっちゃ好き!もっと詳しく教えてくれる? GPUチュートリアル作るの好きなんだ。あなたのサイトみたいに構成したいんだよね。既存のテンプレートなのかな? それとも何かのコースの一部?

もっとコメントを表示(1)
jama_ 2025/06/14 06:09:34

サイト形式はVitePressのdocsテンプレートを再利用してるみたいだね。テキストが多いコンテンツにはすごく良い方法だよ。サイトはオープンソースみたいで、ページの一番下にリポジトリへのリンクがあるよ:https://github.com/xiaoiver/infinite-canvas-tutorial

xiaoiver 2025/06/16 03:14:56

僕はVitePressを使ってるよ。組み込みのMarkdown拡張機能がいっぱいあるんだ。
https://vitepress.dev/guide/markdown

dcrazy 2025/06/13 03:46:59

Slugライブラリ[1]は、こういうGPUグリフライスタライザーを実装した商用ミドルウェアだよ。[1]: https://sluglibrary.com/

bschwindHN 2025/06/13 12:32:07

彼らはウェブサイトでアルゴリズムをかなり詳しく説明してるね。特許持ってるのかな? オープンソースのwgpu版を作るのは面白そうだけど、フォント解析とかレイアウトにcosmic-textの何かを使うとか。でも、最後にSlugから訴えられたら、全然面白くないな。

grovesNL 2025/06/13 12:57:01

Slugは特許取られてるけど、vello(wgpuを使うやつ https://news.ycombinator.com/item?id=44236423)みたいに他の似たアプローチも開発中だよ。
私もglyphon(https://github.com/grovesNL/glyphon)作ったよ。wgpuとcosmic-textを使って2Dテキストをレンダリングするやつ。動的なグリフテクスチャアトラスを使ってて、ほとんどの2Dユースケースでは実際うまくいくよ(本番環境で使ってる)。

bschwindHN 2025/06/13 15:26:37

cosmic-textとgliumで似たようなことしたことあるよ。でも、ゲームとか3D用に、グリフのアウトラインとか変換でもっと凝ったことできるベクトルレンダリングモードがあると面白いよね。もちろんオープンソースで。
velloはその方向に向かってると思うけど、試すたびにいつもなぜかサンプルが壊れてたんだ。

mxplerin 2025/06/13 20:45:38

似たようなことの放棄した概念実証(Proof-of-Concept)があるんだけど、チェックしてみる価値あるかも https://github.com/mxple/fim

bschwindHN 2025/06/14 01:07:02

超面白い!動画で見た感じだと、乗り物酔いしそうかなと思ったけど、ベジェレンダリングで何を目指してるかは分かったよ。

vFunct 2025/06/13 03:48:39

GPUがほぼ無限の頂点/ピクセル描画能力を持ってるのに、なんでテキストをオフラインでレンダリングして、SDFみたいなトリックと一緒にアトラスに格納する必要があるのか、まだよく分からないんだ..。記事でもグリフ曲線をアトラスに書き込むって言ってるし。なんでシェーダーで直接テキストをレンダリングできないの? ベジェを三角形メッシュに変換する方法はあるはずだよ。
今CADアプリ用のGPUテキストレンダラーに着手しようとしてるんだけど、その理由がすぐに分かるといいな。

modeless 2025/06/13 04:52:28

同じ文字を繰り返し描くなら、その結果をキャッシュしとく方が大抵の場合、断然安いよ。GPUは確かに速いけど無限じゃないし、事前に描かれたテクスチャからサンプルするのとか超得意だからさ。
あと、速さだけじゃなくて電力消費も重要なんだよね。モニターのリフレッシュレートに達するくらい速くなれば、それ以上速くなっても体感の応答性は変わらないかもだけど、バッテリーは長持ちするようになるかも。
だから、レンダリングにおいては「速すぎる」ってことはないんだ。もっと速くすれば常に何かしらメリットがあるんだよ。

account42 2025/06/13 07:47:03

>モニターのリフレッシュレートに達するくらい速くなれば、それ以上速くなっても体感の応答性は変わらないかも
これは正しくないね。もしレンダリングがもっと速ければ、描画開始や入力処理のタイミングをフレーム表示時間にギリギリまで近づけられるから、入力の遅延を減らせるんだよ。

modeless 2025/06/13 13:43:41

それは本当だけど、実際にはあんまり実装されてないんだよね。

animal531 2025/06/13 10:42:03

それは確かにそうだけど、今回のケースでは、描画済みの文字の出力をキャッシュして再利用できるんだよ。SDFとかの中間ステップもすっ飛ばせる。
もちろん、ゲームとかでフォントサイズが変わったり、文字が回転・傾いたりすると、この方法は使えなくなるけどね。

MindSpunk 2025/06/13 05:28:41

普通の表示サイズでも、フォントの三角形密度ってめちゃくちゃ高いんだよね。最近のGPUアーキテクチャは、そんな高密度の形状を扱うのがめっちゃ苦手なんだ。
こういう場合、単純にGPUに三角形をバンバン送るより、アトラスとか別のやり方の方がずっと効率的。
ほとんどのGPUはピクセルシェーダーを4つ一組で処理するんだけど、三角形が全部1ピクセル大だと、3つのスレッドが視覚的に何も貢献しない無駄になるんだよ。これを’quad overdraw’って言うんだ。
頂点処理にも無駄な時間をたくさん費やすことになるんだよね。

ben-schaaf 2025/06/13 06:40:32

GPUは無限に頂点やピクセルを描けるわけじゃないからね。テキストを直接レンダリングするのは、単純にコストが高いんだ。
もちろん、やろうと思えばできるけど、フレームの描画に使える時間を食っちゃうし、電力消費も増えるだけで、特に良いことはないんだよ。

account42 2025/06/13 07:54:49

これをさらに詳しく言うと、GPUは三角形しかラスタライズできないから、文字をそのまま直接描くってことができないんだ。
シェーダーの中でラスタライズ処理を実装するか、フォントの滑らかな曲線を、結果が変わらないくらい十分な数の三角形に変換してあげる必要があるんだ(必要な三角形の数はフォントのピクセルサイズが大きくなるほど増えるよ)。

WithinReason 2025/06/13 06:35:00

三角形を使うのは間違った選択だけど、それ以外は良い指摘だね。
この記事の人がアトラスを使ってるのは、ベジェ曲線をピクセルあたり最大512サンプルでスーパーサンプリングしてるからで、これがすごくコストがかかるんだ。
だけど、例えばベジェ曲線の領域とサブピクセルの領域が交差する部分の積分を計算する方が、はるかに速くリアルタイムで実行できる可能性があるし、スーパーサンプリングよりも正確だと思うよ。

dxuh 2025/06/13 05:54:51

GPUはすごく速いけど、完全に無限じゃないからさ。テキストにGPU時間を使っちゃうと、他の処理に回せなくなるんだ。
そして、ほとんどの場合、他の処理にGPU時間を使いたいものなんだよね。
それに、要求するGPU時間が多いほど、必要な最低ハードウェアのスペックも上がっちゃう。
文字ってクールで重要だけど、ユーザーとかお客さんを失うほど重要じゃないかもしれないからね。

CrimsonCape 2025/06/16 23:35:22

Adaptive distance fieldsっていうのは、Saffronっていうフォントレンダリングライブラリで使われてた、古いけど興味深い技術だったね。
今でもすごく有効だし、オープンソースでの実装が期待されてる。
ADFっていう言葉はあまり広まらなかったんだけど、ほとんどが特許でガチガチに守られてたんだ。でも、もうほとんどの特許が期限切れになってるみたいだよ。

andsoitis 2025/06/13 06:48:21

>なんでシェーダーは直接テキストをレンダリングできないの?
https://sluglibrary.com/はDynamic GPU Font RenderingとかAdvanced Text Layoutを実現してるよ。

account42 2025/06/13 07:51:46

GPUラスタライザはサブピクセルレンダリングしないんだよね。これは3Dではいいけど、小さいテキストだと追加解像度を活かしたいじゃん?
でも、どうせアトラスにレンダリングするなら、別にGPUでやる必要なくて、FreeTypeみたいな既存のソフトラスタライザでアトラス作ればいいだけだよ。

shmerl 2025/06/13 04:22:10

>綺麗だけど非標準サブピクセル構造でフリンジ問題がある新しいOLEDのことだね。
俺の理解だと、それより酷いよ。非標準なだけでなく、互換性のない複数のサブピクセルレイアウトがあるんだ。だからFreeTypeはOLED向けサブピクセルレンダリングを実装しなかったし、テキスト作業するならOLEDを避ける理由になってる。FreeTypeに限らず、QtやGTKみたいなGUIツールキットも対応しないといけない。
解決に進展があるかは不明。
>モニターの任意のサブピクセル構造にアクセスできたらいいのにね、共通ディスプレイプロトコル経由で。
うん、そこはいい指摘だね。たぶんEDIDsで伝達されるべきかもね。

account42 2025/06/13 08:04:15

標準的なサブピクセルレイアウトのOLEDもあるよ。例えば俺のノートPCは縦の(!) BGRレイアウトで、FreeTypeとKDEは問題なく対応してる。変なレイアウトはたぶんHDRディスプレイで特定の色(青)が早く焼き付かないように、色ごとにサイズを変える必要があるからだと思うな。

shmerl 2025/06/13 14:40:11

そうかもね、でも俺が見たバグ報告だと色んなレイアウトがあって、どれも標準には見えなかったよ。Steam Deck OLED、LenovoノートPC、LG UltreaGear OLEDとかが例だね。共通点は正直見当たらないな。
* https://bugs.kde.org/show_bug.cgi?id=472340
* https://gitlab.freedesktop.org/freetype/freetype/-/issues/11

ipsum2 2025/06/13 06:21:42

理論上はそうだろうけど、実際には俺は4K OLEDディスプレイでコード書いてるけど、何もアーティファクトに気づいたことないんだよね。

shmerl 2025/06/13 07:13:32

高解像度だと問題が見えにくくなるだけかもね、でも問題自体はあるよ。

oofabz 2025/06/13 04:26:26

すごい仕事だね!この分野に詳しくない人向けに言うと、Valveがゲーム向けにSDFテキストレンダリングを発明したんだ。2007年に画期的な論文出して、今でもゲームで人気の技術だよ。2012年にはBehdad EsfahbodがOpenGL ESを使ってGPUで動くGlyphyっていうSDF実装を書いた。パフォーマンスや素早いテキスト変形を可能にしたことで賞賛されたけど、広くは使われてない。今のOSやブラウザはこれらの技術を使ってなくて、1990年代のTruetypeラスタライズに頼ってる。これは軽くて効果的だけど、多くの機能がないんだ。記事で示されてるようなサブピクセルアライメントや任意のサブピクセルレイアウトはできないし、ズームは重いし、スキューや回転、3Dみたいな複雑な変形はテキストレンダリングエンジンじゃできない。回転や変形が必要ならビットマップのリサンプリングになっちゃうけど、それは小さくて読みやすさを保つ特徴を全部壊して見た目が悪くなる。
なんで進歩がないかって?たぶん、得られるものに対して作業量とリスクが大きすぎるんじゃない?現代のウェブブラウザエンジンをGPU高速化テキストレンダリング使うように書き直すの想像できる?気が遠くなるような作業だよ。グリフのレンダリングはともかく、改行はどうする?CPUとGPUの間の大量の通信が必要そうだし、ソフトウェアとGPUの深い連携も難しいだろうね。

chrismorgan 2025/06/13 09:51:25

「GPUで文字レンダリングって、ラインブレークとかどうすんの?」って言ってるけど、テキストの形を整えたり改行したりって、描画とはほぼ関係ない話だよ。なんでそんなこと言うの?

zozbot234 2025/06/13 10:50:13

ブラウザエンジンをGPUレンダリング用に書き換えるのって大変?
ServoのPathfinderっていうのがGPUのCompute Shaderでやってるよ。SDF使うよりずっとパフォーマンスいいんだ。https://github.com/servo/pathfinder

kevingadd 2025/06/13 14:22:12

ちょっと補足すると、WindowsやChrome、Firefoxでは文字レンダリング、例えばSubpixel Antialiasingとかも、昔からGPUで加速してるんだ。Safariもたぶんそう。技術が進んでないってのは違うよ。

もっとコメントを表示(2)
moron4hire 2025/06/13 05:41:53

SDFは万能じゃないよ。SDFは文字の輪郭からの距離をデータにする技術で、拡大縮小に強い。でも、使う文字すべてのデータが必要だから、Unicode全部に対応しようとするとデータがデカすぎる。だからOSやブラウザには向かないんだ。Emojiみたいなカラー文字も苦手だし。ゲームみたいに使う文字が決まってる場合に合う技術だよ。

rudedogg 2025/06/13 05:53:08

俺の理解だと、記事の筆者のアプローチはSDFの問題とは違うんじゃないかな。使う文字のグリフだけをGPUに送る方式だから。フォントごとに事前計算は必要だけど、それは問題ないはず。

chii 2025/06/13 06:01:30

でもさ、前のコメントはブラウザの話をしてるんだよ?ブラウザはウェブページが指定するフォントを使うのに、どうやって事前にフォントを計算しとくの?

onion2k 2025/06/13 07:03:26

ウェブフォントでよくやるのは、フォントを読み込んでその場でSDFのデータを作る方法だよ(Troikaっていうライブラリとか)。最初の表示は少し遅くなるけど、数百ミリ秒くらいだから、ウェブで3Dレンダリングするなら誰もそんなに気にしてないんじゃない?https://github.com/protectwise/troika/blob/main/packages/tro-three-text/src/worker/SDFGenerator.js

fc417fc802 2025/06/13 09:39:02

「最初のレンダリングが遅れる」って話だけど、キャッシュすれば簡単に解決しない?同じサイトなら使うフォントはそんなに多くないし、頻繁に変わることもないと思うんだけど。

krona 2025/06/13 08:51:40

WebAssemblyを使って、Web workerの中でFreetypeっていうライブラリを動かせばいいんだよ。そんな難しくないと思う。

cyberax 2025/06/13 08:14:46

テキストが来たときに、必要に応じてSDFを用意すればいいんじゃない?現実的に考えて、日本語とか中国語(CJK)でも数千文字くらいあれば十分カバーできるはずだよ。

kevingadd 2025/06/13 14:17:06

SDF生成ってGPU使えないとマジ遅いんだよね。速いアルゴリズムだとバグることもあるし。技術的な課題だね。

Someone 2025/06/13 11:19:01

モダンなWebブラウザエンジンをGPUテキストレンダリングに書き換えるなんて想像できる?
これって、もう既に部分的にやってるんじゃない?このURLの記事(2014年)によると、ChromeとかSafariで要素をGPUに上げるとサブピクセルアンチエイリアスは失われるけど、グレースケールでレンダリングされるって。
じゃあ、何が足りないんだろ?UTF-8文字列からビットマップへの変換の一部はGPUでできるんじゃないの?https://keithclark.co.uk/articles/gpu-text-rendering-in-webk…

zozbot234 2025/06/13 12:17:59

問題はサブピクセルレンダリングそのものじゃなくて(GPU compute shaderでやればピクセルパーフェクトも可能)、TrueTypeやOpenTypeの複雑なソフトウェアヒンティングが失われることなんだよ。でも、GPUでフォントをレンダリングする目的って、滑らかなアニメーションをサポートすることでしょ?ソフトウェアヒンティングされたフォントは静的にピクセルやサブピクセルグリッドにスナップされちゃうから、そもそもこの二つの使い方は相容れないんだよ。

vendiddy 2025/06/13 08:57:56

解説ありがとう!こういうサクッとした概要を読むの、大好きだよ。

Am4TIfIsER0ppos 2025/06/13 08:57:33

複雑な変換(スキュー、回転、3D変換)はできない
いいね!俺のテキストドキュメントビューアは、左から右への直線描画だけで十分なんだよ。右から左もほぼ同じくらい簡単だろうし。そういえば、中国語ってまだ上から下がいいのかな?

adwn 2025/06/13 11:27:14

俺のテキストドキュメントビューアは、左から右への直線描画だけで十分なんだよ。
「テキストドキュメントビューア」以外でテキストをレンダリングしたい人なんて、まさかいないとでも思った?信じられないね!

Fraterkes 2025/06/13 09:11:49

あんたがテキスト関連の仕事をしてないことを、マジで願ってるよ。

ChrisClark 2025/06/13 15:17:18

まさに「主人公症候群」の典型例だね。文字通りダジャレじゃないよw

Philpax 2025/06/13 14:38:22

信じられないかもしれないけど、あんた以外の人間も存在するんだよ。

ulfbert_inc 2025/06/13 10:18:33

ASCII文字だけの等幅フォントならいいけど、それ以外だとすぐ変になっちゃうよ。

meindnoch 2025/06/13 09:00:02

すごい技術だけど、サブピクセルAAはもういらないんじゃね?昔72dpiの時代はよかったけど、今のRetinaディスプレイだと違いわかんないし。
ちょっとした改善のために、不透明背景しかダメとか、効果つけられないとか、スクショが他のディスプレイで見ると変とか、デメリット多いし。

fleabitdev 2025/06/13 09:37:21

サブピクセルAAなくすと楽になるけど、低DPIモニター使ってる人まだ結構いるよ。Firefoxの調査だと16パーセントが1366x768だって。今でも新しい低DPIのモニターやノートPC作られてるしね。
[1] https://data.firefox.com/dashboard/hardware

layer8 2025/06/13 15:05:11

もっとびっくりするかもだけど、FHD以下使ってる人が全体の3分の2で、QHDとか4Kは6分の1くらいなんだって。デスクトップだと、まだ低DPIが普通ってことみたいだよ。

vitorsr 2025/06/13 11:45:23

あと、Linux Hardware Database(開発者寄りね)[1] とSteam Hardware & Software Survey(ゲーマー寄り)[2] も見てみて。
[1] https://linux-hardware.org/?view=mon_resolution
[2] https://store.steampowered.com/hwsurvey

ahartmetz 2025/06/13 09:29:52

それって『俺、高DPIの画面だから、そうじゃない人のことは知ったこっちゃない』って言ってるようなもんだろ?サブピクセルレンダリングが効く場面での良い結果に比べたら、他の話はマジでどうでもいいレベルだよ。

NoGravitas 2025/06/13 13:04:23

そうかなあ。俺は100dpiの画面だと色のフリンジが出るのが嫌で、サブピクセルレンダリングあんまり好きじゃないんだよね。他のデメリットも加味したら、やっぱり割に合わない感じ。

ahartmetz 2025/06/13 13:14:07

サブピクセルレンダリングって設定できるんだよ。特許切れたアルゴリズムもあるし。俺は最新のKubuntuでヒンティングとサブピクセルレンダリング使ってるけど、めっちゃ綺麗に見えるよ。あんま使わないけどWindowsでもClearType Tunerで設定したことあるけど、Windowsのフォントレンダリングは全体的にちょっと粒々してて細い感じなんだよね。

mistercow 2025/06/13 09:25:13

それにさ、もし筆者が望むみたいに、ディスプレイのサブピクセル配置を知るためのプロトコルができて、それが広く使われるようになっても、絶対一部のメーカーが間違えて、ユーザーにはマジで理解不能なレンダリング問題起こすって。間違いないね。

ahartmetz 2025/06/13 13:10:15

こういう問題は前からあったんだよ。で、解決策もちゃんとわかってる。ハードにプロトコルで聞く、間違った情報返すハードウェア用のquirkデータベース、そしてユーザーが自分で設定を変えられるオーバーライド、これね。

記事一覧へ

海外テックの反応まとめ
著者
海外テックの反応まとめ
暇つぶしがてらに読むだけで海外のテックニュースに詳しくなれるまとめサイトです。