Depth MAT 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Depth MAT のデプスバッファ専用書き込み機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – デプスバッファ専用のシャドウ・マスク用マテリアル

Depth MATは、カラーを一切書き込まず、デプス値のみをデプスバッファに書き込む特殊な MATです。シャドウマップ生成・デプスプリパス・オクルージョン判定など、「デプス情報だけを取り出したい」レンダリングパスに使用します。Phong MAT / PBR MAT のようなカラー出力を一切持たないため、後段でカラー描画と組み合わせるパイプラインで使用されます。

主な用途 🎯

  • シャドウマップ生成のための光源視点デプスレンダリング
  • デプスプリパス (Z pre-pass) によるオーバードロー削減と後段シェーダの高速化
  • オクルージョン判定用のデプスバッファ単独取得
  • カスケードシャドウマップ (CSM) 等の複数解像度シャドウパスの個別生成
  • デプスのみマスクとして後段の Render Pass TOP でジオメトリを遮蔽する用途

データフロー 🔄

入力: SOP ジオメトリ + Geometry COMP の Material 指定

ライティング計算を一切スキップしデプス値のみフラグメントシェーダから出力

出力: Render TOP の Depth-Buffer (カラーバッファには書き込まない)

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Deform Page 🦴

Deform .dodeform 🦴

ボーンによるジオメトリ変形をこのマテリアル上で有効化:

  • Deform トグル: dodeform このマテリアル上でスケルトン変形を有効化

Get Bone Data .deformdata 📍

デフォームボーンデータの取得元

項目 内部名 説明
From SOP .fromsop SOP の capture 属性から取得
From MAT .frommat 別の参照元 MAT (capture 属性を持つ SOP 由来) からデフォームデータを継承

Bone Capture 設定 .bonecapture 🦴

Capture 属性とスケルトンルートの指定:

  • SOP with Capture Data: targetsop pCaptPath / pCaptData 属性を持つ SOP のパスを指定
  • pCaptPath Attrib: pcaptpath 使用する pCaptPath 属性名 (Bone Group SOP 通過後は pCaptPath0 / pCaptPath1 等に分割される)
  • pCaptData Attrib: pcaptdata 使用する pCaptData 属性名 (pCaptPath と対になる)
  • Skeleton Root Path: skelrootpath スケルトンのルート COMP のパス
  • MAT: mat Get Bone DataFrom MAT 時に参照する他 MAT または参照元 MAT (capture 属性を持つ SOP 由来) のパス

Common Page 🔧

Blending .blending 🎨

色のブレンディング (透過合成) に関する設定群

項目 内部名 説明
Add .add ソースとデスティネーションを加算
Subtract .subtract ソースからデスティネーションを減算
Reverse Subtract .revsubtract デスティネーションからソースを減算
Minimum .minimum 両者の最小値を採用
Maximum .maximum 両者の最大値を採用
Blending (Transparency) .blending 透過効果のためのカラーブレンディングを有効化するトグル
Separate Alpha Function .separatealphafunc アルファチャンネルのブレンド設定を RGB と独立させる
Blend Constant Color .blendconstant constantcol 系オプション選択時に使用する RGB 定数カラー
Blend Constant Alpha .blendconstanta constanta 系オプション選択時に使用する定数アルファ値
Legacy Alpha Behavior .legacyalphabehavior 旧バージョンのアルファ処理との後方互換を有効化
Post-Mult Color by Alpha .postmultalpha ブレンド演算完了後に RGB を計算後アルファで乗算

Depth Test .depthtest 📏

デプステスト (Z 比較) によるオクルージョン制御。Depth MAT の中核となる設定群

項目 内部名 説明
Less Than .less 新ピクセルのデプスが既存より小さい (手前) なら描画
Less Than or Equal .lessorequal 新ピクセルが既存以下なら描画
Equal .equal デプスが完全一致時のみ描画
Greater Than .greater 新ピクセルが既存より大きい (奥) なら描画
Greater Than or Equal .greaterorequal 新ピクセルが既存以上なら描画
Not Equal .notequal デプスが一致しない場合のみ描画
Always .always デプス比較を行わず常に描画
Depth Test .depthtest デプスバッファとの比較によるオクルージョンを有効化
Write Depth Values .depthwriting デプステストを通過したピクセルのデプス値をデプスバッファに書き込む (Depth MAT では原則オン)

Alpha Test .alphatest 🔍

アルファ値に基づくピクセル単位の破棄判定

項目 内部名 説明
Less Than .less アルファが閾値より小さいピクセルを残す
Less Than or Equal .lessorequal アルファが閾値以下のピクセルを残す
Greater Than .greater アルファが閾値より大きいピクセルを残す
Greater Than or Equal .greaterorequal アルファが閾値以上のピクセルを残す
Discard Pixels Based on Alpha .alphatest ピクセル単位でアルファによる破棄判定を有効化
Alpha Threshold .alphathreshold アルファ比較の閾値。条件外のピクセルは破棄される

Wire Frame .wireframe 🕸️

ジオメトリをワイヤーフレーム表示する設定

項目 内部名 説明
Off .off 通常のソリッド描画 (ワイヤーフレーム無効)
OpenGL Tesselated Wire Frame .tesselated OpenGL が三角形分割した状態でワイヤーを描画
Topology Wire Frame .topology 元のポリゴントポロジ (四角形等) のままワイヤーを描画
Line Width .wirewidth ワイヤーフレームの線の太さ (ピクセル単位)

Cull Face .cullface 🔺

ポリゴンの表裏どちらを描画するか (カリング) の選択。シャドウマップでは Front Faces カリングが定石

項目 内部名 説明
Use Render Setting .userender Render TOP 側の設定に従う
Neither .neither 両面とも描画 (カリングなし)
Back Faces .backfaces 裏面をカリング、表面のみ描画
Front Faces .frontfaces 表面をカリング、裏面のみ描画 (シャドウマップで Peter Panning 対策)
Both Faces .bothfaces 両面をカリング (= 何も描画されない)

Polygon Depth Offset .polygonoffset ↔️

Z-fighting 対策としてポリゴンのデプス値をオフセット。シャドウバイアスとしても利用

項目 内部名 説明
Polygon Depth Offset .polygonoffset ポリゴンのデプス値オフセット機能を有効化
Offset Factor .polygonoffsetfactor デプス勾配に対するオフセットの乗数
Offset Units .polygonoffsetunits デプス単位の固定オフセット量

Color Space .parmcolorspace 🌈

カラーパラメータの色空間 / 基準白色の解釈

項目 内部名 説明
sRGB .srgb SDR sRGB トランスファ関数 (一般的なディスプレイ標準)
sRGB – Linear .srglinear SDR リニアトランスファ
Rec.601 (NTSC) .rec601ntsc SDR NTSC 規格 (旧テレビ放送)
Rec.709 .rec709 SDR ビデオ規格 (HD テレビ)
Rec.2020 .rec2020 HDR 放送規格 (4K/8K UHD)
DCI-P3 .dcip3 HDR シネマ規格 (D65 ホワイトポイント)
DCI-P3 (D60) .dcip3d60 HDR シネマ規格 (D60 ホワイトポイント)
Display-P3 (D65) .displayp3d65 HDR sRGB ガンマ (Apple ディスプレイ等)
ACES2065-1 .aces2065-1 HDR リニアシネマ規格 (アーカイブ用)
ACEScg .acescg HDR リニアシネマ作業用色空間
Passthrough .passthrough 色空間変換を行わずそのまま渡す

実践アイデア 💡

Example 1: シャドウマップ生成 (光源視点のデプスレンダリング) 🌑

Light COMP → Camera (light POV) → Render TOP (MAT Override = Depth MAT) → Depth-Buffer 出力

シャドウマップを自前で組む場合、光源視点でシーンをレンダリングしてデプスバッファだけを取り出す必要があります。Depth MAT は色を一切書かないため、シャドウマップ生成パスの理想的なオーバーライド先になります。

  1. Light COMP の位置を光源として配置する
  2. 光源を Camera COMP として複製し、Light COMP と同じ Transform を参照させる
  3. Render TOP の Material Override に Depth MAT のパスを指定 (シーン全体に強制適用)
  4. Render TOP の Color Output Format を None / Depth Output を 32-bit float にしてデプスのみ出力
  5. 後段のメインレンダラの GLSL シェーダでこのデプスバッファをサンプルしシャドウ判定に使う

Example 2: デプスプリパス (Z pre-pass) によるオーバードロー削減 ⚡

Geometry COMP → Render Pass 1 (Depth MAT) → Render Pass 2 (Phong MAT, depthfunc=Equal)

重いシェーダ (PBR / GLSL) を走らせる前に、軽い Depth MAT でデプスだけ先に描画し、ピクセル単位の重なりを早期に確定させることで、後段で見えないピクセルにフラグメントシェーダを走らせない最適化テクニックです。

  1. 1 パス目: シーン全体に Depth MAT を割り当て、Write Depth Values オンでデプスバッファを構築
  2. 2 パス目: 通常のマテリアル (Phong MAT / PBR MAT) で同じシーンを描画
  3. 2 パス目側のマテリアルで Depth Test FunctionEqual に設定 → 最前面のピクセルだけがフラグメントシェーダを通過
  4. 後段の重いシェーダがオーバードローピクセルでスキップされ、フィルレートを節約

Example 3: デプスマスクとしてのオクルージョン書き込み 🎭

Foreground SOP → Depth MAT (mask geometry) → Render TOP → Background pass のオクルージョン

前景の隠蔽ジオメトリを Depth MAT で「カラーには出ないが奥行きは持つ」プレースホルダーとして描画することで、背景レンダリングを自動的に切り抜く用途。AR / MR のオクルージョン処理でも頻出のパターンです。

  1. 前景に置きたい隠蔽オブジェクトに Depth MAT を割当
  2. Render TOP のカラー出力では Depth MAT を割当たジオメトリは 不可視 として扱われる
  3. ただしデプスバッファには書き込まれるため、後続のジオメトリは Depth Test でカリングされる
  4. 結果として「見えないが遮蔽する」マスクボリュームとして機能

関連オペレータ 🔗

類似機能OP 🔍

  • Constant MAT — ライティング非依存のフラット色描画。デプスは書くがカラーも書く点が違い
  • Phong MAT — Diffuse / Specular / Ambient のライティング計算を行う標準マテリアル
  • PBR MAT — 物理ベースレンダリング (PBR) のメタリック・ラフネス系シェーディング
  • Wireframe MAT — ジオメトリのエッジ (線) のみを描画するマテリアル

組み合わせ推奨OP 🔄

  • Geometry COMP — Depth MAT を割り当てるレンダリング対象 COMP、必須の組み合わせ
  • Render TOP — Depth MAT を割当たジオメトリを描画しデプスバッファを取得
  • Render Pass TOP — デプスプリパスや複数パス描画で Depth MAT を最初のパスに使用
  • Light COMP — 光源視点のシャドウマップ生成で Depth MAT を組み合わせる
  • Camera COMP — 光源位置と同じ Transform を持つカメラを介してシャドウマップを生成
  • GLSL MAT — Depth MAT が出力したデプスバッファをサンプルしてカスタムシャドウ計算

前処理・後処理MAT 🎯


Info情報 📊

MAT は Info CHOP / Info DAT に接続することで、シェーダコンパイル状況やクック情報を取得できます。

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からの累計クック回数
  • cook_time: 直近クックに要した時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 現在の警告数 (シェーダコンパイル警告含む)
  • errors: 現在のエラー数 (シェーダコンパイルエラー含む)

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: Depth MAT を割り当てたら何も見えなくなった
✅ Solution:

  • Depth MAT は意図的にカラーバッファに書き込まない仕様。シーンに割り当てた瞬間その面はカラーレンダリングから消える
  • シャドウマップ生成や Z pre-pass 用途で使うのが正しい。通常レンダリングでカラー表示したい場合は Constant MAT 等に変更
  • 確認手段として Render TOP の Depth Output を 32-bit float にして TOP として可視化すると、デプス情報が書き込まれていることが分かる

❌ Problem: シャドウマップに自己シャドウ (シャドウアクネ) が発生する
✅ Solution:

  • Polygon Depth Offset をオンにし Offset Factor / Offset Units でデプスバイアスを加える
  • Cull FaceFront Faces に切り替えると Peter Panning の代わりに自己シャドウアクネを軽減できる定石
  • Render TOP のデプス精度を 32-bit float に上げることでも軽減 (精度不足が原因のことが多い)

❌ Problem: デプスプリパスで 2 パス目が表示されない / Z-fighting する
✅ Solution:

  • 2 パス目のマテリアルで Depth Test FunctionEqual または Less Than or Equal に設定
  • 1 パス目と 2 パス目のジオメトリ・カメラ・行列が完全一致しているか確認 (1 ピクセルでもずれると Equal 比較が失敗)
  • Render TOP 設定の Anti-Aliasing が 1 パス目と 2 パス目で同じか確認 (MSAA がずれるとデプスが微妙に変わる)

❌ Problem: デプスバッファの値が想定とスケールが違って見える
✅ Solution:

  • OpenGL のデプスは [0, 1] の非線形値。線形デプスが欲しい場合は GLSL シェーダで znear / zfar を使った再射影が必要
  • Camera COMP の Near / Far を狭めるとデプス精度が改善 (Far を不必要に大きくしない)
  • Render TOP の Depth Output Format を 32-bit float に上げて精度を確保

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました