ColorCorrection
A frame desaturates briefly to signal grief. The whole image warms to amber for a sunset moment. A flashbang spike pushes Brightness sharply up, then it falls back through black before recovering. A dream sequence drifts through colours that aren’t real.
ColorCorrection is for those whole-frame mood shifts. It animates four properties of Roblox’s ColorCorrectionEffect over each emission’s lifetime: Brightness, Contrast, Saturation, and a TintColor graph. The four work together to push the image toward whatever palette and intensity the moment calls for.
What it transforms
Section titled “What it transforms”A Roblox ColorCorrectionEffect instance, typically parented to Lighting.
Like the other post-process types, it doesn’t move and doesn’t have a position. It applies to the whole rendered camera image, every frame.
The four knobs and what they do
Section titled “The four knobs and what they do”ColorCorrection is more expressive than Blur or Bloom because it composes four independent visual axes. Used in combination, you can turn a daylight scene into anything from a horror film to a music video.
- Brightness shifts the overall image lighter or darker.
- Contrast stretches or compresses the gap between dark and bright pixels.
- Saturation intensifies or drains colour. Push it to its lowest and the image is grayscale.
- TintColor multiplies a colour over the entire frame. A red tint for danger, a blue tint for cold, a sepia tint for memory.
The first three are signed — they take negative and positive values. This is unusual in the plugin (most graphs are clamped at zero or above). A Brightness graph that dips to -0.5 actually darkens the image; a Saturation of -1 removes all colour.
Properties at a glance
Section titled “Properties at a glance”The full surface area, grouped by panel section.
Spawning
Section titled “Spawning”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Mode | EmissionMode | enum | Emit | Emit (per-emission clones) or Animate (singleton clone, looping) |
| Loop | AnimateLoop | boolean | false | Whether Animate mode loops the cycle |
| Enabled | Enabled (attribute) | boolean | false | Master on/off |
| Rate | Rate | number | 10 | Emit rate per second (Emit mode only) |
| Lifetime | Lifetime | NumberRange | 1 | Seconds each clone lives |
Appearance
Section titled “Appearance”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Brightness | CCBrightness | NumberSequence | 0 | Image brightness graph (range -1 to +1) |
| Contrast | CCContrast | NumberSequence | 0 | Image contrast graph (range -1 to +1) |
| Saturation | CCSaturation | NumberSequence | 0 | Colour saturation graph (range -1 to +1) |
| TintColor | CCTintColor | ColorSequence | white | Whole-frame colour tint graph |
Advanced
Section titled “Advanced”| Panel label | Data attribute | Type | Default | What it does |
|---|---|---|---|---|
| Anim. Steps | TotalKeyFrames | number | 100 | Pre-sample resolution for the graphs |
| Linger | PartLife | number | 0 | Seconds the clone lingers after Lifetime |
| Emit Into | EmitParent | Instance | nil | Where the clone parents — overrides Lighting |
Brightness
Section titled “Brightness”A NumberSequence graph for global image brightness, signed.
0(the default) is no change.- Positive values brighten the image.
+0.5is noticeably brighter;+1.0is dramatically washed out. - Negative values darken.
-0.5is dim;-1.0is near-black.
Useful for flashbang effects (a sharp spike to +1.0 followed by a deep dip to -0.5 and recovery to 0), or fade-to-black transitions (a graph that ramps from 0 down to -1.0).
The data attribute is CCBrightness to avoid colliding with native Roblox ColorCorrectionEffect.Brightness.
Contrast
Section titled “Contrast”A NumberSequence graph for image contrast, signed.
0is no change.- Positive values increase contrast — bright pixels become brighter, dark pixels become darker, the gap between them widens.
+0.5is punchy;+1.0is harsh. - Negative values flatten contrast — the image becomes grayer, with tones converging toward middle grey.
-1.0is fully flat.
For “punchy moment” effects (combat impacts, crisp moments of clarity), animate Contrast briefly upward. For “memory” or “out of focus” effects, animate it downward.
The data attribute is CCContrast.
Saturation
Section titled “Saturation”A NumberSequence graph for colour intensity, signed.
0is no change — colours render at their natural intensity.- Positive values oversaturate — colours become more vivid, sometimes neon-bright.
- Negative values desaturate — the image drifts toward grayscale.
-1.0is pure greyscale (no colour at all).
A “drain colour for grief” effect: a graph that ramps from 0 to -1 over the lifetime. The screen gradually loses its colour. A “sudden vivid burst”: a graph that spikes briefly to +0.5 then returns to 0. Useful for combo-confirmation flashes, level-up moments.
The data attribute is CCSaturation.
TintColor
Section titled “TintColor”A ColorSequence for whole-frame tint. The tint multiplies against the rendered image’s colours.
- White (the default) is no tint — the image renders at its natural colour.
- Red tints everything toward red — useful for damage, anger, blood-moon scenes.
- Blue tints toward blue — cold, sad, undersea.
- Sepia (warm yellow-brown) tints toward memory or old-photograph aesthetics.
- Green tints can suggest sickness, or the iconic “Matrix” look.
Because TintColor is a ColorSequence, the tint can shift over the lifetime. A graph from white at age 0 to red at age 0.5 to white at 1.0 produces a brief red-flash that recovers — useful for damage indicators that don’t permanently shift the palette.
The data attribute is CCTintColor.
The singleton-clone pattern
Section titled “The singleton-clone pattern”Same plugin-level protection as Blur and Bloom: in Animate mode, one duplicate at a time, re-emits silently dropped while the active cycle runs. The protection is the plugin’s own — Roblox itself supports multiple ColorCorrectionEffect instances in Lighting and composes them multiplicatively (covered in the Worth-knowing section below). Re-emits in Emit mode aren’t guarded.
For ColorCorrection specifically, stacking is especially dangerous because the four properties compose against each other across stacked effects. Two ColorCorrection clones each with Saturation = -0.5 produce close to full grayscale. Two clones each with TintColor = blue produce a deep saturated blue, often unintentionally. Use Animate mode and the singleton protection.
Emit Into
Section titled “Emit Into”Same as Blur and Bloom. Default is Lighting. Setting it elsewhere effectively disables the effect (ColorCorrection only renders inside Lighting).
Worth knowing
Section titled “Worth knowing”A few ColorCorrection-specific quirks.
The first three properties are signed; the rest of the plugin’s graphs aren’t. Most graphs in the plugin are non-negative — Speed, Drag, Width0, etc. all clamp at zero. CCBrightness, CCContrast, and CCSaturation are not clamped. The graph editor lets you author negative values, and the engine respects them. If you find your graph isn’t going below zero in another type’s editor, that’s because most graphs are non-negative by design — but here, negative is meaningful.
Existing ColorCorrection effects compose multiplicatively. If your Lighting already has a non-emitter ColorCorrectionEffect (a permanent baseline tint your scene designer set up), the emitted ColorCorrection layers on top. A baseline of Saturation = -0.2 plus an emitted Saturation = -0.5 produces a more drained effect than either alone. Audit Lighting for existing colour effects before authoring.
TintColor multiplies, doesn’t replace. A red TintColor doesn’t paint the screen red — it multiplies the existing pixels’ RGB values by the tint colour’s RGB. A pure-blue pixel under a pure-red tint becomes black (red × blue = no overlap). Mixing tints with scene colours sometimes produces surprising results.
Animation blends across all four properties simultaneously. All four graphs are sampled each frame and applied together. A graph that ramps Brightness up while Saturation drops produces a bright but desaturated moment — useful for ghost effects, dream sequences, vision-of-the-divine moments.
What’s next
Section titled “What’s next”Atmosphere is the strangest of the four screen-space types. Roblox renders only one Atmosphere on Lighting at a time, period — and the plugin handles this constraint by overriding the EmissionMode setting in a way that’s worth understanding before you reach for it.