explaingit

fcsvorfeed/aces-1.3-reference-gamut-compression-for-unity-6-urp

Analysis updated 2026-06-24

30C#Audience · developerComplexity · 3/5Setup · moderate

TLDR

Unity 6 URP plugin that adds an ACES 1.3 Reference Gamut Compression pass before tonemapping to fix saturated HDR colors going gray or shifting hue.

Mindmap

mindmap
  root((ACES Gamut Compress))
    Inputs
      HDR scene
      URP Volume settings
      Expand and Strength params
    Outputs
      Cleaner HDR buffer
      Stable saturated highlights
      Hue safe ACES output
    Use Cases
      Fix neon color shift in URP
      Tame saturated lasers in HDR
      Ship cleaner ACES output
    Tech Stack
      C#
      Unity 6
      URP
      RenderGraph
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Fix the saturated highlight color shift in Unity URP ACES tonemapping for an indie game

USE CASE 2

Add ACES 1.3 Reference Gamut Compression as a URP Volume override on a single camera

USE CASE 3

Tune Expand Gamut, Strength, and Power to balance saturation and softness in HDR scenes

What is it built with?

C#UnityURPShaderLabHLSL

How does it compare?

fcsvorfeed/aces-1.3-reference-gamut-compression-for-unity-6-urpqooode/nzbdavexkkongry0819/6657upup
Stars302524
LanguageC#C#C#
Setup difficultymoderatemoderateeasy
Complexity3/53/52/5
Audiencedeveloperops devopsgeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires Unity 6000.4.7f1 with URP 17.4.0 on the new RenderGraph path and does not support the built-in pipeline, HDRP, URP Compatibility Mode, GLES, or WebGL.

In plain English

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.

Copy-paste prompts

Prompt 1
Drop ACES-1.3-Reference-Gamut-Compression into a Unity 6 URP project and wire the renderer feature plus URP Volume
Prompt 2
Pick Expand Gamut, Gamut Compress Strength, and Gamut Compress Power values for a neon heavy night scene and explain the trade off
Prompt 3
Port the ACES 1.3 Reference Gamut Compression pass from URP to HDRP and list which APIs change
Prompt 4
Diagnose why ACES Gamut Compress is not running in a URP project that has Compatibility Mode enabled

Frequently asked questions

What is aces-1.3-reference-gamut-compression-for-unity-6-urp?

Unity 6 URP plugin that adds an ACES 1.3 Reference Gamut Compression pass before tonemapping to fix saturated HDR colors going gray or shifting hue.

What language is aces-1.3-reference-gamut-compression-for-unity-6-urp written in?

Mainly C#. The stack also includes C#, Unity, URP.

How hard is aces-1.3-reference-gamut-compression-for-unity-6-urp to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is aces-1.3-reference-gamut-compression-for-unity-6-urp for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.