diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp index 217f10f294..9deb6968e3 100644 --- a/apps/openmw/mwrender/sky.cpp +++ b/apps/openmw/mwrender/sky.cpp @@ -659,7 +659,10 @@ namespace MWRender mParticleNode->addChild(program); for (int particleIndex = 0; particleIndex < ps->numParticles(); ++particleIndex) + { ps->getParticle(particleIndex)->setAlphaRange(osgParticle::rangef(mPrecipitationAlpha, mPrecipitationAlpha)); + ps->getParticle(particleIndex)->update(0, true); + } ps->getOrCreateStateSet(); ps->setUserValue("simpleLighting", true); diff --git a/files/shaders/sky_fragment.glsl b/files/shaders/sky_fragment.glsl index c064619579..1ef62ab2cf 100644 --- a/files/shaders/sky_fragment.glsl +++ b/files/shaders/sky_fragment.glsl @@ -29,6 +29,9 @@ void paintClouds(inout vec4 color) color = texture2D(diffuseMap, diffuseMapUV); color.a *= passColor.a * opacity; color.xyz = clamp(color.xyz * gl_FrontMaterial.emission.xyz, 0.0, 1.0); + + // ease transition between clear color and atmosphere/clouds + color = mix(vec4(gl_Fog.color.xyz, color.a), color, passColor.a * passColor.a); } void paintMoon(inout vec4 color)