I have a system where material colours are all mixed together (converted into and back out from linear space for the mixing) from their json values and sent to a noise shader.
Here is the gamma correction use in my noise shader: https://github.com/wolfboyft/Alive/blob ... e.glsl#L24
Placing print(colourR) here shows the same value from the material's json, at least if I remove the interpolation between dead and alive grass colours: https://github.com/wolfboyft/Alive/blob ... g.lua#L117 which means that the colour that is sent to the attribute is fine.
Placing a canvas export here (using my boilerplate lib's takeScreenshot) shows the slightly-brightened grass, and if drawSprite is made to draw a circle with 0.5 gray, it shows 0.5 gray in GIMP: https://github.com/wolfboyft/Alive/blob ... g.lua#L214
before:

after:

I wouldn't be surprised if I haven't put in enough information, so please tell me what else you would like me to point you to or tell you about in the source code.