# Color, light and sharpening

> Color and tone, CAS sharpening, bloom, lens effects, LUTs, SMAA, CMAA2 and FXAA anti-aliasing, and depth effects for games on macOS.

Web page: https://procrastinine.github.io/maclauncher/graphics/color-and-light/

The color, sharpening, lighting and anti-aliasing effects on this page change how a game looks on your Mac without changing its resolution. Many games look better with slightly stronger color or crisper edges, and some of these effects give a game a different mood altogether. They work on the finished image, so they're available for every game, and most are cheap enough to leave on all the time.

*Image comparison, Original and Colour: Three riders on a country road toward snowy mountains in The Witcher 3.* A road in The Witcher 3: Wild Hunt at its full 1920×1080, with the built-in Colour effect's saturation raised to 1.6. Its default, 1.2, is a gentler boost.

*Image comparison, Original and Colour: A close-up of the riders and wildflowers.* The riders at 1:1, where the saturation boost shows in the saddles, flowers and grass.

## The built-in effects

Five effects are part of MacLauncher itself:

- **Colour** adjusts saturation. Its default of 1.2 is a little above neutral; 1 leaves color unchanged.
- **Sharpen** is classic sharpening. **CAS Sharpen** is AMD's Contrast Adaptive Sharpening, which sharpens soft areas more than areas that are already crisp, and it works well as a finishing pass after an upscaler.
- **Grayscale** removes all color.
- **CRT** simulates a CRT screen and is covered in [CRT and retro](https://procrastinine.github.io/maclauncher/graphics/crt-and-retro.md).

**Combine effects…** runs two to four of these as a single row.

## Other included effects

The other included effects come from widely used [ReShade](https://reshade.me/) and video-processing projects, and from native [Metal](https://developer.apple.com/metal/) ports of graphics research:

**CAS Sharpen**

*Image comparison, Original and CAS Sharpen: The road with CAS Sharpen.* CAS Sharpen at its default strength.

*Image comparison, Original and CAS Sharpen: The road with CAS Sharpen, close-up.* At 1:1, the armor, manes and grass gain crisp edges.

**Soft bloom**

*Image comparison, Original and Soft bloom: The road with soft bloom.* Soft bloom with strength 0.8, threshold 0.55 and radius 8, so the sky and the sunlit path glow.

*Image comparison, Original and Soft bloom: The road with soft bloom, close-up.* The glow spreads from the bright path into the riders' outlines.

**Lens**

*Image comparison, Original and Lens: The road with FidelityFX Lens.* FidelityFX Lens with chromatic aberration raised to 1.5 and grain to 0.3, plus its default vignette.

*Image comparison, Original and Lens: The road with FidelityFX Lens, close-up.* Up close, the color fringes and film grain are easy to see.

**Kuwahara**

*Image comparison, Original and Kuwahara: The road with the anisotropic Kuwahara filter.* Anisotropic Kuwahara at its defaults turns the scene into a painting.

*Image comparison, Original and Kuwahara: The road with the anisotropic Kuwahara filter, close-up.* At 1:1, the brush-stroke smoothing follows the shapes of the horses and armor.

- Color and tone effects include [SweetFX](https://github.com/CeeJayDK/SweetFX) Tonemap, Vibrance and Curves, color balance, [Halide](https://github.com/halide/Halide)'s **Local Laplacian** filter for detail and contrast, and **Histogram exposure**, which sets exposure automatically from the image's own histogram.
- Light and lens effects are soft bloom and AMD [FidelityFX](https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK) **Lens** (grain, chromatic aberration and vignette) and **Blur**.
- Clean-up effects are threshold debanding for smooth gradients, and [SMAA](https://github.com/iryoku/smaa), [CMAA2](https://github.com/GameTechDev/CMAA2) and FXAA anti-aliasing for jagged edges in games that don't smooth them themselves. FXAA, the version of NVIDIA's fast approximate anti-aliasing that comes with SweetFX, is quick and softens fine detail a little more than the other two.
- [Anisotropic Kuwahara](https://github.com/jkyprian/gpuakf) is a painterly filter that smooths the image into brush-stroke-like regions.
- **Daltonize** is an accessibility filter. It simulates a color-vision deficiency and shifts the color differences that would be lost into ones that stay visible, with adjustable strength.

Shader collections add more: [qUINT](https://github.com/martymcmodding/qUINT) for bloom, grading, debanding and sharpening, [prod80](https://github.com/prod80/prod80-ReShade-Repository) for film-style color grading and LUTs, [CShade](https://github.com/papadanku/CShade) for exposure and image-based motion effects, [FXShaders](https://github.com/luluco250/FXShaders) for NeoBloom and ArcaneBloom, [AstrayFX](https://github.com/BlueSkyDefender/AstrayFX) for indirect lighting, ambient occlusion, anti-aliasing and sharpening, and [OtisFX](https://github.com/FransBouma/OtisFX) for cinematic depth of field, fog and grading. [Shader collections and imports](https://procrastinine.github.io/maclauncher/graphics/shaders.md) lists them all.

## LUTs

A LUT (lookup table) is a complete color grade stored in a file, the same kind that photo and video editors use. A `.cube` file dropped onto MacLauncher joins the shader library as an effect, with controls for strength, trilinear or tetrahedral interpolation, and whether the table expects encoded or linear color. Full-size 65-point 3D tables are supported.

## Depth without a depth buffer

Fog that thickens with distance needs to know how far away things are, and most games don't pass that information to MacLauncher. **Estimated depth fog** works without it: [Depth Anything V2](https://github.com/DepthAnything/Depth-Anything-V2), a small neural network, estimates depth from the finished picture, and the fog follows that estimate. It works with any game on Apple Silicon once the model is installed.

*Image comparison, Original and Estimated depth fog: The road with distance fog toward the mountains.* Estimated depth fog on the full 1920×1080 frame, with a pale haze color and dithering off.

## Effects that use the game's depth

Some lighting effects need the game's real depth buffer, and sometimes its camera, surface normals and materials. For games whose runtime provides them, MacLauncher includes:

- [XeGTAO](https://github.com/GameTechDev/XeGTAO) and AMD [CACAO](https://github.com/GPUOpen-LibrariesAndSDKs/FidelityFX-SDK) ambient occlusion, which darkens corners and contact points
- FidelityFX **depth of field**
- depth fog and depth outlines adapted from FXShaders
- [Godot](https://github.com/godotengine/godot)'s screen-space reflections
- from collections, [SSRT3](https://github.com/cdrinmatane/SSRT3) indirect lighting, the [NiceGuy shaders](https://github.com/mj-ehsan/NiceGuy-Shaders)' lighting, reflections and fog, AstrayFX's RadiantGI and GloomAO, and OtisFX's depth of field and fog

When a game doesn't provide those inputs, these effects stay in the menus under **Needs scene inputs**, with a note saying what they need.

## Final output

The **Output** section at the end of the effect chain handles the last step to the screen. **Tone mapping** decides how bright highlights are compressed into the display's range, with the choices Automatic, None, Reinhard and PBR Neutral. HDR and wide-gamut images keep their range through the chain, and effects that handle only standard color get a local conversion.

The graphics guide lists every [included effect](https://procrastinine.github.io/maclauncher/reference/graphics/README.md#included-effects) and describes [tone mapping](https://procrastinine.github.io/maclauncher/reference/graphics/README.md#tone-mapping) in full. The [algorithm reference](https://procrastinine.github.io/maclauncher/reference/graphics/PROVIDERS.md#shader-formats-and-image-effects) describes each native effect's algorithm.

## Further reading

- [Tone mapping](https://en.wikipedia.org/wiki/Tone_mapping), [3D lookup tables](https://en.wikipedia.org/wiki/3D_lookup_table) and the [Kuwahara filter](https://en.wikipedia.org/wiki/Kuwahara_filter) on Wikipedia.
- [Ambient occlusion](https://en.wikipedia.org/wiki/Ambient_occlusion), the darkening of corners and contact points that XeGTAO and CACAO estimate.
- [Color blindness](https://en.wikipedia.org/wiki/Color_blindness), the background to Daltonize.
