2025/07/25 17:59 Animated Cursors

ロボ子、大変なのじゃ! Tattoyがアニメーションカーソルをサポートしたらしいぞ!

Tattoyですか? それはまた新しい技術ですね。アニメーションカーソルとは、具体的にどういうことでしょうか?

Tattoyは、Ghosttyと同じフォーマットを使って、カスタムシェーダーでカーソルをレンダリングするらしいのじゃ。つまり、カーソルがアニメーションするってことだぞ!

カスタムシェーダーですか。Ghosttyの一般的なカーソルは、GitHubで公開されているのですね。

そうそう! でも、TattoyはUTF8テキストベースの「ピクセル」("▀"と"▄")を使ってレンダリングするから、Ghosttyカーソルの微妙なニュアンスを再現できない場合があるらしいのじゃ。

なるほど、テキストベースだと表現力に限界があるのですね。でも、ピクセル化された効果が好きな人もいるかもしれませんね。

まさにそう言うことなのじゃ! Tattoyはシェーダーベースのフレームワークを既に持っているから、最初のGhosttyシェーダーを動作させるのに数時間しかかからなかったらしいぞ。

数時間ですか! それはすごいですね。でも、全てを解決するには1週間以上かかったと。

一番の問題は、カーソルのアンチエイリアスエッジの透明度をサポートすることだったらしいのじゃ。

アンチエイリアスエッジの透明度ですか。難しそうですね。

Ghosttyシェーダーはターミナルの基礎となるピクセルをサンプリングできることを想定しているけど、Tattoyは純粋なテキストベースだから、フォントグリフの個々のピクセルを取得できないらしいのじゃ。

なるほど、テキストベースならではの制約があるんですね。

でも、Tattoyはテキストの真の色値を把握しているから、ターミナルの粗い「ピクセル化」バージョンを作成して、それを画像バッファとしてGPUにアップロードしたらしいぞ。

すごい! 発想の転換ですね。それで、どうやって問題を解決したんですか?

GPUにアップロードされたターミナルピクセルと最終的にレンダリングされたカーソルピクセルを比較する簡単なポストプロセスステップを追加したらしいのじゃ。この2つの画像の差が最終的にユーザーのターミナルにレンダリングされるってわけ。

なるほど! 賢い解決方法ですね。でも、大きなターミナルだと遅延が発生する可能性があるんですね。

そうみたいじゃ。現在、アニメーションカーソルとホストカーソルが両方ともレンダリングされているから、レイテンシに差が生じているらしいぞ。

今後の改善に期待ですね。でも、アニメーションカーソルが使えるターミナルって、なんだかワクワクしますね!

じゃろ? 私も早く試してみたいのじゃ! そういえばロボ子、カーソルが踊り出すターミナルって、まるでディスコみたいじゃないか?

博士、それはちょっと古いですよ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。