Color grading is like a photo filter for the whole screen. It changes contrast, how colorful things look, and whether the image feels warm or cold. Tone mapping, in the same file, decides how very bright areas get squeezed down to what a screen can show.
It only shows with Vibrant Visuals turned on.
The files
RP/
color_grading/
ruby_color_grading.json
biomes/
ruby_grove.client_biome.jsonThe color grading file
A warm, slightly punchy look for the Ruby Grove:
{
"format_version": "1.21.90",
"minecraft:color_grading_settings": {
"description": {
"identifier": "wiki:ruby_color_grading"
},
"color_grading": {
"midtones": {
"contrast": [1.2, 1.2, 1.2],
"gain": [1.05, 1.0, 1.0],
"gamma": [2.2, 2.2, 2.2],
"offset": [0.0, 0.0, 0.0],
"saturation": [1.15, 1.15, 1.15]
},
"shadows": {
"enabled": true,
"shadowsMax": 0.2,
"saturation": [0.9, 0.9, 0.9],
"gain": [1.0, 0.95, 1.0]
},
"temperature": {
"enabled": true,
"type": "color_temperature",
"temperature": 7200
}
},
"tone_mapping": {
"operator": "generic"
}
}
}The identifier needs a namespace. One settings block per file.
Shadows, midtones and highlights
The picture is split into three brightness ranges, each with its own settings:
shadows: the dark parts.shadowsMax(0.1 to 1) sets how dark a pixel must be to count.midtones: everything in between. Always on.highlights: the bright parts.highlightsMin(1 to 4) sets how bright a pixel must be to count.
shadows and highlights need "enabled": true to do anything.
Each value is a list of three numbers: red, green and blue. Use the same number three times to affect all colors equally, or change one to tint that range. In the example, a gain of [1.05, 1.0, 1.0] pushes midtones a little toward red.
| Field | Range | What it does |
|---|---|---|
contrast | 0 to 4 | The gap between dark and bright. Above 1 is punchier, below 1 is flatter. |
saturation | 0 to 10 | How strong colors are. 0 is black and white, 1 is normal. |
gain | 0 to 10 | Multiplies brightness. A simple way to tint or brighten. |
gamma | 0 to 4 | Brightness curve. Vanilla uses 2.2. |
offset | 0 to 4 | Adds a fixed shift to each channel. Vanilla leaves it at 0. |
Temperature
| Field | What it does |
|---|---|
enabled | Turns the temperature change on. |
temperature | Kelvin, from 1000 to 15000. 6500 is plain daylight and changes nothing. |
type | color_temperature: higher numbers look warmer. white_balance: the other way round, higher numbers look cooler. |
Tone mapping
tone_mapping.operator picks the curve that fits bright light onto the screen:
| Operator | Look |
|---|---|
generic | Mojang's own tuned curve. Keeps colors a bit richer in bright areas. Vanilla uses it. |
aces | The film industry standard look. |
hable | Another film-like curve, first shown by a developer of Uncharted 2. |
reinhard | Simple and cheap. Fine for dim scenes, but washes out bright ones. |
reinhard_luma | Reinhard that keeps more detail in darker areas. |
reinhard_luminance | Reinhard that keeps colors in bright areas from fading. |
Mood ideas
Cold and scary: temperature 5000, midtone saturation 0.8. Dreamy and warm: temperature 7500, contrast 1.0, saturation 1.2. Vanilla uses contrast 1.15 and saturation 1.05.
Using it
In a biome
Use minecraft:color_grading_identifier in a client biome:
"minecraft:color_grading_identifier": {
"color_grading_identifier": "wiki:ruby_color_grading"
}Everywhere
Most vanilla biomes use minecraft:default_color_grading. Make a file with that identifier in your pack to change the look of the whole world. If two packs use the same identifier, the pack higher in the list wins.
Keep it subtle
Big changes look great in one screenshot and tiring after ten minutes. Players also cannot turn your grading off without turning off your pack, so go easy.