"Fork" of Troy Sobotka's AgX https://github.com/sobotka/AgX with implementation in various languages/software.
AgX is a display rendering transform (DRT) with the goal of improving image formation.
It tries to provide a ""neutral look"" via a robust but simple image formation process.
The result can be comparable to the analog film process with noticeable soft highlight rollof, smooth color transitions and pleasing exposure handling.
If you find that there was too much scary-looking words until now, just consider AgX as a "LUT".
Exposure stripes increment (in stops units) tests:
AgXc | ACES | Filmic | TCAM | Native |
---|
The AgX formula used is based on the original Troy's implementation which is not the same as what is currently being implemented in Blender-4+ (which could be considered better).
- assume sRGB working space
- clip everything outside
- apply traditional log2 encoding
- apply "inset" (gamut reshaping)
- apply tonescale (1D curve)
- display EOTF
It is possible the various implementations in this repository are not at the same level of progress. For example the LUT implementation is already using a BT.2020 workspace approach (like the Blender version).
The simplicity of AgX allowed to port it to various languages and software:
- OpenColorIO : compatible with v1 API
- ReShade : for in-game use.
- OBS : to apply on live camera feed.
- Python : numpy-only script and a more advanced library for manipulation.
- nuke: partial implementation for Foundry's Nuke
- luts: LUTs file for preview in various systems
Screenshot from game Stray with AgXc applied via ReShade | Screenshot of the OBS interface while streaming 8Bit VLog from a Panasonic camera. |
Consider each directory in this repository to be its own independent software (referred as "implementation"). Usually each have its own versioning, changelog and documentation.
When any of the implementation has a new version I bump the global version of this repo in the pyproject.toml and make a new GitHub release.
All the files you see in the implementation are the "final product" that may have been generated by a build process that is defined in the .dev/ directory. This directory is only useful if you wish to contribute to this repository or understand how the implementations were created.