はじめに
先日Windows Terminalをブラウン管風の見た目にできるOSSを公開しました。
Windows Terminalの背景をhlslでPixel Shader適応できるらしく、ブラウン管風の見た目を作ってみた pic.twitter.com/nk4dD7HtFh
— はなちる@ゲーム制作 (@hanaaaaaachiru) June 6, 2026
今回はその紹介と、技術的にどう実現したかについて書きたいと思います。
概要
冒頭でも紹介した通り、今回作成したwt-crt-effectを利用することで簡単にWindows Terminalの見た目をブラウン管風にできます。


一応公式でRetro terminal effectsというのはすでにありまして、見た目をレトロにすることは可能です。

learn.microsoft.com
ただ魚眼レンズだったり、もうちょっとやり過ぎなくらいの見た目にしたいなと思い自作してみました。ただ文字が見やすいかというとなんともなので、もし使われる方はある程度覚悟した方がよいと思います。
インストール方法
まずはレポジトリをcloneしてください。
# ghコマンドを用いた例 # お好きな手法でcloneしてください $ gh repo clone hanachiru/wt-crt-effect
続いてcloneしてきたレポジトリにカレントディレクトリを移動して、以下のコマンドを実行すれば完了です。
# 権限を付与する $ chmod +x ./install.ps1 # シェーダーを適用 $ ./install.ps1 # 元に戻す $ ./install.ps1 -Uninstall
技術的なこと
Windows Terminal 1.6以降はHLSLを用いてピクセルシェーダーを記述することが可能です。
Windows ターミナルを使用すると、ユーザーは、settings.json ファイル内のプロファイルに experimental.pixelShaderPath プロパティを追加することによって、ターミナルに適用されるピクセル シェーダーを提供できます。 ピクセル シェーダーは HLSL と呼ばれる言語で記述されます。
今回の例で言うとsettings.jsonに以下のようにプロパティが設定することで、指定した.hlslが読み込まれます。
{ "profiles": { "defaults": { "experimental.pixelShaderPath": "C:\\path\\to\\wt-crt-effect\\shaders\\crt.hlsl" } } }
crt.hlslの中身は以下のとおりです。
実装するにあたって、以下は抑えておくと良いと思います。
// Windows Terminalが自動的に提供する情報 cbuffer PixelShaderSettings : register(b0) { float Time; // シェーダーが読み込まれてからの経過時間(秒) float Scale; // ディスプレイの拡大率 float2 Resolution; // ターミナルの画面解像度(幅、高さのピクセル数) float4 Background; // 背景色 (RGBA) } // テクスチャとサンプラー // uv(0.0〜1.0の座標)を指定して shaderTexture.Sample(samplerState, uv) と呼び出すことで、画面の特定の位置のRGBを取り出せる Texture2D shaderTexture : register(t0); SamplerState samplerState : register(s0);