
概要 📖 – 拡張出力を取り出す
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 が指定名の追加出力バッファをルックアップ
↓
出力: その追加バッファに格納されたジオメトリ (ポイント・プリミティブ・属性一式)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 つのシェーダ計算結果から「実体」と「軌跡」を分配します。
- GLSL Advanced POP のコンピュートシェーダで、メイン出力に加えて
trails名の追加出力バッファに過去フレームの位置を書き込むようコードを記述 - GLSL Select POP の
popパラメータに対象 GLSL Advanced POP のパスを指定 nameパラメータにtrailsと入力 (シェーダ側の追加出力名と完全一致)- 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 で数値化する流れ。シェーダ内では見えない中間状態をノードグラフ側で観測できます。
- GLSL Advanced POP のシェーダ内で、観測したい中間値 (例:
velocity_magnitude) をdebug名の追加出力に書込 - GLSL Select POP を配置し
popに対象を指定、nameにdebugを入力 - 出力を POP to CHOP で CHOP 化
- 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 の処理がスキップされる)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — POP 概要
- TouchDesigner Wiki — Category:POPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – GLSL Select POP
- TouchDesigner公式ドキュメント – GLSL Advanced POP (参照元)
- POP 概要 (Points, Vertices and Primitives in POPs)

