【Unity】Standard Assets の Flare (レンズフレア) は Gamma 用だった? 
2022/10/30 Sun [edit]
たぶん Unity2018.3 頃からだと思うけど、デフォルトのシーンに FlareLayer がアタッチされなくなったんだよね。Standard Assets も既にレガシーとなっているので、今更とは思うのだが、ググっても LensFlare 系のフリーアセットってあまり出てこないので、改めて Standard Assets を試してみた。
しかしう~ん…。なぜか私の記憶している感じと違う…。Unity5 の頃は Standard Assets は当たり前のように使ってたので、こんな感じの LensFlare じゃなかったような…。もっと綺麗に輝いていた気がするぞ…?
どうにもしっくり来ないので、古い Unity5 のプロジェクトを開いてみた。そして同じように Standard Assets の LensFlare を使ってみると見た目が全然違う!
比較してすぐに気づいたのは「Color Space の違い」なんだよね。Unity5 の頃は Gamma Color Space が普通に使われていたため、アセットも Gamma 用が普通だった。しかし Unity2018 以降は Linear Color Spane も Experiment(試験実装)的 ではなく、正式に採用されるようになっていったため、アセットも Linear 用(もしくは両対応)になっていった。以下の資料を見ても分かる通り、特に加算・合成といった処理では Color Space の違いがよく出るので、Standard Assets の LensFlare は Gamma 用だったと仮定すると説明がつく。
(参考) 分かる!リニアワークフローのコンポジット - 「加算が変わる」 参照
ならばテクスチャの「Import Settings の sRGB を外せば、リニアでも使える」みたいなことを VRMLiveViewer での Color Space 移行(v2.x→3.0α時代) で学んでいたので、試してみた。う~ん、それでも太陽以外はぼやけて見えない感じだな…。
そう言えば Flare asset 自体をあまり覗いたことなかったな~、と思って設定を見てみると Color プロパティがある。これも以前「ガンマ(Gamma, sRGB) - リニア(Linear) 値の相互変換」として記事を書いていたように既に学んでいたことなので、Linear 上で Gamma っぽい色にする:つまり Linear → Gamma の Color 変換 を試してみた。そしたら、Color Space の違いから色味が異なるのは仕方ないにしても、それなりに近い感じになった!
・Linear → Gamma の Color 変換

※全ての Element の Color プロパティを同様に Gamma 変換する
●Unity2020.3上(Linear Color Space)での Flare アセットの Color 設定を Linear → Gamma 変換してみる

最初の Unity5 の Gamma Color Space と比較してみると、やはり色の加算・合成的な部分で色味が異なるが(Gamma は色を重ねると輝きが強くなり、Linear は白っぽくなる傾向がある)、なるほど、Standard Assets の LensFlare は Gamma 用だったと言って間違いないようだ。
まとめると、
・テクスチャの Import Settings の sRGB のチェックを外す
・Flare asset の各 Element の Color プロパティを Gamma 変換する
で、それなりに近い感じにできる(※カラースペースによる差異はどうしてもあるが)
(関連記事)
【Unity】ガンマ(Gamma, sRGB) - リニア(Linear) 値の相互変換
【Unity】色形式:Unity の Color と Android の ARGB(int32) の相互変換をする
【Unity】Quality (グラフィック品質) を文字列で取得/設定する
【Unity】画面解像度とアクペクト比(整数)を求める
【HTML】HTMLカラー名・カラーコード表
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/420-29818664
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |