Purpose of neopix_gamma in Adafruit sketch (for WS2812 RGBW)?

Hello all,
I am working on a sketch to drive my newly acquired LED Strip (WS2812 RGBW).

I have installed the Adafruit libraries and tested the strip using the NeoPixel_RGBWstrandtest sketch.

Now, I want to develop my own, but obviously with inspiration from the stand test sketch.

I can see the below neopix_gamma array in the sketch:

byte neopix_gamma[] = {
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
    1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  2,  2,  2,
    2,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  4,  4,  5,  5,  5,
    5,  6,  6,  6,  6,  7,  7,  7,  7,  8,  8,  8,  9,  9,  9, 10,
   10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16,
   17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25,
   25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36,
   37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50,
   51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68,
   69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89,
   90, 92, 93, 95, 96, 98, 99,101,102,104,105,107,109,110,112,114,
  115,117,119,120,122,124,126,127,129,131,133,135,137,138,140,142,
  144,146,148,150,152,154,156,158,160,162,164,167,169,171,173,175,
  177,180,182,184,186,189,191,193,196,198,200,203,205,208,210,213,
  215,218,220,223,225,228,231,233,236,239,241,244,247,249,252,255 };

And I can see that it appears to be used for adjusting the intensity values sent to the white LED in the LED strip:

          strip.setPixelColor(i, strip.Color(0,0,0, neopix_gamma[j] ) );

But I just cannot find out why this is done.

Is there any advantage to it, in which case, I should do the same? if not, then I might as well just keep things simple and pass the value directly.

Does anyone here know?

Best regards,
Lars

It is done to make equal increments of numbers into equal increments of brightness as perceived by the eye.
The eye has an logarithmic response to increase in light levels and this compensates for that by making the steps bigger so they look brighter.

If you have a web colour given in RGB values it will look different on the screen to what it looks like on an LED, this is an attempt to make the LED produce the same colours as a screen.

Without it a lot of the colours look the same despite having different numbers.

Grumpy_Mike:
It is done to make equal increments of numbers into equal increments of brightness as perceived by the eye.
The eye has an logarithmic response to increase in light levels and this compensates for that by making the steps bigger so they look brighter.

If you have a web colour given in RGB values it will look different on the screen to what it looks like on an LED, this is an attempt to make the LED produce the same colours as a screen.

Without it a lot of the colours look the same despite having different numbers.

Ah, thank you! That makes good sense.

Best regards,
Lars