-
-
Notifications
You must be signed in to change notification settings - Fork 36.3k
Support AgX tone mapping #27362
Description
Description
I think we should offer AgX as a tone mapper in three.js. It has better fundamentals than others like Reinhardt or ACES1, often provides a more natural appearance, and — importantly — is the new default in Blender 4.0. Supporting AgX would make consistent color across Blender and three.js much easier for users.
Additionally, I feel more comfortable using AgX in wide-gamut workflows (see #26479).
Solution
AgX has been discussed in a few other threads previously:
- Roadmap for supporting wide-gamut color workflows #26479 (comment)
- Pluggable Tone Mapping Operators (their own class that injects GLSL) #26661 (comment)
While I've done some proof-of-concept implementations myself, none are ready for production. Notably, we'd want to replace the LUTs with a piecewise-linear function (or similar), and perhaps to support the "golden" and "punchy" looks.
The Filament implementation is probably a good reference here.
Alternatives
- "Filmic": Previous Blender default. AgX improves on this, and I'm not sure there's any particular reason to go back to Filmic.
- "Commerce": Available in model-viewer, and has starts from somewhat different goals than AgX. I believe AgX is probably the place we should start, but Commerce could be a worthwhile addition later.
Additional context
No response
Footnotes
-
I don't meant to say that users can't or shouldn't use ACES or Reinhardt. If you prefer the appearance of ACES for some specific scene, that's completely fine. I do mean to say that AgX is a better default, and a better starting point from which to begin making artistic choices (like other tone mapping) when creating a new project. ↩