Shader Core向けの非破壊ビルド拡張ツールです。
現在は、アバター内のShader Coreマテリアルをグループ分けし、グループごとにモジュールと指定パラメーターを一括適用するShaderCore Module Overrideを収録しています。
- Unity 2022.3
- Shader Core 0.1.9
- Modular Avatar 1.14.0以上、2.0.0未満
Shader Coreの内部APIをバージョン別Adapter経由で利用しています。0.1.9以外ではビルド処理を停止し、未対応バージョンであることをエラー表示します。
依存パッケージは、それぞれの配布元VPMリポジトリから導入します。
- lilxyzw VPM RepositoryからShader Coreの配布元をVCCへ追加します。
- Modular Avatar公式サイトからModular AvatarをVCCへ追加します。
- FUKA VPM RepositoryをVCCへ追加します。
- 対象プロジェクトの
Manage ProjectからFUKA-ShaderCore-Utilityを追加します。
Shader CoreとModular Avatarは本パッケージへ同梱せず、各配布元のパッケージを利用します。ビルド処理にはModular Avatarとともに導入されるNDMF基盤を使用します。
Runtime/Prefabs/ShaderCoreModuleOverride.prefabをアバター直下へ配置します。- Inspectorの
Add Groupからグループを作成します。 Material Groupsに表示されたマテリアルを、変更したいグループへ割り当てます。Unassignedのマテリアルは変更されません。- 各グループの
Add Moduleから一括適用したいモジュールを追加します。 - 上書きしたいプロパティだけ、左側のチェックを有効にして値を設定します。
- 必要なら
PreviewでScene上の見た目を確認します。設定変更後はUpdate Previewで更新し、Stop Previewで元へ戻せます。 - 通常どおりアバターをビルドします。
プレビューは元のMaterialアセットを変更せず、対象RendererのMaterialスロットだけを一時的に差し替えます。Play Mode移行、Scene保存、スクリプト再コンパイル、アバタービルドの前には自動的に元へ戻ります。
Prefabを使わず、ShaderCore Module Overrideコンポーネントをアバター直下のGameObjectへ手動追加しても利用できます。コンポーネントはアバターにつき1つだけ配置してください。
- 非アクティブを含む全Rendererの現在のMaterialスロットを走査します。
- Shaderアセットが
.scshaderであり、コンポーネント上でグループへ割り当てたMaterialだけを対象にします。 - 元Shaderで選択済みのモジュールを維持し、コンポーネントで選択したモジュールを追加します。
- 追加後のShaderソースをメモリ上で生成し、ビルド専用Shaderを作成します。
- 元Materialを直接変更せず、ビルド用Materialへ置換します。
- チェックを有効にしたプロパティだけを上書きします。
SCConstValueを持つプロパティではローカルキーワードも同期します。- 処理後、設定コンポーネントをビルド対象から取り除きます。
- AnimationClipからのみ参照されるMaterialは走査しません。
- Shader Core標準Inspectorの主要な属性に対応していますが、外部パッケージ独自のPropertyDrawerは再現しません。
- 追加するモジュールが対象Shaderのフェーズやデータ構造と互換である必要があります。
- Shader Core更新後はAdapterの追従が必要になる場合があります。
次のアセットは変更しません。
- Shader Core本体
- 元の
.scshader - 元Material
- 元Shaderのモジュール選択設定
生成したShaderとMaterialはNDMFのビルド用アセットとしてのみ保存されます。
本パッケージはzlib Licenseで提供します。
不具合や要望はGitHub Issuesへお願いします。