hmm... alpha?
you should be able to transition between the sprite's true color (rgb, not rgba) and white using the mix() function. And you should be able to control that using a uniform variable.
varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform float amount;
void main() {
vec4 base_colour = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord );
gl_FragColor = vec4( mix( base_colour.rgb, vec3(1.0), amount ), base_colour.a );
}
In gml, to get a pointer to the shader uniform:
uniform_amount = shader_get_uniform(shader,"amount")
and set the uniform:
shader_set_uniform_f( shader_amount, some_amount );
Anything you draw after setting the shader and the "amount" unform, and before resetting the uniform or resetting the shader, will be drawn using those settings.
Apart from shaders, it is also possible to get the same effect using the built in fog system.