Currently I use simple and ugly implementation of  lineral -> sRGB transfrom

    float sRGB(float x) {
    if ( x <= 0.00031308)
        return 12.92*x;
    else
        return 1.055*pow(x,(1/2.4) ) - 0.055;
    }
    vec3 sRGB_v3(vec3 c) {
        return vec3(sRGB(c.x),sRGB(c.y),sRGB(c.z));
    }

Possible, that correction ( x <= 0.00031308 ) with small vales will not important for practical.

I consider just leave pow(x,1/2.4) but not sure how much impact it will have.


Anyone can suggest ways for optimize it?

Can be vectorization help?

Can be some polynomal fitting be practical better ?