Lighting Intensity and Overbright Color

There are two things you’re missing. Firstly, lighting is multiplied by two. So the default situation for a red object with a directional light is:

albedo * lightColor * lightIntensity * 2 = output
(1, 0, 0) * (1, 1, 1) * 0.5 * 2 = (1, 0, 0)

Output is indeed clamped to 1.0, since that’s the reddest that the red pixels on your screen will go. So even if you have a light with the maximum intensity (8) then you’ll still only get red:

(1, 0, 0) * (1, 1, 1) * 8.0 * 2 = (16, 0, 0) => (1, 0, 0)

This brings us to the second thing you’re missing when expecting white: colour is the combination of the red, green, and blue channels, which are orthogonal. This means that pure red will never turn into white simply by being multiplied with a higher intensity. The red channel gets really large before being clamped, but the green and blue ones remain at zero. Sixteen times nothing is still nothing.

However, if you put a non-zero value into your non-red channels, you’ll see them boosted by your super-bright light:

(1, 0.1, 0.1) * (1, 1, 1) * 8.0 * 2 = (16, 1.6, 1.6) => (1, 1, 1)