Skip to content

Repository files navigation

ShaderCore Utility

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リポジトリから導入します。

  1. lilxyzw VPM RepositoryからShader Coreの配布元をVCCへ追加します。
  2. Modular Avatar公式サイトからModular AvatarをVCCへ追加します。
  3. FUKA VPM RepositoryをVCCへ追加します。
  4. 対象プロジェクトのManage ProjectからFUKA-ShaderCore-Utilityを追加します。

Shader CoreとModular Avatarは本パッケージへ同梱せず、各配布元のパッケージを利用します。ビルド処理にはModular Avatarとともに導入されるNDMF基盤を使用します。

使い方

  1. Runtime/Prefabs/ShaderCoreModuleOverride.prefabをアバター直下へ配置します。
  2. InspectorのAdd Groupからグループを作成します。
  3. Material Groupsに表示されたマテリアルを、変更したいグループへ割り当てます。Unassignedのマテリアルは変更されません。
  4. 各グループのAdd Moduleから一括適用したいモジュールを追加します。
  5. 上書きしたいプロパティだけ、左側のチェックを有効にして値を設定します。
  6. 必要ならPreviewでScene上の見た目を確認します。設定変更後はUpdate Previewで更新し、Stop Previewで元へ戻せます。
  7. 通常どおりアバターをビルドします。

プレビューは元の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へお願いします。

About

ShaderCoreをより便利に使うために非破壊ツール集

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages