FIRST LIGHT. THEN NUMBERS.

Three channels. Not three “true colours”.

Build a colour from linear R, G and B contributions. Follow light into code and discover why 0.5 can mean different things.

Read the numbers. Notice the assumptions. Then apply the idea to your footage.

03 / RGB LAB

Light is not code.

RGB
sRGB · 8 bit188 / 188 / 188rounded code

sRGB primaries, relative linear-light inputs. All swatches are encoded for an sRGB browser preview. Precision changes rounding, not the display bit depth. No HDR, absolute luminance or prediction of perceived brightness.

COLOR SCIENCE / 03 / FOUNDATION

An experiment, not a preset.

On this page ↓
TOPIC ILLUSTRATION

THE ESSENTIAL IDEA

RGB and digital colour

RGB is a set of three coordinates inside a predefined system. Until the primaries, white point and signal encoding are known, three RGB numbers do not uniquely define the light a display should emit.

  • Distinguish light from code
  • Understand bit depth without myths
  • Keep values meaningful through the pipeline
Editorial topic illustration, not an application screenshot or a measurement chart.
01

RGB is an additive light model

A display creates colour by adding light from three primaries. Zero in all channels means no contribution from those primaries, while increasing channels adds emitted light. This is fundamentally different from subtractive printing models in which dyes remove parts of the incoming spectrum.

What this means in practice

The lab’s R/G/B controls specify linear contributions, then encode the preview as sRGB. A slider midpoint therefore need not yield CSS code 128. Adding light and doing arithmetic on encoded values are different operations.

02

R, G and B are not universal colours of nature

Every RGB system defines the chromaticities of its red, green and blue primaries. Rec.709, Display P3 and Rec.2020 use different coordinates, so R=1, G=0, B=0 describes different reds in those spaces. The letter R names a channel in a system, not one physically fixed shade.

What this means in practice

Compare the sRGB and Display P3 red primaries in the next lab. Both are labelled R, but their coordinates differ. Sharing a white point does not make the systems’ red and green primaries identical.

03

RGB numbers are coordinates, not absolute colour

An RGB triplet needs a defined coordinate system and encoding. Context matters: CSS #FF0000 already means an sRGB red because the specification defines its space. Numbers in a video buffer or a poorly described file do not independently identify sRGB, camera RGB or another representation. Device and colour-management differences are a separate reason for mismatched display.

What this means in practice

A screenshot does not replace the source description: the application may already have transformed the image for display. An eyedropper reads the result of that path, not necessarily the original camera RGB values.

04

Linear RGB: when numbers are proportional to light

In linear-light RGB, doubling a channel value doubles that primary's contribution to physical light intensity. Many blending, blur, compositing and physically meaningful interpolation operations are correct in linear light. But storing images directly in linear form at limited bit depth is not always efficient.

What this means in practice

A simple black–white average gives 0.5 linear light. Encoded as sRGB, this is about 0.735, or code 188 of 255. Averaging codes 0 and 255 gives about 128, corresponding to only 0.216 linear light. Neither number claims to be “half the perceived brightness”.

05

Why ordinary RGB signals are often nonlinear

A transfer function redistributes code values relative to light. Historically this was tied to CRT behaviour; today it also helps use code values efficiently and build a consistent camera → signal → display system. sRGB, BT.709-style camera encoding, gamma 2.4 display response, PQ, HLG and log curves are different things even though interfaces often group them under a Gamma menu.

What this means in practice

sRGB has a linear near-black segment and a power-law segment above its threshold. Gamma 2.2 is an approximation, not the exact formula. The calculator uses the piecewise function; check encoding and decoding rather than applying the curve twice.

06

0–1, 0–255 and 64–940 are different ways to encode a similar idea

Full-range 8-bit encoding has 256 code levels per channel, 0–255. Ten bits provide 1024 codes, 0–1023. Nominal 64–940 video levels describe 10-bit luma and corresponding video-range RGB; colour-difference components use a different nominal interval, commonly 64–960 with neutral at 512. Float can retain values outside 0–1. Bit depth, range and gamut describe different constraints.

What this means in practice

The bit-depth control changes rounding precision, not primary spectra. More codes reduce quantisation error under otherwise equal conditions; they do not turn sRGB into P3 or guarantee no banding after heavy processing or compression.

07

How RGB moves from one space to another

If two RGB systems are defined through CIE coordinates and white points, linear RGB can be transformed through matrices, often using XYZ as an intermediate. If the white points differ, chromatic adaptation may be required. If the target gamut is smaller than the source, a matrix alone does not guarantee graceful out-of-gamut behaviour, which is where gamut mapping enters.

What this means in practice

Decode the transfer function, convert linear coordinates, then encode the output. sRGB and Display P3 share D65, so the lab needs no separate white adaptation. Applying an arbitrary matrix directly to nonlinear codes performs a different operation.

08

Negative and >1 values are not always errors

A negative RGB component after conversion usually means that the colour lies outside positive mixtures of the chosen primaries; it is not “negative light”. A value above 1 can exceed a reference level without indicating a corrupt file. Float preserves such values for further processing, but does not guarantee that every tool handles them correctly. Early clipping discards information that later transforms could otherwise use.

What this means in practice

Inspect intermediate values rather than erasing negative components after every node. A limited output target still needs deliberate handling. Retaining float preserves the ability to make that decision; it does not itself solve display rendering.

09

Alpha is not a fourth colour channel

Alpha normally describes transparency or coverage. In premultiplied representation, RGB has already been multiplied by alpha; in straight/unpremultiplied representation it is stored independently. This matters greatly for compositing, but alpha does not expand the colour gamut and is not another primary.

What this means in practice

Straight RGB may contain colour even at zero alpha; premultiplied RGB has already been multiplied by alpha. Dividing by zero cannot recover a hidden colour. Transparent edges require knowing which representation the next operation expects.

10

What RGB means inside Resolve

In Resolve, the same pixel can successively exist as camera-space RGB, timeline/working RGB and output/display RGB. The question 'what are the RGB values here?' should therefore always be followed by 'which colour space and gamma is this node using at this point in the pipeline?'

What this means in practice

Know the working space and curve before configuring an effect or LUT. Do not add a CST merely because another project has one: RCM or ACES may already perform the required transform. Check the signal state at the selected stage.

A MODEL YOU CAN CHECK

One number in different roles

Keep the meaning, the calculation and the limitation together.

sRGB⁻¹(0.5) ≈ 0.214041; sRGB(0.5) ≈ 0.735357

Left: decoding a value of 0.5. Right: encoding half the linear level. These are relative values, not nits or a model of perceived lightness.

ConceptWhat it describesWhat not to conclude
0.5 linearHalf the chosen linear contribution.Not necessarily code 128 or visually half as bright.
0.5 sRGBA nonlinear code; about 0.214 linear.Not half the physical light.
8 / 10 bit256 / 1024 discrete codes per channel.Not the size of the colour gamut.
AlphaOpacity or coverage in compositing.Not a fourth primary.

DO. OBSERVE. EXPLAIN.

From light to code, with the math kept straight.

All lab values are relative. Do not use them to set display luminance or apply them to log without its corresponding function.

  1. 01

    Begin with a neutral

    Choose the half-linear preset. Compare the three contributions and their sRGB codes.

    CHECK

    All channels match, with code about 188 at 8 bit.

  2. 02

    Isolate one channel

    Remove two contributions, leaving R, then restore G and B.

    CHECK

    The mixture changes; primary definitions remain sRGB.

  3. 03

    Change precision

    Choose 10 bit, then the diagnostic 3-bit mode.

    CHECK

    Rounding precision changes; 3-bit steps are not presented as typical video.

  4. 04

    Compare two averages

    In the mixing mode, change the black–white blend fraction. Compare code values and linear contributions.

    CHECK

    You can explain why the same fraction gives different results for the two methods.

Check your understanding

0 / 4

Tick only what you can explain yourself.

TEST THE EXPLANATION

A situation, not a trick question.

Answer first. Open the reasoning afterwards.

01Why does a 0.5 slider produce 188 rather than 128?

The slider specifies a linear contribution. For display it is sRGB-encoded: 0.5 linear becomes about 0.735. Rounding to an 8-bit grid gives 188.

02Why did float not save clipped highlights?

Float can store a wide numerical range, but cannot recover detail lost at capture or clipped earlier. Locate the limiting stage rather than blindly changing format.

03Does a HEX value mean something different everywhere?

No: CSS defines HEX in sRGB. Ambiguity concerns data lacking a known context or an incorrect display path, not a missing definition in CSS.

Avoid these shortcuts

  • Treating 255,0,0 as one universal red.
  • Confusing linear RGB with gamma/log-encoded RGB.
  • Treating alpha as a fourth primary.
  • Clipping negative or >1 working values too early.
COLOR / DAVINCI RESOLVE

From the model to your workflow.

The main practical rule is simple: RGB without context is just numbers. Before any CST, LUT or manual transform, first establish what those numbers mean at the input.

Color Management ↗Scopes ↗Color Space Transform ↗

CHECK THE FOUNDATION

Sources and model limits.

Editorial review: 30 September 2026. Links identify the definitions and formulas; exercises are independent teaching examples.

  1. [5]
    ICC · sRGB ↗

    Primary chromaticities, D65 and the piecewise transfer function.

  2. [7]
    W3C · CSS Color 4 ↗

    Definitions and numerical conversions. Candidate Recommendation Draft, 26 September 2026, not a final Recommendation.

  3. [8]
    ITU-R · BT.709-6 ↗

    HDTV parameters, not a universal preset for every file.

  4. [10]
    Blackmagic Design · Color ↗

    The practical connection to colour management and Resolve tools.