はじめに
Unity6.3からUIToolkitでカスタムシェーダーが使用可能になったので試してみる
参考
ドキュメント
ディスカッション
UIToolkit向けのShaderGraphを作る
UIToolkit用のShaderGraphを作成する
いつもの場所に「UI Shader Graph」が追加されている

Graph InspectorのMaterialが「UI」、Blending Modeが「Alpha」になっていることが確認できる

作成したてだと、BaseColorしか表示されないので、とりあえずデフォルトの表示を設定する
「Render Type Branch」を使うことで表示できる

Render Type Branchは新しく追加されたノードで、UI表示の各種パラメータを設定できる
(ほとんどの場合これを使うんだから最初から置いておいてほしい
)
基本的にここへの入力をごちゃごちゃすることになりそう
試しにTextureをいじってみる
以下のように、UVや色をシェーダーグラフ上から指定することができる

上記の例のように、Render Type Branchのパラメータへ入力する際には専用のコンポーネントで値を変換できる

作ったShaderGraphを設定する
作ったShaderGraphに対応するマテリアルを作成しておく

UIBuilder上で、VisualElementを配置して、VisualElementのInspectorでImageに適当なSpriteを設定する
その後、Inspectorに新しく追加されたMaterialへ作成したマテリアルを設定する

エディタ上では、Timeによるアニメーションは正確に動かない
上記で挙げた例のように、Timeノードを使っているとガクガク表示されると思う
これは、エディタ上ではUIが毎フレーム更新されるわけではなく、特定のライフサイクルやユーザーの入力によってのみ描画が更新されるためである
なので、エディタ上で使うツールなどにはTimeノードは使わないようにしよう

