概要
Tattoy が アニメーションカーソル のサポートを開始。 Ghostty フォーマットとの互換性を実現。 ピクセル描画方式の違いによる表現の差異。 アンチエイリアスや透過処理の課題と解決策。 今後の パフォーマンス改善 の展望。
Tattoyのアニメーションカーソル対応について
- Tattoy が アニメーションカーソル のサポートを開始
- Ghostty と同じカーソルフォーマットを採用
- Ghostty 用の人気カーソルを Tattoy でそのまま利用可能
- Ghostty は実際のピクセル単位でカーソルを描画
- Tattoy はUTF8テキストベースの「 ▀」「 ▄」でカーソルを表現
- 表現の違いにより Ghostty の微細な表現が一部再現不可
- ピクセル化された表現が好まれるケースも存在
実装と技術的課題
- Tattoy のシェーダーフレームワークを活用し、短時間で初期実装
- 完全な動作までには一週間以上の調整期間
- 最大の課題はアンチエイリアス端の 透明度サポート
- Ghostty シェーダーはターミナルのピクセル情報をサンプリング
- Tattoy は純粋なテキストベースでピクセル情報取得不可
- テキストの 色情報 を利用し、粗いピクセル化ターミナル画像をGPUにアップロード
- アンチエイリアスは改善されたが、カーソル画像にピクセル化ターミナルも含まれる問題
- GPUにアップロードしたターミナル画像と最終カーソル画像を比較し、差分のみを描画する 後処理 を実装
- この手法で 透明度 と アンチエイリアス の課題を解決
パフォーマンスと今後の展望
- 大きなターミナルでは 遅延 が発生する場合あり
- 一般的な パフォーマンス改善 の余地が多い現状
- 遅延の一因は、 アニメーションカーソル と ホストカーソル の同時描画
- Tattoy がカーソル描画全体を管理すれば遅延改善の可能性
- 今回は 最初の試み として良好な結果
- 利用者からの フィードバック を歓迎