小ネタです。
トーンマップより前のポストプロセスを編集しているシチュエーションで、一時的にリニアからsRGBにしたい時があります。
その際、下記のようにしているコードをたまに見かけますが、これは誤差が大きく、UE4が使っている変換とも違うため、最終的にリニアに戻して出力しても少しずれた絵が出てしまいます。
pow(color,1/2.2)
※誤差の詳細は参考に張ったリンク先のブログ記事がわかりやすいです
UE4が内部で使っている変換の実装は下記にあります
Engine\Shaders\Private\GammaCorrectionCommon.ush
この中にある、LinearToSrgbBranchlessやLinearToSrgbBranchingを参考にしたり、カスタムノード経由で使用するのがいいでしょう。
注意しなければならないのは、最終的な出力がsRGBとは限らないことです。SDRかHDRかで変換の仕方が変わりますし、SDRでもsRGBかRec709で違います。
これに関して、私は現在の状況をMPCに入力し、マテリアル内でそれを見て分岐するようにしています。
今回はメモがてら小ネタを書いてみましたが、色空間については自分もまだまだ知識不足なので、間違いなどあればご指摘頂けると助かります。
参考
chilliant