2015/05/26

【UE4】マテリアルエディタの値の扱いについての疑問

この件についてまとめがあったのでまず貼っておきます。


http://togetter.com/li/827106






UnrealEngineのマテリアルエディタでの値の扱いについて
昨夜〜今朝盛り上がっていた話題。


公式ドキュメントとかには「UnrealEngineは完全にリニアワークフローに対応しており」等々書いてあったと思うのですが、
本当のところこれってどうなのかしら?という挙動について。


実際試してみるとこのような感じ。



  1. マテリアルエディタ内で作った値。0.5 (=中間のグレイ)にしています。
  2. powerノードにて2.2乗。いわゆるリニアライズ。
  3. Photoshopで用意した0.5グレイとグレイスケールのテクチャ。の、sRGBチェックを外したもの。
  4.  3番の、sRGBチェックを入れたもの
  5. マテリアルエディタ内で作ったグレイスケール。
  6. 5番をリニアライズ

ちなみに、1番が二種あるのは、Scalar ParameterとConstantです。ここではどちらも同じものと見なせます。

サムネイルを重ねてみました。
3番のグレイ色面は1番と、
4番のグレイ色面は3番と同じに見えます。

何が問題か

3番4番で読み込んでいるPhotoshopで書いたテクスチャはsRGBプロファイルです。
そのため、リニアライズされない、非線形空間のデータとなっている3番
「コレジャナイ」絵(ここでは「なにやら明るい」)になっています。
4番 はsRGBチェックを入れることでリニアライズが施され、正しい見た目になっています。

ここで、3番のグレイは、sRGBのガンマが焼き込まれた値 0.729 くらいの明るさになっています(0.5 の 0.454545...乗)。
4番のグレイは、リニアライズされて0.5になっています(0.5 の 0.454545...乗 の2.2乗)。

ここで2枚目の画像なのですが、
なぜ、マテリアルエディタ内で 0.5 と打ち込んだノードのサムネイルが、
同様に 0.5 であるはずの 4番のサムネイルとではなく
3番のサムネイルと一致するのでしょうか?

これはつまり、「0.5って入力したけど、値としては0.729...で計算するよ」ということなんでしょうか?

もしそうだとすると、5番のグラデーションが偏っているのも、
「知覚的にはリニアに見えないけど数値的にはリニア」というケースではなく、
本当に数値的にもバイアスがかかっているのではないかと思えてきます。
(実際、このグラデーションをオパシティにアサインしても、数値的にリニアとは思われない、このグラデーションの見た目同様な感じで透明度が推移します。)



この度の話題の発端は、スミオさんによるツイートから

「探したら世界中で指摘されてる。UE4内の色指定が補正かかって明るくなる問題!」@tempkinder
https://twitter.com/tempkinder/status/602683572051279872


「最新のmasterビルドでも、指定した色に(ガンマ補正と思われる)補正がかかり明るくなる。。つまりこの問題は顕在でして、もうこれはなんというか仕様なのか?? 」@tempkinder
https://twitter.com/tempkinder/status/602686107671625730


この話題、ちょうど先日moko(@moko_03_25)さんからも振られていて、二人で路肩に座って30分ほどあーでもないこーでもないとやっていたのでした。

実は単純な使い方間違え、スパッと単純明快な思想・設計によるものだったりする
(or 問題として認識済みでじき解決する)とよいのですが。
どうなんでしょう。


追記:20150526 1410

スクリーンショットをPhotoshopに読んでピックしてみても、
ちゃんと(??) 0.729 になってますね。やはりConstantであってもガンマ補正がかかっているようです。
2.2乗したあとのは(ちょっと誤差ありますが一応)0.5 。
でした。


■参考

スミオさんのツイートから

Color Picker shows wrong color range in sRGB mode
https://answers.unrealengine.com/questions/172092/color-picker-shows-wrong-color-range-in-srgb-mode.html

Color picker different to color in engine.
https://answers.unrealengine.com/questions/159278/color-picker-different-to-color-in-engine.html

How to set the proper color in Color Picker?
https://answers.unrealengine.com/questions/160870/how-to-set-the-proper-color-in-color-picker.html

Dark colors are displayed brighter and greyer.
https://answers.unrealengine.com/questions/79362/dark-colors-are-displayed-brighter-and-greyer.html

公式ドキュメントにもリニアについて触れた部分があった気がしたのですが、いまざっと検索してみたら見当たらず。アレー。

0 件のコメント:

コメントを投稿