2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UE4でのリニア→sRGB変換

Last updated at Posted at 2019-12-15

小ネタです。

トーンマップより前のポストプロセスを編集しているシチュエーションで、一時的にリニアからsRGBにしたい時があります。

その際、下記のようにしているコードをたまに見かけますが、これは誤差が大きく、UE4が使っている変換とも違うため、最終的にリニアに戻して出力しても少しずれた絵が出てしまいます。

pow(color,1/2.2)

※誤差の詳細は参考に張ったリンク先のブログ記事がわかりやすいです

UE4が内部で使っている変換の実装は下記にあります
Engine\Shaders\Private\GammaCorrectionCommon.ush

この中にある、LinearToSrgbBranchlessやLinearToSrgbBranchingを参考にしたり、カスタムノード経由で使用するのがいいでしょう。

注意しなければならないのは、最終的な出力がsRGBとは限らないことです。SDRかHDRかで変換の仕方が変わりますし、SDRでもsRGBかRec709で違います。
これに関して、私は現在の状況をMPCに入力し、マテリアル内でそれを見て分岐するようにしています。

今回はメモがてら小ネタを書いてみましたが、色空間については自分もまだまだ知識不足なので、間違いなどあればご指摘頂けると助かります。

参考
chilliant

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?