Hello,
just finished a simple shader to simulate the snow, and I'd like to share and also to get your opinion:
Vertex:
attribute vec3 tangent;
attribute vec3 binormal;
varying vec3 g_lightVec;
void main()
{
gl_Position = ftransform();
gl_TexCoord[0] = gl_MultiTexCoord0;
mat3 TBN_Matrix = gl_NormalMatrix * mat3(tangent, binormal, gl_Normal);
vec4 mv_Vertex = gl_ModelViewMatrix * gl_Vertex ;
vec4 lightEye = gl_ModelViewMatrix * gl_LightSource[0].position;
vec3 lightVec =0.02* (lightEye.xyz - mv_Vertex.xyz);
g_lightVec = lightVec * TBN_Matrix;
}
Frag:
uniform sampler2D snowNoise;
varying vec3 g_lightVec;
void main()
{
float LightAttenuation = clamp(1.0 - dot(g_lightVec, g_lightVec), 0.0, 1.0);
vec3 lightVec = normalize(g_lightVec);
vec4 color_base = vec4(0.94,0.94,1.0,1.0)*0.7; //this gives the intensity of the snow color modify it as you feel (did it slightly bue)
vec3 bump = texture2D(snowNoise, gl_TexCoord[0].xy).rgb * 2.0 - 1.0;
bump = normalize(bump);
float diffuse = clamp(dot(lightVec, bump), 0.0, 1.0);
gl_FragColor = vec4(color_base.rgb * gl_LightSource[0].diffuse.rgb
* (diffuse +0.7 * color_base.a)
* LightAttenuation,1.0);
}
also, please note that the most important maybe is the noise you apply, here are two examples:
here's a noise of my own making (the gimp, used Filter->Distort-> Ripple and Wind and also any kind of noise, but mot too much so that the grain remains pretty fine - you'd lose the aspect of snow)

Also, another texture extracted from shader designer that gives you several samples of grain:

I find the best one in the sample is the one bottom left, what do you think?
this shader is inspired from the bump_mapping from shader designer (http://www.typhoonlabs.com/),
Advises on the way to generate snow noise are welcome,
Hope this helps,
Adrien