Windows Terminalのプレビューv1.6が公開された。このバージョンでは、GUI設定ページが搭載されるなど、比較的大きく変更された。また、正式版でもv1.5が公開されている。v1.5に関しては、Preview版として以前紹介しているので、概要についてはその記事を見ていただきたい(「Preview版でv1.5まで進化したWindows Terminalの新機能を確認」)。
なお、Microsoftストアで公開されているv1.5は、一部v1.6で修正された内容もを含んでいる。リリースに関する情報は、githubにリリースノートがある(https://github.com/microsoft/terminal/releases/tag/v1.5.10271.0)。
v1.6のプレビューで追加されたGUI設定ページ
Windows Terminalは、これまで設定をjsonファイルの編集でする必要があった。開発者が使うことが多いものなので、外部のJsonエディタでの編集もそれほど苦ではないはずだが、今後は広く一般ユーザーの利用も考えられる。そこで、GUI設定ページの開発を昨年から進めていた。ただし、このGUI設定ページはまだ開発途上で、キー割り当てはまだなされていない。プレビュー版で利用する場合、まず、Settings.jsonに以下のようなキー割り当てを記述する。
{ "command": { "action": "openSettings", "target": "settingsUI" }, "keys": "ctrl+shift+," },
ただし、v1.6でsettings.jsonの仕様が変わっており、v1.6で初めてWindows Terminalをインストールした場合、キー定義を書くのは「"actions":」になるが、v1.5以前に一回インストールしてsetting.jsonが存在する場合、「"keybindings":」になる点に注意してほしい(内側の構造は同じ)。
これにより、「Ctrl+Shit+,」でGUI設定ページが開くようになるほか、コマンドパレット(Ctrl+Shift+P)からも「設定を開く」(英語だと「Open Settings...」)でページを表示するようになる。前記のキー割り当てをしないと、コマンドパレットにも表示されない。
設定ページは、settings.jsonでしていたほとんどの内容をカバーしている。ただし、キー割り当てや特殊な設定(後述のHLSLシェーダーなど)は、settings.json側でする必要がある。
設定ページはWindowsの設定アプリと同じく、左側に大項目、右側に設定ページがでる構造で、大項目は、「スタートアップ」、「操作」「概観」「配色」「レンダリング」の5項目とプロファイル設定になっている。
settings.jsonの「"schemes":」が「配色」、「"profiles":」がプロファイルになっていて、そのほかは、Settings.jsonのトップレベルに記述していた項目が分類されて残りの4項目に割り当てられている。ちょっとした設定であれば、外部のJsonエディタを起動することなく設定変更が可能だ。
HLSLシェーダーのサポート
こちらも実験的な機能だが、Windows Terminalのテキスト表示領域に対して、HLSL(High Level Shading Language)による描画機能が追加されている。これは、外部ファイルにあるHLSLシェーダープログラムを使うもの。シェーダープログラムはGPU側で処理するため、CPUに負荷をかけずに高速な描画が可能になる。これを利用するには、Profilesに以下の行を追加する。
"experimental.pixelShaderPath": "HLSLファイルパス",
HLSLファイルはHLSLで記述されたソースコード(テキストファイル)で、Direct3DのコンパイラがGPUのバイナリシェーダープログラムに変換して実行する。
以前からあったRetroTerminalEffectsは、このシェーダープログラムを利用したものだったようだ。外部のHLSLソースファイルを読み込んでコンパイルして利用できるようにして、ユーザーがさまざまなシェーダープログラムにより背景描画などをできるようにした。
たとえば、サンプルとして提示されている「Rasterbars.hlsl」は、以下のリストのようにテキストのソースコードだが、これをsettings.jsonで指定すると、読み込み時に自動的にコンパイルされ、GPUがWindows Terminalの背景を描画する。
Texture2D shaderTexture;
SamplerState samplerState;
cbuffer PixelShaderSettings {
float Time;
float Scale;
float2 Resolution;
float4 Background;
};
float4 main(float4 pos : SV_POSITION, float2 tex : TEXCOORD) : SV_TARGET {
float4 color = shaderTexture.Sample(samplerState, tex);
float4 ocolor = shaderTexture.Sample(samplerState, tex+2.0*Scale*float2(-1.0, -1.0)/Resolution.y);
const float thickness = 0.1;
float ny = floor(tex.y/thickness);
float my = tex.y%thickness;
const float pi = 3.141592654;
float cola = ny*2.0*pi;
float3 col = 0.75+0.25*float3(sin(cola*0.111), sin(cola*0.222), sin(cola*0.333));
float brightness = 1.0-smoothstep(0.0, thickness*0.5, abs(my - 0.5*thickness));
float3 rasterColor = col*brightness;
float3 final = rasterColor;
final = lerp(final, float(0.0), ocolor.w);
final = lerp(final, color.xyz, color.w);
return float4(final, 1.0);
}
このプログラムでは、背景に印影のついた横棒が表示される。よく見ると横棒の明るいところでは、文字の影が見える。
サンプルは以下のURLにある。
●Pixel Shaders in Windows Terminal
https://github.com/microsoft/terminal/tree/main/samples/PixelShaders#pixel-shaders-in-windows-terminal
念のため言っておくと、ここはgithubなので、上記ページのhlslファイルのリンクを右クリックして保存しても、保存されるのはファイルの中身を表示しているHTMLファイルなので注意が必要。
本来ならgitで取得するのだが、開発者でもなければ、gitをインストールするのは面倒だろうし、サンプルファイルだけほしいのにプロジェクト全部をダウンロードするのも無駄な感じがある。試してみたければ、リンクを開いて、HLSLのソースコードをコピーしてメモ帳に貼り付けるのが簡単かもしれない。
サンプルをいろいろと試してみたが、どうもWindows Terminal側が提供しているはずの経過時間を示す、Timeなどのパラメーターが更新されないようで、時間で変化するアニメーションのサンプルAnimate_scan.hlsl、Animate_breathe.hlslは動作しなかった。
この連載の記事
-
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る -
第448回
PC
PowerShellで面倒なオブジェクトはPSCustomObjectに変換するのが早道 - この連載の一覧へ