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

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

GLSL Select POP の追加出力バッファ取得機能を示す図

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

概要 📖 – 拡張出力を取り出す

GLSL Select POPは、GLSL Advanced POP が生成した名前付き追加出力バッファを 1 つ選んで取り出すです。本 POP は接続線を持つ通常入力ではなく pop パラメータで GLSL Advanced POP をパス参照し、その POP の「追加出力 (extra output) 一覧」から name パラメータで指定したものを 1 つ取り出して出力する仕組みです。コンピュートシェーダ内で複数バッファに書き分けた結果を、ノードグラフ側で分配したい場合に使います。

主な用途 🎯

  • GLSL Advanced POP が出力する追加バッファ (extra output) を 1 つ選んで下流に流す
  • コンピュートシェーダで複数のジオメトリを 1 回のディスパッチで生成した結果を、出力名 (Output Name) で枝分かれさせて取得する
  • 同じシェーダ計算結果を「点群バージョン」「線バージョン」など複数バリアントとして 1 シェーダ内で並行作成し、用途別に枝分かれ取得
  • GPU 上でしか参照できない中間バッファ (Attribute Buffer 等) を可視化・後段の Render TOP / Geometry COMP に分配
  • シェーダの追加 output と TouchDesigner ノードグラフを橋渡しするブリッジ役 (パススルー型の軽量 POP)

データフロー 🔄

入力: GLSL Advanced POP へのパス参照 + 取り出したい Output Name

GLSL Select POP が指定名の追加出力バッファをルックアップ

出力: その追加バッファに格納されたジオメトリ (ポイント・プリミティブ・属性一式)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

GLSL Select Page 🎯

POP .pop 🔗

対象 GLSL Advanced POP へのパス参照指定:

  • POP: pop (POP 参照) — 追加出力 (extra output) を取り出す対象の GLSL Advanced POP へのパス。通常の入力ワイヤではなくパラメータでの参照で接続するため、ネットワーク内のどこにある GLSL Advanced POP でも参照可能

Output Name .name 🏷️

取り出す追加出力の名前指定:

  • Output Name: name (出力名) — 参照先 GLSL Advanced POP がコンピュートシェーダ内で書き込んだ「追加出力 (extra output)」の名前。Output Name パラメータに指定した文字列と一致する追加出力のジオメトリを取得して下流に流す

Common Page 🔧

Bypass .bypass 🚫

POP の処理をスキップして入力をパススルーする設定:

  • オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
  • 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用

Free Extra GPU Memory .freeextragpumem 🧠

蓄積した GPU メモリの解放:

  • Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
  • 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約

Delete Input Attributes .delinputattrs 🗑️

出力属性の絞り込みパターン:

  • 属性パターン: 出力に残す属性名のパターン指定 (ワイルドカード可)。指定しない属性は出力から削除される
  • 用途: 下流に流す属性を最小限に絞ってメモリ帯域を削減、属性を別ブランチに分離する設計

実践アイデア 💡

Example 1: 別バッファをレンダリング 🎨

GLSL Advanced POP (extra output "trails" を書出) → GLSL Select POP (name="trails") → Render TOP

GLSL Advanced POP のコンピュートシェーダで、メイン出力とは別に trails という名前の追加出力バッファに軌跡用ジオメトリを書き込み、それを GLSL Select POP で取り出してメインジオメトリとは別経路で描画する基本パターン。1 つのシェーダ計算結果から「実体」と「軌跡」を分配します。

  1. GLSL Advanced POP のコンピュートシェーダで、メイン出力に加えて trails 名の追加出力バッファに過去フレームの位置を書き込むようコードを記述
  2. GLSL Select POP の pop パラメータに対象 GLSL Advanced POP のパスを指定
  3. name パラメータに trails と入力 (シェーダ側の追加出力名と完全一致)
  4. GLSL Select POP の出力を Geometry COMP 経由で別マテリアル設定の Render TOP に接続

Example 2: 可視化用に枝分かれ取得 🔬

GLSL Advanced POP (extra output "debug" を書出) → GLSL Select POP (name="debug") → POP to CHOP → Trail CHOP

デバッグ目的でシェーダ内部の中間値 (速度・密度・衝突カウント等) を debug という名前の追加出力バッファに書き込み、GLSL Select POP で取り出してから POP to CHOP で数値化する流れ。シェーダ内では見えない中間状態をノードグラフ側で観測できます。

  1. GLSL Advanced POP のシェーダ内で、観測したい中間値 (例: velocity_magnitude) を debug 名の追加出力に書込
  2. GLSL Select POP を配置し pop に対象を指定、namedebug を入力
  3. 出力を POP to CHOP で CHOP 化
  4. Trail CHOP / CHOP Execute DAT で時系列観測・しきい値検出を行いログ出力

関連オペレータ 🔗

類似機能OP 🔍

  • Cache Select POP — Cache POP が保持する過去フレームから 1 フレームを選んで取り出すセレクタ
  • Select POP — 他の POP を名前で参照して取り込む汎用セレクタ (パス参照のシンプル版)

組み合わせ推奨OP 🔄

  • GLSL Advanced POP — 本 POP の参照先。追加出力 (extra output) を生み出す側のコンピュートシェーダ POP
  • POP to CHOP — 取り出した追加出力を CHOP に変換してデバッグ・観測
  • Render TOP — 取り出した枝分かれジオメトリを別マテリアルで描画 (Geometry COMP 経由)

前処理・後処理POP 🎯


Info POP情報 📊

GLSL Select POP は Info CHOP 経由で取り出した追加出力バッファの統計情報を取得する。

POP固有情報 ✨

  • num_verts: POP に含まれる頂点 (vertex) 数
  • num_points: POP に含まれるポイント数
  • num_prims: POP に含まれるプリミティブ数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)
  • cook_start_time: 最後のクック開始時刻 (ミリ秒)
  • cook_end_time: 最後のクック終了時刻 (ミリ秒)
  • cooked_this_frame: 現フレームでクックされたか (0 / 1)
  • warnings: 警告数
  • errors: エラー数

POP汎用情報 📡

  • num_points: 選択した追加出力バッファに含まれるポイント数
  • num_prims: 選択した追加出力バッファに含まれるプリミティブ数
  • num_point_attribs: 選択バッファのポイント属性数
  • num_prim_attribs: 選択バッファのプリミティブ属性数
  • gpu_memory_used: この POP が消費している GPU メモリ量 (パススルー型なので参照先と比べ小さい)

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

よくある問題と解決策 🔧

❌ Problem: 出力が空 / プリミティブが 0 個になる
✅ Solution:

  • pop パラメータに指定した GLSL Advanced POP のパスが正しいかネットワーク内で確認
  • name パラメータの文字列と、参照先シェーダで定義した追加出力名 (extra output name) が完全一致しているか確認 (大文字小文字・スペースも区別)
  • 参照先 GLSL Advanced POP 自体がコンピュートシェーダエラーで何も出力していない場合は、まず参照先単体の出力を確認

❌ Problem: 追加出力名が見つからない / 該当する extra output が存在しない
✅ Solution:

  • 参照先 GLSL Advanced POP の Output Attributes ページで、目的の追加出力が宣言されているか確認
  • シェーダコード内で layout 指定や属性書込み命令が正しく追加出力バッファへ書込まれているか確認
  • 追加出力名にタイポがないか、コードと name パラメータの両方を見比べる

❌ Problem: 想定と異なる属性 / 値が出力される
✅ Solution:

  • 参照先シェーダ内で追加出力に書込む値が意図と一致しているか TextPort / Info CHOP で確認
  • Delete Input Attributes パラメータで意図せず必要な属性を削除していないか確認
  • POP to CHOP で取り出し直後の値をスナップショットして数値ベースで検証

❌ Problem: 参照先 GLSL Advanced POP の編集後に出力が更新されない
✅ Solution:

  • 参照先のシェーダが正常にコンパイルされているか Info CHOP の compile_time やエラーメッセージで確認
  • pop パラメータのパスが Cook タイミングのズレで一時的に解決できていない場合があるため、ネットワーク上の依存関係を確認
  • Bypass が誤ってオンになっていないか確認 (オンの場合 POP の処理がスキップされる)

参考資料 📚

その他 🔗

公式リソース 📖

この記事は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をコピーしました