Thanks,
Multiplying did not get the result I was looking for but powering with noise gets very close to the effect I wanted.
float s = smoothstep(0.0, 1.0, noise.x) / 4.0;
color.rgb = pow(color.rgb, vec3(0.7 + s));
Edit:
In the same shader. Something like a map in java. So I calculate it once for the same x, and y texture coordinates at runtime and cache it! but I guess it is very unlike how shaders work