
概要 📖 – 輝度の階調を調整
Luma Level TOPは、入力テクスチャの明るさ・コントラスト・ガンマ・入出力レンジ・ポスタリゼーションを 1 つの TOP でまとめて調整する画像レベル補正 TOPです。Source パラメータで補正対象チャンネル (Luminance / Red / Green / Blue / Alpha / RGB Average / RGBA Average) を選び、Pre / Range / Step / Post の 4 ページに分かれたパラメータで段階的に階調を加工します。露出補正・コントラスト調整・ポスタリゼーション・2 値化マスク生成の用途に広く使われます。
主な用途 🎯
- 明るさ・コントラスト・ガンマを 1 つの TOP でまとめて調整 (露出補正・トーンマッピングの基礎)
- 入力レンジ (In Low / In High) と出力レンジ (Out Low / Out High) でレベル補正 (Photoshop のレベル補正に相当)
- Step Size で画像をポスタリゼーション (階調を粗くするアート風加工)
- 特定チャンネル (Red/Green/Blue/Alpha/Luminance) のみ階調調整するソース選択型補正
- Threshold + Step Size で 2 値化マスクを生成しキー抜き・領域抽出の前処理に使用
データフロー 🔄
入力: RGBA テクスチャ
↓
Pre Page (Source / Invert / Black Level / Brightness 1 / Gamma 1 / Contrast)
↓
Range Page (In Low / In High / Out Low / Out High)
↓
Step Page (Step Size / Threshold / Clamp / Soften)
↓
Post Page (Gamma 2 / Opacity / Brightness 2)
↓
出力: 階調調整済テクスチャ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Pre Page 🎚️
Source .source 🎯
Source (補正対象チャンネル) — このパラメータで指定したチャンネルが Pre Page 以降の階調補正の対象になります。出力は InColor * 1/Source * Lookup(Source) で決まり、Lookup は本 TOP のパラメータ設定から構築されるルックアップテーブルです。
| 項目 | 内部名 | 説明 |
|---|---|---|
| Luminance | .luminance |
画像の輝度値 (Luminance) を補正対象に。標準的な明るさ調整 |
| Red | .red |
赤チャンネルのみを補正 |
| Green | .green |
緑チャンネルのみを補正 |
| Blue | .blue |
青チャンネルのみを補正 |
| Alpha | .alpha |
アルファチャンネル (透明度) のみを補正 |
| RGB Average | .rgbaverage |
RGB 3 チャンネルの平均値を補正対象に |
| RGBA Average | .average |
RGBA 4 チャンネルの平均値を補正対象に |
Invert .invert 🔄
色反転トグル:
- Invert: オンにすると入力の色を反転して出力。マスク抜きで前景・背景を入れ替えたい時にも便利
Black Level .blacklevel ⬛
黒つぶれ閾値の設定:
- Black Level: 0〜1 の値で指定。0 (デフォルト) なら黒つぶれなし。0.1 にすると暗部の 10% が黒に潰れる
Brightness 1 .brightness1 🔆
1 段目の明度オフセット:
- Brightness 1: 0 を中心に正負で明度オフセットを加算。正で明るく、負で暗く。Brightness 2 (Post Page) と組み合わせると 2 段階の明度補正が可能
Gamma 1 .gamma1 📈
1 段目のガンマ補正:
- Gamma 1: 1.0 で変化なし。< 1.0 で中間トーンが暗く、> 1.0 で中間トーンが明るくなる。明度と違い RGB 比率に影響
Contrast .contrast 🌗
コントラストゲイン:
- Contrast: 1.0 を中心にゲインを上下。1.0 を超えるとコントラスト強め (メリハリ)、1.0 未満で平坦な階調になる
Range Page 📐
In Low .inlow ⬇️
入力下限 (黒点):
- In Low: 入力の下限値 (デフォルト 0)。これ未満のピクセルは出力時に黒 (Out Low の値) になる
In High .inhigh ⬆️
入力上限 (白点):
- In High: 入力の上限値 (デフォルト 1)。これを超えるピクセルは出力時に白 (Out High の値) になる
Out Low .outlow 🔽
出力下限クランプ:
- Out Low: 出力の下限クランプ値 (デフォルト 0)。0.1 にすると最暗部が黒ではなく濃いグレーになる
Out High .outhigh 🔼
出力上限クランプ:
- Out High: 出力の上限クランプ値 (デフォルト 1)。0.9 にすると最明部が白ではなく薄いグレーになる
Step Page 🪜
Step Size .stepsize 📊
階調バンドのステップ幅:
- Step Size: 階調 1 段の幅 (0〜1)。0 はステップなし (デフォルト)。0.5 なら 2 階調、0.25 なら 4 階調、0.1 なら 10 階調のポスタリゼーション
Threshold .threshold 🎯
ステップ境界のしきい値オフセット:
- Threshold: ステップ境界の位置調整。Step Size = 1 (= 1 階調 = 2 値化) のとき、Threshold で白黒境界の輝度を移動できる
Clamp Low .clamplow 🔒
値のクランプ下限:
- Clamp Low: 画像 (Value) のクランプ下限
Clamp High .clamphigh 🔐
値のクランプ上限:
- Clamp High: 画像 (Value) のクランプ上限
Soften .soften 🌫️
ステップ境界の柔らかさ:
- Soften: 0 で境界が鋭い (デフォルト)、値を上げるとステップ間がグラデーションで補間される
Post Page ✨
Gamma 2 .gamma2 📈
2 段目のガンマ補正 (Step 以降に適用):
- Gamma 2: Step Page 以降に適用される 2 段目のガンマ補正。1.0 で変化なし
Opacity .opacity 💧
不透明度調整:
- Opacity: 1.0 で完全不透明、0.0 で完全透明。Composite TOP で他レイヤと合成する前の最終透明度調整に
Brightness 2 .brightness2 🔆
2 段目の明度オフセット (Step 以降に適用):
- Brightness 2: Step Page 以降に適用される 2 段目の明度オフセット。Pre Page の Brightness 1 と分けて段階的に明度を加算可能
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 Level TOP の場合、複数パスにすると階調補正が累積し意図しないコントラスト過剰になりやすい。基本は 1 のまま
Channel Mask .chanmask 🎨
処理対象のチャンネルマスク (R/G/B/A 個別トグル):
- Channel Mask:
R/G/B/A各チャンネルのオン/オフトグル。オフのチャンネルは TOP の処理を受けず入力値がそのまま通過
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・中間処理向け) |
| 32-bit float (RGBA) | .rgba32float |
32 ビット浮動小数 RGBA (最高精度、メモリ大) |
| 10-bit RGB with 2-bit Alpha | .rgb10a2fixed |
10-10-10-2 ビット固定小数 (バンディング抑制) |
| 16-bit fixed (RGBA) | .rgba16fixed |
16 ビット固定小数 RGBA |
| 11-bit float (RGB) | .rgb11float |
11-11-10 ビット浮動小数 RGB (アルファなし、HDR 軽量) |
| 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: 露出・コントラスト調整 🌅
Movie File In TOP → Luma Level TOP (Brightness 1 + Gamma 1 + Contrast) → Out TOP
撮影素材の暗い映像を Luma Level TOP の Brightness 1 で底上げし、Gamma 1 で中間トーンを持ち上げ、Contrast でメリハリを足す典型的な露出補正フロー。1 つの TOP で 3 段階の補正を完結できるため、Level TOP の代替として手早く絵作りしたい時に便利。
- Movie File In TOP で素材動画/画像を読み込む
- Luma Level TOP を後段に接続し、Pre Page で Source を
Luminanceに設定 (輝度全体を補正対象に) - Brightness 1 を 0.1〜0.2 程度上げて底上げ、Gamma 1 を 1.2〜1.5 で中間トーンを持ち上げる
- Contrast を 1.1〜1.3 で明暗差を強調し、メリハリのある映像にする
- Out TOP で最終出力、もしくは Composite TOP で他レイヤと合成
Example 2: ポスタリゼーション加工 🎨
Movie File In TOP → Luma Level TOP (Step Size + Soften) → Out TOP
Step Size パラメータを使うと画像の階調をバンド状に区切り、イラスト調・アート風のポスタリゼーション加工が 1 ノードで完結する。Soften パラメータで境界の硬さを調整すれば、ハードな漫画風からソフトなアニメ風まで質感を選べる。
- 入力画像を Movie File In TOP または Ramp TOP で用意 (Ramp はパラメータ効果の確認に最適)
- Luma Level TOP を接続し、Step Size を 0.25 (= 4 階調) や 0.1 (= 10 階調) に設定
- Threshold パラメータで境界位置を微調整し、好みの階調分布にする
- Soften を 0 に近づけると境界が鋭いハード加工、値を上げるとグラデーション補間されたソフト加工になる
- Source を
Red/Green/Blueに切り替えると特定チャンネルだけポスタライズも可能
Example 3: 輝度マスクの2値化抽出 🎯
Movie File In TOP → Luma Level TOP (In Low/High + Step Size=1) → Composite TOP
明るい部分だけ抽出した白黒マスクを作りたい時、Luma Level TOP の In Low / In High でしきい値を切り、Step Size を 1.0 にすると 2 値化マスクが得られる。Threshold TOP 単体より柔軟に「どの範囲を残すか」を制御でき、後段で Composite TOP のマスク入力として使える。
- Movie File In TOP で対象画像を読み込む
- Luma Level TOP の Pre Page で Source を
Luminanceに設定 (輝度ベースで抽出) - Range Page の In Low / In High で抽出したい輝度範囲を指定 (例: In Low=0.5, In High=0.7 で中間調のみ)
- Step Page で Step Size を 1.0 にすると、範囲内が白・範囲外が黒の 2 値化マスクになる
- Composite TOP のマスク入力に渡してハイライト合成、または Crop TOP と組み合わせて領域抽出に応用
関連オペレータ 🔗
類似機能OP 🔍
- Level TOP — RGB を独立に補正する汎用レベル補正 TOP (本 TOP は Source 選択型で輝度寄り)
- HSV Adjust TOP — HSV 色空間で色相・彩度・明度を編集 (色相シフトが必要なら HSV Adjust)
- Threshold TOP — 単純な 2 値化専用 TOP (Luma Level の Step Size=1 で同等効果)
- Lookup TOP — 任意のルックアップテーブルで階調変換 (Luma Level の内部処理を自由化したい時)
- Math TOP — ピクセル値に算術演算を適用 (より低レベルな数値変換)
組み合わせ推奨OP 🔄
- Movie File In TOP — 素材動画/画像の読み込み元として上流に配置
- Blur TOP — Luma Level の前段でノイズ除去 / 後段で境界を柔らかくする
- Composite TOP — Luma Level で作った 2 値化マスクをアルファ入力として合成
- Channel Mix TOP — Luma Level の後段で RGB チャンネル間の重み付け再配分
- Tone Map TOP — HDR ソースに対しては Tone Map で先に圧縮してから Luma Level で仕上げ
- Out TOP — 階調調整結果を最終出力として書き出し
前処理・後処理TOP 🎯
- 前処理: Movie File In TOP、Blur TOP、Tone Map TOP、Crop TOP
- 後処理: Composite TOP、Channel Mix TOP、Bloom TOP、Out TOP
Info CHOP情報 📊
Luma Level TOPは Info CHOP による詳細情報取得に対応しています。出力テクスチャの resolution_w / resolution_h / aspectx / aspecty / depth / num_components / gpu_mem_used 等の標準 TOP メタチャンネルを取得します。
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: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 画像が真っ白や真っ黒になってしまう
✅ Solution:
- Pre Page の
Brightness 1/Contrastが極端な値になっていないか確認 (Contrast を 5 以上にすると簡単に白飛び) - Range Page の
In Low/In Highが逆転 (In Low > In High) すると階調反転で真っ黒に近くなる Black Levelを高くしすぎると暗部が全て黒に潰れる。0 〜 0.1 程度から調整
❌ Problem: ポスタリゼーションの境界がギザギザになる
✅ Solution:
- Step Page の
Softenを 0.05〜0.2 程度に上げて境界をブレンド - 上流に Blur TOP を軽く挟んで入力のジャギーを丸める
Pixel Formatを 16-bit float 以上に上げて階調の量子化を抑える
❌ Problem: Source を変えても見た目が変わらない
✅ Solution:
Sourceは補正対象チャンネルの指定であり、選択チャンネルが既に均一値だと変化が見えない (例: グレースケール画像でRed/Green/Blueを切り替えても同一輝度なので差が出にくい)- Source を変更したら同時に
Brightness 1/Gamma 1/Contrastを動かして効果を確認 Channel Mask(Common Page) で対象チャンネルが OFF になっていないか確認
❌ Problem: 輝度の補正がチャンネル間でずれる・カラーシフトが起きる
✅ Solution:
SourceをLuminanceまたはRGBA Averageに設定するとカラーシフトを抑えられる (個別 R/G/B 選択はチャンネル間バランスが崩れやすい)- Pre / Post で 2 段ガンマを使う場合、Gamma 1 と Gamma 2 を同方向にかけすぎると非線形に色味がずれる。1 段ずつ確認しながら調整
- 厳密なカラーグレーディングが目的なら HSV Adjust TOP や Lookup TOP に切替
参考資料 📚
その他 🔗
- TouchDesigner Wiki — Category:TOPs
- TouchDesigner Wiki — Pixel Formats 解説
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

