glslviewer-shader-debug について
glslviewer-shader-debugは、シェーダーの計算結果を再現可能なヘッドレスプレビューにするスキルです。シェーダー断片を標準GLSLに変換し、glslViewerでPNGをレンダリングして、形状やマスクを期待値と照合する手順を示します。
主な機能
- 01シェーダー断片をGLSLに変換
- 02ディスプレイなしでシェーダーを描画
- 03PNGプレビューの出力
- 04輪郭とマスクの可視化
- 05期待値と描画結果の照合
活用シーン
- 01符号付き距離関数の輪郭確認
- 02グラデーションや法線の向きの確認
- 03シェーダー計算と想定形状の比較
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ openharmonyinsight/ openharmony-skills --skill glslviewer-shader-debugインストール後、Claude Code で/glslviewer-shader-debugを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/sdf-contour-template.fragreferences/runtime-effect-to-glsl.mdscripts/render_headless.sh詳細
glslViewer シェーダーデバッグ
このスキルを使うと、シェーダーの数式を再現可能なヘッドレスプレビューに変換できます。
ワークフロー
command -v glslViewer || command -v glslviewerを実行して、glslViewerが利用可能であることを確認します。- 作業用の
.fragファイルを作成します。通常はassets/sdf-contour-template.fragをコピーします。 - 元のシェーダーを標準 GLSL に変換します。
scripts/render_headless.shを使ってシェーダーをレンダリングします。- 生成された PNG を確認し、輪郭やマスクの形状が想定どおりか比較します。
変換ルール
- ランタイムシェーダーや SkSL に似たスニペットについては、
references/runtime-effect-to-glsl.mdを参照します。 - まず数式を同一に保ちます。動作を変える前に、構文を変更してください。
half4やfloat2などの標準外の型を、GLSL に相当する型に置き換えます。main(vec2 fragCoord)を標準的なフラグメントエントリーポイント形式に書き換えます。
void main()
{
vec2 fragCoord = gl_FragCoord.xy;
fragColor = ...;
}
- 生の SDF アルファ値を凝視するのではなく、輪郭またはマスクの可視化を追加することをおすすめします。テンプレートには再利用可能な
previewColor()ヘルパーがすでに含まれています。
レンダリング
次のようにして、1 つ以上のフラグメントシェーダーをレンダリングします。
/root/.codex/skills/glslviewer-shader-debug/scripts/render_headless.sh path/to/a.frag path/to/b.frag
便利なオプション:
--output DIR:出力ディレクトリを指定します--size WIDTHxHEIGHT:レンダリングサイズを指定します。デフォルトは256x256ですGLSLVIEWER_BIN=/full/path/to/glslViewer:特定のバイナリを強制的に使用します
スクリプトは、入力シェーダーごとに PNG を 1 つ書き出します。また、元のエクスポート済みフレームを含むフレームディレクトリも書き出します。
検証のヒント
- 角丸矩形の SDF では、上下の走査線が角の近くで狭くなるはずです。
- グラデーションや法線には、方向の変化がはっきり分かるよう、偽色表示を使うのがおすすめです。
- ヘッドレスプレビューが正しく表示されてもデバイス上の出力が正しくない場合は、純粋な数式よりも、ユニフォームのバインディング、バックエンドでのシェーダー変換、または後続のしきい値処理を疑ってください。
リソース
- レンダラー:
scripts/render_headless.sh - 変換に関するメモ:
references/runtime-effect-to-glsl.md - スターターテンプレート:
assets/sdf-contour-template.frag
コメント
Markdown 対応