This explanation is currently available in Japanese.
ひとことで
画面の中のとても明るい部分から、光を周囲へにじませるポストプロセスです。ネオン、電球、太陽、魔法の光、金属のハイライトなどの周りに光があふれ、「本当に光っている」ように見えます。現実でも、カメラのレンズや人の目の中で強い光は散乱してにじむので、それを画面上で再現しています。
ゲームでの使いどころ
- 光る物の表現:ネオンサイン、発光する武器、SF の UI、溶岩、魔法陣。
- 太陽や強い照明:逆光のまぶしさ、窓から差す光、ヘッドライト。
- エフェクトの華やかさ:爆発、ヒット時の閃光、パーティクル。
- 雰囲気作り:夢のシーンや回想で、全体をふんわり光らせる。
しくみ
- 明るい部分を取り出す:描き終えた画面(HDR、1 を超える明るさを保持したもの)から、しきい値より明るい部分だけを残す。境目をなめらかにする「ソフトニー」を使うと、光り始めが自然になる。
- 縮小しながらぼかす:取り出した画像を 1/2、1/4、1/8 … と縮小し、それぞれをぼかす。小さい画像をぼかすと、少ない計算で広い範囲にぼけが広がる。
- 足し合わせる:各段のぼけを重ね合わせ、元の画面に足す。細かい段は光る物の近くの鋭い輝き、粗い段は遠くまで届く柔らかいかさを作る。
HDR で計算することが重要です。明るさを 1 で切り捨ててからしきい値を取ると、白い壁も電球も同じ「1」になり、白い物がすべて光ってしまいます。HDR なら、電球(明るさ 20)と白い壁(明るさ 0.9)を区別でき、本当に強く光る物だけがにじみます。
実装のポイント
- 発光のマテリアル:光らせたい物は、エミッシブ(発光)の強さを 1 より大きくしておきます。ブルームはそれを拾うだけです。
- 縮小のしかた:縮小時に単純に間引くと、小さな明るい点がちらつきます。13 タップのダウンサンプル(Call of Duty の手法)などで平均しながら縮小します。
- トーンマッピングの前に:ブルームは HDR の段階で足し、その後でトーンマッピングとカラーグレーディングをかけます。
つまずきやすい点
- かけすぎ:画面全体がもやもやして、コントラストが失われます。2000 年代のゲームでよく見られた「まぶしすぎる」画面になります。
- しきい値 0 の物理ベースブルーム:最近のエンジンでは、しきい値を使わず全体をわずかににじませる(レンズの性質を模した)方式も使われます。その場合、強さを非常に小さくします。
- ちらつき:画面上で数画素の明るい点(金属の鋭いハイライトなど)は、カメラが動くとブルームがちらつきます。明るさの上限を設けたり、時間方向に平均したりします。
デモで試すこと
- 「表示」を「1. 明るい部分」にすると、しきい値を超えたネオンや看板だけが残ります。「2. ぼかした光」は、それを縮小しながらぼかして重ねたものです。
- 「ブルームなし」と「完成画像」を比べると、ネオンがただの明るい板から光る管に変わるのが分かります。
- 「HDR で計算」をオフにすると、明るさを 1 で切り捨ててからにじませるので、白い柱や球まで光ってしまいます。
- 「広がり」を上げると、粗い段の比重が増え、光が遠くまで届きます。