This repo is a small Unity URP plugin written in C# that fixes a long-standing color problem in Unity's built-in ACES tonemapping. The author says Unity's default ACES has had a serious color shift bug for at least five years, built this pass for his own indie game Angel Zero, and put it on GitHub for other Unity developers in the same situation. In plain terms: in a game engine, an HDR scene with very bright, saturated colors like red neon, blue lasers, or purple highlights has to be squeezed down to what a normal monitor can show. Unity does this step with ACES. The default behaviour leaves heavily saturated highlights going gray, clipping, or shifting hue. This plugin adds a step before that, where it widens the color gamut into ACEScg space, applies the official ACES 1.3 Reference Gamut Compression, and converts back. The result is that Unity's existing ACES tonemapper receives cleaner HDR input. The plugin is narrow in scope on compatibility. It only supports URP, not the built-in pipeline and not HDRP. It is tested against Unity 6000.4.7f1 with URP 17.4.0 and the new RenderGraph render path. URP Compatibility Mode, GLES, and WebGL are unsupported or untested. The pass injects at BeforeRenderingPostProcessing, so it runs before URP Bloom and before Unity's post-processing stack. Setup is short. Copy the folder into your project under Assets/Plugins/AcesGamutCompress, add AcesGamutCompressRendererFeature to your URP Renderer Data, enable post-processing on the camera, drop ACES Gamut Compress into a URP Volume, and in the same volume set Tonemapping to ACES. Four parameters are exposed: Enabled, Expand Gamut for the wide-gamut pre-expansion amount, Gamut Compress Strength to blend toward the reference result, and Gamut Compress Power to soften the curve. The README is honest about limits. It does not address the ACES path-to-white at very high brightness, the ACES blue-to-purple highlight issue at the tonemapper level, wrong project color space, exposure or lighting mistakes, or ordering bugs from third-party renderer features, and it does not try to be an Unreal-style tonemapper replacement. The math is based on the public ACES reference implementation, and the author asks for a Steam wishlist on Angel Zero if you find the plugin useful.
Generated 2026-05-21 · Model: sonnet-4-6 · Verify against the repo before relying on details.