Ghostty Shaders
ターミナルエミュレータGhosttyのシェーダ機能を試してみました。
以下のサイトのコードがほぼそのまま利用できました。
残念ながらテクスチャを利用するコードは使えませんでした。
https://www.shadertoy.com/
コードを改造することによりターミナルエミュレータとして利用可能になります。
iChannel0にはターミナルエミュレータの出力が割り当てられていて変更はできないようです。custom-shader-ichannel1 = ./texture.png
みたいなテクスチャのローダが実装されないかなぁ。
環境
- Arch Linux
- GNOME 47.5
- ghostty 1.1.2
構築
以下のサイトのサンプルコードを利用します。
https://www.shadertoy.com/
サンプル1
- 以下のサンプルコードをファイルに保存します。
URL https://www.shadertoy.com/view/Xds3zN FILE $HOME/.config/ghostty/shaders/raymarching_primitives.glsl - Ghosttyの設定ファイルでGLSLファイルを指定します。
$HOME/.config/ghostty/config custom-shader = ./shaders/raymarching_primitives.glsl
サンプル2
- 以下のサンプルコードをファイルに保存します。
URL https://www.shadertoy.com/view/Ms2XzK FILE $HOME/.config/ghostty/shaders/nyancat.glsl - 最後の方のコードを修正します
$HOME/.config/ghostty/shaders/mario.glsl 54
55
56
57
58
59
60
61
62
63
64vec4 rainbow = getRainbowAt(uv, nyan_p);
col = mix(col, rainbow, rainbow.a);
//vec4 nyan = getNyanAt(uv, nyan_p, nyan_s);
//col = mix(col, nyan, nyan.a);
//fragColor = vec4(col);
vec4 terminalColor = texture(iChannel0, uv);
fragColor = vec4(col + terminalColor);
} - Ghosttyの設定ファイルでGLSLファイルを指定します。
$HOME/.config/ghostty/config custom-shader = ./shaders/nyancat.glsl
サンプル3
- 以下のサンプルコードをファイルに保存します。
URL https://www.shadertoy.com/view/XtlSD7 FILE $HOME/.config/ghostty/shaders/mario.glsl - 最後の方のコードを修正します
$HOME/.config/ghostty/shaders/mario.glsl 1424
1425
1426
1427
1428
1429
1430// fragColor.xyz = color;
// fragColor.w = 1.0;
vec4 col = vec4(color, 1.0);
vec4 terminalColor = texture(iChannel0, uv);
fragColor = vec4(col + terminalColor);
} - Ghosttyの設定ファイルでGLSLファイルを指定します。
$HOME/.config/ghostty/config custom-shader = ./shaders/mario.glsl