Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17825

ACES and Uncharted Inverse Tone Mapping

$
0
0
Before AA, I apply tone mapping and after AA, I apply inverse tone mapping. For the Reinhard operator this is trivial, but what about the Uncharted and ACES operators? float3 ToneMap_ACESFilmic(float3 hdr) { static const float a = 2.51f; static const float b = 0.03f; static const float c = 2.43f; static const float d = 0.59f; static const float e = 0.14f; return (hdr * (a * hdr + b)) / (hdr * (c * hdr + d) + e); } float3 ToneMap_Uncharted(float3 hdr) { static const float a = 0.22f; static const float b = 0.30f; static const float c = 0.10f; static const float d = 0.20f; static const float e = 0.01f; static const float f = 0.30f; return ((hdr * (a * hdr + b * c) + d * e) / (hdr * (a * hdr + b) + d * f)) - e / f; } They claim to be efficient in the number of FLOPs, but the inverse is the opposite and not uniquely defined (you have two choices due to the squares)?

Viewing all articles
Browse latest Browse all 17825

Trending Articles