Skip to content

Latest commit

 

History

History
70 lines (48 loc) · 3.52 KB

README.md

File metadata and controls

70 lines (48 loc) · 3.52 KB

"Fork" of Troy Sobotka's AgX https://github.com/sobotka/AgX with implementation in various languages/software.

AgXc comparison with ACES and filmic using a cg render

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".

AgXc exposure stripe test

Exposure stripes increment (in stops units) tests:

AgXc ACES Filmic TCAM Native

Background

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).

Content

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
ReShade: Stray screenshot with AgX OBS interface screenshot with webcam feed
Screenshot from game Stray with AgXc applied via ReShade Screenshot of the OBS interface while streaming 8Bit VLog from a Panasonic camera.

Browsing

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.