
概要 📖 – 輝度マップでブラー量を制御
Luma Blur TOPは、第 2 入力の輝度マップに応じてピクセル単位でブラー量を可変に適用する TOPです。第 1 入力をブラー対象、第 2 入力を制御用の輝度マップとして受け取り、各ピクセルの輝度値から Black Filter Width と White Filter Width を補間してブラー量を決定します。深度マップを使った被写界深度や、マスク領域だけをぼかすフォーカスエフェクトを GPU 上で軽量に実現できます。
主な用途 🎯
- 第 2 入力の輝度マップに応じてピクセル単位でブラー量を可変に適用
- 深度マップを利用した擬似的な被写界深度 (DoF) エフェクトの作成
- マスク TOP を使った特定領域のみのフォーカス・選択ブラー
- Ramp や Noise で生成した制御マップによる方向性のあるソフトフォーカス演出
- Catmull-Rom / Gaussian / Box など 7 種のカーネル選択による画質と処理コストの調整
データフロー 🔄
入力 1: ブラー対象テクスチャ + 入力 2: 輝度制御マップ
↓
ピクセルごとに輝度値 (Black Value 〜 White Value) を 0..1 に正規化
↓
Black Filter Width 〜 White Filter Width をブレンドしてカーネル幅決定
↓
選択フィルタ (Catmull-Rom / Gaussian / Box 等) で畳み込み
↓
出力: 可変ブラー結果テクスチャ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Luma Blur Page 🌫️
Type .type 🧮
ブラーに使用するフィルタカーネルの種類
| 項目 | 内部名 | 説明 |
|---|---|---|
| Catmull-Rom | .catmull |
ガウシアンに近い形状を持つスプライン近似フィルタ。シャープなテクスチャとエッジの精度を両立 |
| Gaussian | .gaussian |
中心ほど重みが大きい正規分布カーネル。シャープさには欠けるがリンギング・エイリアシングを抑制 |
| Box | .box |
矩形内の全ピクセルを均等重み付け。最も軽量だがブロック状の見た目になりやすい |
| Bartlette | .bartlette |
三角形フィルタ。中心からの距離に比例して重みが線形に減少 |
| Sinc | .sinc |
シャープニング効果のあるフィルタ。一部ピクセルが負の重みを持ちリンギング (波打ち) が出ることがあるが、Gaussian より細部を保持 |
| Hanning | .hanning |
コサイン関数によるガウシアンの近似カーネル |
| Blackman | .blackman |
より高次のコサインによるガウシアン近似カーネル。Hanning より裾が抑えられる |
Kernel Width Channel .widthchan 🎚️
第 2 入力のどのチャンネルをブラー幅の制御値として使うか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Luminance | .luminance |
RGB の輝度合成値 (NTSC 重み付け) を制御値として使用 (デフォルト推奨) |
| Red | .red |
第 2 入力の R チャンネルのみを使用 |
| Green | .green |
第 2 入力の G チャンネルのみを使用 |
| Blue | .blue |
第 2 入力の B チャンネルのみを使用 |
| Alpha | .alpha |
第 2 入力の A チャンネルを使用。マスク TOP のアルファをそのまま制御に使う用途に便利 |
| RGB Average | .rgbaverage |
R / G / B の単純平均を制御値として使用 |
| RGBA Average | .average |
R / G / B / A 4 チャンネルの単純平均を制御値として使用 |
Black Value .blackvalue ⚫
Black Filter Width に対応する輝度値の下限基準:
- Black Value:
Black Value(黒基準値) — 第 2 入力の輝度値がこの数値以下のピクセルではBlack Filter Width(黒側のブラー幅) が完全に適用されます。深度マップの近距離側を 0、Black Value を 0 に設定すれば「手前ほど強くぼかす」DoF を簡単に作れます
White Value .whitevalue ⚪
White Filter Width に対応する輝度値の上限基準:
- White Value:
White Value(白基準値) — 第 2 入力の輝度値がこの数値以上のピクセルではWhite Filter Width(白側のブラー幅) が完全に適用されます。Black Value と White Value の間は線形補間でブラー幅が連続的に変化します
Black Filter Width .blackwidth 🌑
第 2 入力が黒のピクセルでのブラー幅 (カーネルサイズ):
- Black Filter Width:
Black Filter Width(黒側ブラー幅) — 第 2 入力の輝度値がBlack Value以下となる領域で適用されるカーネルサイズ (ピクセル単位)。0でブラーなし、大きくするほど強くぼけます。DoF なら近距離側 (黒) のボケ量に相当
White Filter Width .whitewidth 🌕
第 2 入力が白のピクセルでのブラー幅 (カーネルサイズ):
- White Filter Width:
White Filter Width(白側ブラー幅) — 第 2 入力の輝度値がWhite Value以上となる領域で適用されるカーネルサイズ (ピクセル単位)。DoF で遠距離側 (白) を強くぼかしたい場合はこちらを大きく設定します
Extend .extend 🧱
テクスチャ外縁でカーネルがはみ出した時の処理
| 項目 | 内部名 | 説明 |
|---|---|---|
| Hold | .hold |
縁のピクセル値をそのまま外側に延長 (デフォルト、最も自然) |
| Zero | .zero |
画像の外側を 0 (黒) として扱う。縁付近が暗くなる |
| Repeat | .repeat |
画像をタイル状に繰り返し参照。下端のブラーに上端のピクセルが影響 |
| Mirror | .mirror |
画像を鏡像反転して繰り返し参照。タイル境界の不連続を回避 |
Common Page 🔧
Output Resolution .outputresolution 🖼️
出力解像度の決定方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP の解像度をそのまま継承 |
| Eighth | .eighth |
入力解像度の 1/8 |
| Quarter | .quarter |
入力解像度の 1/4 |
| Half | .half |
入力解像度の 1/2 |
| 2X | .2x |
入力解像度の 2 倍 |
| 4X | .4x |
入力解像度の 4 倍 |
| 8X | .8x |
入力解像度の 8 倍 |
| Fit Resolution | .fit |
指定解像度に縦横比を保持して収める |
| Limit Resolution | .limit |
指定解像度を上限としてクランプ |
| Custom Resolution | .custom |
Resolution パラメータで任意指定 |
Resolution .resolution 📐
カスタム解像度の幅・高さ指定 (Output Resolution = Custom 等の時のみ有効):
- Resolution W: 出力幅 (ピクセル単位)。
Output ResolutionがCustom Resolution/Fit Resolution/Limit Resolutionの時に有効 - Resolution H: 出力高 (ピクセル単位)。同上
Resolution Menu .resmenu 📋
よく使う解像度プリセットのドロップダウン:
- Resolution Menu: NTSC / PAL / HDTV 720 / HDTV 1080 / 4K UHD 等のプリセットから選択すると
Resolution W/Resolution Hが自動セットされる
Use Global Res Multiplier .resmult 🔢
プロジェクト全体の解像度倍率の適用:
- Use Global Res Multiplier: Project Settings の Global Resolution Multiplier をこの TOP に適用するかどうか。プロトタイプを低解像度で動かしつつ最終出力で一括フル解像度化する運用に便利
Output Aspect .outputaspect 📏
出力アスペクト比の決定方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP のアスペクトを継承 (伝播事故の元、非推奨) |
| Resolution | .resolution |
解像度から自動導出 (推奨デフォルト) |
| Custom Aspect | .custom |
Aspect1 / Aspect2 で手動指定 |
Aspect .aspect 📐
カスタムアスペクト比の指定 (Output Aspect = Custom Aspect の時のみ有効):
- Aspect1: 横方向アスペクト値 (
Output Aspect= Custom Aspect の時のみ有効) - Aspect2: 縦方向アスペクト値 (同上)
Input Smoothness .inputfiltertype 🎚️
入力テクスチャのサンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Nearest Pixel | .nearest |
最近傍ピクセルサンプリング (ピクセルアート向け、ジャギーが残る) |
| Interpolate Pixels | .linear |
バイリニア補間 (滑らか、デフォルト) |
| Mipmap Pixels | .mipmap |
ミップマップ補間 (縮小時のモアレ抑制、わずかにコスト高) |
Fill Viewer .fillmode 🖥️
ビューア内でのテクスチャの収め方
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP の Fill Viewer 設定を継承 |
| Fill | .fill |
ビューアいっぱいに引き伸ばす (アスペクト無視) |
| Fit Horizontal | .width |
横幅に合わせて収める (上下に余白) |
| Fit Vertical | .height |
縦幅に合わせて収める (左右に余白) |
| Fit Best | .best |
アスペクト保持で内側に収まる最大サイズ |
| Fit Outside | .outside |
アスペクト保持で外側まで覆う最小サイズ (はみ出しあり) |
| Native Resolution | .nativeres |
テクスチャのネイティブ解像度のまま等倍表示 |
Viewer Smoothness .filtertype 🎛️
ビューア表示時のサンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Nearest Pixel | .nearest |
最近傍ピクセルサンプリング (ピクセル単位での確認向け) |
| Interpolate Pixels | .linear |
バイリニア補間 (滑らか、デフォルト) |
| Mipmap Pixels | .mipmap |
ミップマップ補間 (縮小ビュー時のモアレ抑制) |
Passes .npasses 🔁
オペレータの反復実行回数:
- Passes: TOP の処理を何パス繰り返すかの整数値。前回パスの結果が次回パスの入力になる。Luma Blur では Passes を増やすとガウシアンに近づき、より滑らかなブラーが得られます
Channel Mask .chanmask 🎨
処理対象のチャンネルマスク (R/G/B/A 個別トグル):
- Channel Mask:
R/G/B/A各チャンネルのオン/オフトグル。オフのチャンネルは TOP の処理を受けず入力値がそのまま通過。Alpha だけぼかさずマスクを保ちたい時は A をオフにします
Pixel Format .format 🎨
出力テクスチャのピクセルフォーマット (ビット深度・チャンネル構成)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP のフォーマットを継承 |
| 8-bit fixed (RGBA) | .rgba8fixed |
標準 8 ビット固定小数 RGBA (デフォルト、軽量) |
| sRGB 8-bit fixed (RGBA) | .srgba8fixed |
sRGB ガンマ補正済 8 ビット RGBA |
| 16-bit float (RGBA) | .rgba16float |
16 ビット浮動小数 RGBA (HDR・ブラー中間値を 1.0 超で保持できる) |
| 32-bit float (RGBA) | .rgba32float |
32 ビット浮動小数 RGBA (最高精度、メモリ大) |
| 10-bit RGB, 2-bit Alpha, fixed (RGBA) | .rgb10a2fixed |
10-10-10-2 ビット固定小数 (バンディング抑制) |
| 16-bit fixed (RGBA) | .rgba16fixed |
16 ビット固定小数 RGBA |
| 11-bit float (RGB), Positive Values Only | .rgba11float |
11-11-10 ビット浮動小数 RGB (アルファ 1.0 固定、負値不可) |
| 16-bit float (RGB) | .rgb16float |
16 ビット浮動小数 RGB (アルファなし) |
| 32-bit float (RGB) | .rgb32float |
32 ビット浮動小数 RGB (アルファなし) |
| 8-bit fixed (Mono) | .mono8fixed |
8 ビット固定小数モノクロ |
| 16-bit fixed (Mono) | .mono16fixed |
16 ビット固定小数モノクロ |
| 16-bit float (Mono) | .mono16float |
16 ビット浮動小数モノクロ |
| 32-bit float (Mono) | .mono32float |
32 ビット浮動小数モノクロ |
| 8-bit fixed (RG) | .rg8fixed |
8 ビット固定小数 R+G 2 チャンネル |
| 16-bit fixed (RG) | .rg16fixed |
16 ビット固定小数 R+G |
| 16-bit float (RG) | .rg16float |
16 ビット浮動小数 R+G |
| 32-bit float (RG) | .rg32float |
32 ビット浮動小数 R+G |
| 8-bit fixed (A) | .a8fixed |
8 ビット固定小数アルファ単体 |
| 16-bit fixed (A) | .a16fixed |
16 ビット固定小数アルファ単体 |
| 16-bit float (A) | .a16float |
16 ビット浮動小数アルファ単体 |
| 32-bit float (A) | .a32float |
32 ビット浮動小数アルファ単体 |
| 8-bit fixed (Mono+Alpha) | .monoalpha8fixed |
8 ビット固定小数モノクロ+アルファ |
| 16-bit fixed (Mono+Alpha) | .monoalpha16fixed |
16 ビット固定小数モノクロ+アルファ |
| 16-bit float (Mono+Alpha) | .monoalpha16float |
16 ビット浮動小数モノクロ+アルファ |
| 32-bit float (Mono+Alpha) | .monoalpha32float |
32 ビット浮動小数モノクロ+アルファ |
実践アイデア 💡
Example 1: 深度マップで擬似 DoF 🔭
Render TOP (color) + Render TOP (depth pass) → Luma Blur TOP → Out TOP
Render TOP のカラー出力を第 1 入力、Depth Pass 出力 (近距離=0 / 遠距離=1) を第 2 入力に接続し、近距離側 (黒) はシャープ・遠距離側 (白) は強くぼけるシネマティックな被写界深度を作ります。Black Filter Width と White Filter Width の値差でボケ量レンジを調整できます。
- Render TOP 1 つ目をカラーパス用、2 つ目を Depth パス用に作成
- Luma Blur TOP の第 1 入力にカラー Render、第 2 入力に Depth Render を接続
Black Value=0/White Value=1で深度値の正規化レンジを設定Black Filter Width=0(手前はシャープ) /White Filter Width=20(奥はぼかす)TypeをGaussianに変更してリンギングを抑えた自然なボケに整える
Example 2: 放射マスクで部分ぼかし 🎯
Movie File In TOP + Ramp TOP (radial) → Luma Blur TOP → Out TOP
中央を黒・外周を白にした放射状の Ramp TOP を第 2 入力に渡すと、画面中央はシャープ・周辺だけがぼけるヴィネット風のフォーカスエフェクトが作れます。Ramp の中心位置やソフトネスを変えるだけで動的なフォーカス遷移も実現できます。
- Movie File In TOP を第 1 入力に接続
- Ramp TOP を
Radial型で作成、中央 0 / 外周 1 のグラデーションを第 2 入力へ接続 Kernel Width ChannelをLuminanceのまま使用 (Ramp の輝度をそのまま制御値に)Black Filter Width=0/White Filter Width=15で中央シャープ・周辺ブラーを設定ExtendをHoldにしてフレーム端のアーティファクトを抑制
Example 3: 輝度連動ソフトフォーカス ✨
Movie File In TOP → Luma Blur TOP (self-feedback control) → Composite TOP → Out TOP
第 2 入力にも同じ素材を渡し、自身の輝度マップでブラー量を変える「ハイライトだけソフトに発光させる」エフェクトです。RGBA Average を使えば輝度成分を均等に評価でき、Channel Mask で Alpha を切ればマスクを保ったまま RGB のみ柔らかくぼかせます。
- Movie File In TOP の出力を Luma Blur の第 1 入力 + 第 2 入力 (両方) に接続
Kernel Width ChannelをRGBA Averageに設定Black Filter Width=0/White Filter Width=12でハイライト部分のみブラー- Common Page の
Channel MaskでAをオフにしてアルファマスクを保護 - 後段の Composite TOP で元素材と
Add合成してブルーム風の柔らかい発光に仕上げる
関連オペレータ 🔗
類似機能OP 🔍
- Blur TOP — 画面全体に均一なブラーをかける標準ブラーノード
- Convolve TOP — 係数 DAT で任意カーネルを定義できる汎用畳み込み (固定カーネル)
- Slope TOP — ピクセルごとの勾配 (gradient) を計算する関連フィルタ
- Edge TOP — エッジ検出特化ノード。Luma Blur と逆方向の鮮鋭化用途
組み合わせ推奨OP 🔄
- Render TOP — Depth Pass 出力を第 2 入力に渡して DoF の制御マップとして使用
- Ramp TOP — 放射 / 線形グラデーションをマスクとして第 2 入力に渡す
- Movie File In TOP — ブラー対象の動画 / 静止画ソース
- Composite TOP — 原画とブラー結果をブレンドしてブルーム / ソフトフォーカス合成
- Noise TOP — ノイズマップを第 2 入力に渡して不規則なブラー強度パターンを作る
前処理・後処理TOP 🎯
- 前処理 TOP: Movie File In TOP、Render TOP、Ramp TOP
- 後処理 TOP: Composite TOP、Tone Map TOP、Level TOP
Info CHOP情報 📊
Luma Blur TOP は Info CHOP による詳細情報取得に対応しています。
TOP固有情報 🖼️
resx: TOP の出力解像度 X (ピクセル単位)resy: TOP の出力解像度 Y (ピクセル単位)aspectx: アスペクト比 Xaspecty: アスペクト比 Ydepth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
代表的な取得チャンネル 📡
resolution_x / resolution_y: 出力テクスチャの幅・高さ (ピクセル)aspectx / aspecty: 出力テクスチャのアスペクト比 (横 / 縦)depth: ピクセルフォーマットのビット深度 (8 / 10 / 16 / 32)num_components: 出力チャンネル数 (1=Mono / 2=Mono+Alpha or RG / 3=RGB / 4=RGBA)gpu_mem_used: GPU メモリ使用量 (バイト)。Filter Width や Passes 増加時のコスト把握に有用
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 第 2 入力を繋いだのに全ピクセル同じブラー量にしかならない
✅ Solution:
Black ValueとWhite Valueの差が小さい (両方とも 0 や 1 等) と制御マップの輝度差が消えるので、Black Value=0/White Value=1に戻して制御レンジを広げるKernel Width ChannelがAlpha等に設定されていて第 2 入力に該当チャンネルが無い場合、制御値が一定になる →Luminanceに戻すBlack Filter WidthとWhite Filter Widthを異なる値 (例: 0 と 20) に設定して可変ブラーが効くか確認
❌ Problem: ブラーが想定より弱い / 強すぎる
✅ Solution:
White Filter Widthを増やすと白側のブラーが強くなる、Black Filter Widthを上げると黒側にもブラーが効くBlack Value/White Valueのレンジを狭めるとコントラストが上がり、制御マップのわずかな輝度差で強いブラー変化が起きる- Common Page の
Passesを増やすとガウシアンに近づき同じカーネル幅でもより強い (滑らかな) ブラーになる
❌ Problem: テクスチャ端でハロー (光のにじみ) や暗い縁が出る
✅ Solution:
ExtendをHoldまたはMirrorに変えて画像外側の参照値を補正する (デフォルトHoldが最も自然)ExtendがZeroのままだと縁が黒側にぼけて暗い縁が発生するため、Hold / Mirror に切替- ブラー前に上下左右へパディング (拡張) し、ブラー後に Crop TOP で元サイズに切り戻す
❌ Problem: アルファチャンネルがぼけてマスク (透過) が崩れる
✅ Solution:
- Common Page の
Channel MaskでAをオフにし、RGB のみブラーする - アルファマスクを保ちたい時は前段で Reorder TOP で RGB と A を分離し、Luma Blur 後に再合成する
Kernel Width ChannelをAlpha以外 (Luminance 等) にして、アルファを制御値として消費しない構成にする
❌ Problem: 大きな Filter Width や高解像度で GPU が重い
✅ Solution:
- Common Page の
Output ResolutionをHalf/Quarterに下げてブラー後に再アップサンプリングする White Filter Width/Black Filter Widthの最大値を抑え、Passesを増やして同等の柔らかさを得る (大きな単発カーネルより複数 Passes の方が軽い場合あり)- Pixel Format を
16-bit float (RGBA)程度に抑え、不要に32-bit floatを選ばない
参考資料 📚
その他 🔗
- TouchDesigner Wiki — Category:TOPs
- TouchDesigner Wiki — Pixel Formats 解説
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

