概要:シェーダーパックとは

MMDX12 のシェーダーパックの仕組み、対応レンダラー、動作範囲、フォルダ構成について解説します。

シェーダーパックの紹介

MMDX12 のシェーダーパックは、キャラクターの材質シェーディングをモデルごとに差し替えられる仕組みです。アプリ本体のレンダラーを変更することなく、シンプルなファイル構成で自分好みのセルルックや独自のアニメ調表現を実現できます。

シェーダーパックは以下のファイルで構成されるフォルダです:

  • pack.json: パックのメタデータ、材質分類ルール、調整可能なパラメータを定義するマニフェスト。
  • surface.hlsl: 単一のシェーディング関数(PackShade)を実装した HLSL コード。
  • preview.png または preview.jpg(任意):シェーダーマネージャーやオンラインギャラリーで表示されるプレビュー画像(16:9 推奨)。
  • README.md、LICENSE(任意):解説文とライセンス条項。

対応レンダラーと適用範囲

シェーダーパックは、リアルタイム再生や動画レンダリングのワークフローに自然に組み込まれています。

適用される環境

  • ラスタライザー経路: 通常の再生モード、Studio ビューポート、「래스터(ラスタ)」動画レンダラー。
  • リアルタイム RT 経路: レイトレーシングを有効にしたビューポート、「실시간 RT(リアルタイムRT)」動画レンダラー。
  • パストレーシングとオフライン GI (MMDX12 1.5.0 以降): 任意ファイル pt_surface.hlsl を同梱したパックは、パストレーサーとオフライン GI レンダラー(静止画・動画)にも適用されます。PT / GI パックを参照してください。このファイルがないパックは、これらの経路では標準シェーディングを使います。

標準シェーディングが維持される環境

  • pt_surface.hlsl のないパックのパストレーシング・オフライン GI: MMD 標準のシェーディングが使われます。オフライン GI レンダラーは常にアプリ標準の輪郭線を描きます。
  • ステージ(Stage)とアクセサリ(Prop): 背景ステージや小物はキャラクター用パックの影響を受けず、常に標準シェーディングで描画されます。
  • 特殊ビュー: Studio の Unlit、Wireframe、平行投影4画面ビュー。

エンジンが保証する機能

シェーダーパックが差し替えるのはキャラクター材質のピクセルシェーディングのみです。以下の処理は引き続きエンジン側で処理されるため、パック適用時もそのまま正常に機能します:

  • 頂点スキニングおよびボーン変形
  • MMD 特有のエッジ輪郭線(アウトライン)
  • カスケードシャドウマップおよびレイトレーシング影の計算
  • ポストエフェクト全般(ブルーム、被写界深度 DoF、TAA、アップスケーラーなど)

パックの配置場所

MMDX12 の実行ファイルがあるフォルダを基準に、2 つの場所に保管されます:

  1. 標準搭載パック: <MMDX12 フォルダ>/shaders/packs/<id>/
    • アプリケーションに付属しており、アプリ内からは削除できません(例:hoyo_toon)。
  2. インストール済みパック: <MMDX12 フォルダ>/shader_packs/<id>/
    • オンラインギャラリーから取得したパック、zip から導入したパック、自作したパックが配置されます。オンラインインストールには .mmdx_install.json が含まれます。

パック ID の規則

  • 半角英小文字 a-z、数字 0-9、アンダースコア _、ハイフン - のみ使用可能で、最大 64 文字までです。
  • 標準搭載パックの ID をユーザーパックで上書きすることはできません。
  • 重複した ID が存在する場合、後から見つかったパックは「重複(Duplicate)」と表示され、選択できなくなります。

次のステップ