LoginSignup
2
2

【Unity】Bloomでパーティクルを光らせるためにHDRカラーを使おう

Last updated at Posted at 2023-11-30

こんにちはっ🌟八ツ橋まろんです

UnityのBloom(ブルーム)とHDRカラーの話です。

Unityで「光らせる処理、発光処理」といえば、ポストプロセスのBloom機能を使いますね。Bloomは「画面中の明るいピクセルをぼかす画面エフェクト」です。

エミッションを設定したマテリアルは、Bloomが無い場合はただの白っぽい色で、Bloomを使うと明るく発光した見た目になります。↓↓↓↓
image.png

発光表現には『Bloom(ブルーム)』が必要です

さて掲題ですが、以下のような、パーティクル付きのシーンにBloomを適用すると、パーティクルよりも肌の方が光ってしまいます。

image.png

Bloomは明るいピクセルを光らせるので、キャラクターの肌とパーティクルの青では、キャラクターの肌の方が明るいという判定でパーティクルより光ってしまうのですね。↓↓↓↓

こういうとき、『HDRカラー』 を使えば発光する青を表現できます。

通常のカラーはRGBが0-255の256段階で表します。

256は2の8乗です。8bit(=1byte)の2進数が0-255の256段階を表せます。

2進数は8bit(1byte)で0-255までを表せる
00000000 = 0
00000001 = 1
00000010 = 2
00000011 = 3
・
・
・
11111111 = 255

通常のカラーはRGBの情報を8bitずつ持っているのですね。

HDRカラーというのはRGBを8bitではなく10bitずつ持っています。画面に出力する色の上限は255ですが、Bloomの計算において255以上の数値で計算を行えるため、『明るい青をぼかす』ことができます。

HDRカラーを使うことで、通常より明るい色を表現できます。

Unityでは、HDRカラーはRGBの255に明るさのIntensityというパラメータを加えたものになっています。

残念ながらパーティクルにはHDRカラーを指定できる項目がありません。
Start ColorもColor Over Lifetimeも通常のカラーしか指定できません。
image.png

その代わり、パーティクル用のマテリアルのカラーがHDRカラーに対応しているので、ここを白にして、その明るさ(Intensity)を上げ、今回の場合はColor Over Lifetimeで青色を指定します。
image.png

パーティクルにHDRカラー使う項目がないので、マテリアル側でHDRカラーを指定します

ということで、HDRカラーを使うことでパーティクルがBloomで明るく光りました。↓↓↓↓
(肌が光らないようにBloomの閾値を上げています)
image.png

是非試してみてくださいっ!

それではっ🌟

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2