-
Notifications
You must be signed in to change notification settings - Fork 822
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add AgX tone mapping #4615
Add AgX tone mapping #4615
Conversation
Two notes (feel free to integrate or ignore them).
I think this might be unnecessarily generous to ACES Filmic. While various ACES-authored standards are widely used in the film industry for working with imagery, I do not know that the ACES Filmic Tone Mapping is one of them. How it became prevalent in realtime, I'm not sure, but would be curious to learn.
Note that introduction of Looks providing (among other things) contrast choices will be a high priority, and I consider it an essential part of supporting AgX. Not sure if Looks are factored into your evaluation? |
Thanks for the info! I'll try to clean up the language a bit. I don't know anything about Looks - what can they do? A tone mapper is already an arbitrary function, so if AgX encompasses another arbitrary function called a Look, then I'm not sure what AgX specifies. Any info you have would be appreciated. |
@donmccurdy In particular, if you know of any way to construct a "Look" that would make AgX similar to my Commerce tone mapper, that would be very interesting. |
I'll borrow some phrasing from Romain —
I think AgX and Commercial are alike in trying to do less, and that's a good thing. Troy has described the default Look from AgX this way:
In the case of AgX, Looks provide some simple color grading presets. I'm unsure, so far, what the pros/cons of having such presets are, compared to exposing a full color grading API. As for constructing a Look with less desaturation in AgX, I suspect that the "Punchy" or higher contrast looks would move in that direction, but we haven't added them to three.js yet. |
Gotcha, so more of a semantic distinction. Is there a "standard" way to apply contrast, or is that curve another black art like tone mapping? |
There exists, at least, an "easy" way: AgX does this a bit differently, see the approximation in google/filament#7236. Whatever the color grading operation, the decision about when to apply it is important. From Real-time Rendering, 4th Ed:
In other words, I believe it's better if color grading is applied within or before tone mapping, and not tacked on at the end. With AgX, the Look is applied to a log encoding, before encoding to the output color space. I don't understand the practice of tone mapping and color grading design much beyond that, I'm afraid. |
Yeah, that's looking pretty black art 🥲. I wonder if applying the Punchy look would be a good default, or at least if you know your output is sRGB? Looks simple enough. |
Would need criteria to define "a good default", I think. I'm inclined toward using 'base contrast', as Blender does, as the starting point for new projects. But perhaps knowing the default would be replacing ACES Filmic in existing projects could change the situation. And I'm less in touch with the e-commerce discussions. |
* added agx tone mapper * update tone map selector in editor * updated MacbethBalls * use commerce tone mapper in more examples * address feedback
This adds AgX tone mapping as an option, mostly for comparison and because it's now easy. It has some great improvements over ACES, but for e-commerce it's still far too desaturated. I've also added it as an option in our editor, and made Commerce the editor's default, in preparation for it becoming MV's default in our next major release (which won't be this one). I also added an example to make comparison easy. FYI @donmccurdy @mrdoob.