Mixtureとは
ノードベースでいい感じにテクスチャを生成できるツール。
オープンソース、MITライセンス
ShaderGraph風味のUI、Unityで動作する。
導入
記事が古くなっている可能性があるためGithubのInstallation項目を見たほうが確実
実行環境
Unity2020.3.8f1 (執筆時点ではUnity 2020.2beta以上が必要)
インストール
1.Unityプロジェクトを作成
2.Edit->Project Settings->Package Manager で以下を入力
Name: Open UPM
URL: https://package.openupm.com
Scope(s): com.alelievr
3.同じ場所のAdvanced Settings項目のEnable Preview Packagesにチェックをいれる。
4.Window->PackageManagerで PackageManagerウィンドウを開き、左上のドロップダウンを”Packages:My Registries”にするとMixture項目があるのでインストールする。
使ってみる
Projectタブ内で右クリックしていい感じにStaticMixtureGraphを作ります
作成したStaticMixtureGraphをダブルクリックするとノードエディタウィンドウが開くので右クリックとかでいい感じにテクスチャを作ってSaveAllを押しましょう。これでTexture2Dとして扱われるテクスチャが作成されました。
作ったテクスチャを出力する。
StaticMixtureGraphはasset形式で保存されており、外部へ持ち出すことができません。StaticMixtureGraphはTexture2Dとして扱われるので画像を出力するスクリプトを書いてもいいのですが、面倒くさいので書かない方法で出力します。
ダブルクリックでRealtimeMixtureGraphエディタ内にはいり、OutputTextureAssetノード以外のノードを削除し、以前に作成したStaticMixtureGraphのノードをコピペしてウィンドウを閉じます
インスペクタからRealtimeMixtureGraphを選択して右上のメニューからエクスポートを選択するとexr形式でテクスチャをエクスポートできます。
余談
・何故RealtimeMixtureGraphならExportできるのか
StaticMixtureGraphはTexture2D扱いでRealtimeMixtureGraphはCustomRenderTexture扱い。CustomRenderTextureにはExport機能があるから
・全部RealtimeMixtureGraphで作ればいいんじゃね?
RealtimeMixtureGraphは常に実行されていてRealtimeMixtureGraphを大量に作ってみたらGPUがゴリゴリ使われて重くなったからノード情報をStaticMixtureGraphで持っています。私のよわよわPCだとかなり重かったけどつよつよPC環境なら全部RealtimeMixtureGraphでもいいかもしれないですね。
おわりに
Mixtureを使っているとエラーとか警告とかが結構出てくるので実際のプロジェクトに導入しにくいのですが、テクスチャ生成だけを担当するプロジェクトにわけるといい感じに使えるんじゃないかなぁと思いました。
自作のシェーダーノードとか作れるみたいなので色々応用が利きそう。