Emissionの明るさとBloomのにじみを分ける
Emissionを強くしても輪郭の外へ光がにじまない場合は、マテリアルの出力、HDRの経路、CameraとVolumeの設定を順に確認します。Emissionは面の明るさ、Bloomは画像内の明るい部分を使うポストエフェクトです。この記事はUnity 2022.3 LTS・URP 14の3D描画を基準にしています。
1. 最小のシーンでマテリアルを確認する
- 調査用シーンにCamera、暗い背景、URP/Litを使ったCubeを置きます。使用中のQualityで選ばれているURP Assetも確認します。
- MaterialのEmissionを有効にし、白や明るい色のEmission Colorを使います。まずEmission Mapを外し、テクスチャの黒い部分によって値が小さくなる条件を除きます。
- HDR対応の色入力でIntensityを上げ、Emissionの有効・無効を切り替えて面の見た目が変わるか確認します。独自Shader Graphの場合は、まずURP/Litで同じ比較をして出力経路を切り分けます。
この段階では光のにじみより、描いているマテリアルとEmission出力が意図どおりかを確認します。背景や照明が非常に明るいシーンでは差が見えにくくなるため、比較条件を単純にします。
2. 1を超える明るさを扱うHDR経路を確認する
有効なURP AssetのHDR設定と、対象CameraのHDR Rendering設定を確認します。RenderTextureへ描画している場合はCameraのHDR項目が表示されない構成もあるため、描画先の形式と途中のコピー経路を調べます。途中で明るさが狭い範囲に丸められると、EmissionのIntensityを上げても強度差をBloomへ渡せない場合があります。
LDRでもThresholdを低くすればBloomの対象になる場合があります。1を超える明るさを区別して扱いたいときにHDR経路を確認します。ここで扱うHDRは描画バッファの範囲で、HDR対応ディスプレイへ出力する設定とは分けて考えてください。
3. CameraとVolumeの適用を確認する
- 対象CameraのPost Processingを有効にします。
- 調査用のGlobal Volumeを作り、ProfileへBloomを追加します。VolumeのWeightを1にし、CameraのVolume MaskにVolumeのLayerが含まれることを確認します。
- Bloomのコンポーネントを有効にし、変更するパラメーターのOverrideチェックを入れます。Intensityを0より大きい値、例えば1で比較します。
- 複数のVolumeがある場合は調査用コピーでいったん整理し、ほかのVolumeから異なる値が混ざっていないか確認します。元のシーンへ戻すときは、Local Volumeの範囲やWeightも確認します。
URPのポストプロセスはVolumeを使う組み込み機能です。URP向けの確認では、別のPost Processing Stack v2を追加する手順に置き換えないでください。
4. ThresholdとIntensityを別々に調整する
Thresholdはどの明るさからBloomの対象にするか、Intensityは効果の強さを決めます。URP 14のThresholdはガンマ空間の明るさとして指定するため、シェーダー内の線形RGBと数値だけで直接比較しないようにします。
調査用にThresholdを一時的に0へ下げ、Bloom全体を有効・無効で比較します。差が出た場合は、適用経路は動いていると考えられるのでThresholdを戻し、Emissionと合わせて必要な領域だけがにじむ値へ調整します。Thresholdを0にした状態は広い範囲へ効果が出るため、調査後に仕上げの値へ戻します。
修正後の確認
- Bloomの有効・無効で、面の明るさと周辺のにじみを見分ける。
- 本来のVolume構成と各Qualityへ戻し、Gameビューと対象Playerで比較する。
- 遠近・解像度・対象端末で、細い発光部分の見た目とGPU時間を確認する。
- 近くの物体を照らしたい用途は、Lightなど照明側の設計も確認する。
確認用の設定値は見た目の切り分けの例です。完成時の強度や性能を保証する値ではありません。対象の解像度・端末・描画経路で調整してください。