Night clouds: Boost brightness for a moonlit appearence (#7748)
authorParamat <paramat@users.noreply.github.com>
Mon, 1 Oct 2018 18:43:32 +0000 (19:43 +0100)
committerGitHub <noreply@github.com>
Mon, 1 Oct 2018 18:43:32 +0000 (19:43 +0100)
Previously, night clouds were almost indistinguishable from night sky,
especially since a recent commit that made night sky brighter.
They were lacking the beautiful luminosity caused by being lit by the
permanently-full moon.

When 'directional_colored_fog = false' allow the dawn/dusk cloud
brightness boost to apply through the night too.
Set an identical minimum cloud brightness for when
'directional_colored_fog = true'.

src/sky.cpp

index 8c5959d1c14a66155ecca845827c14890c62fd57..8ae45d144ee430ae1deba638d7fc60a8451994c6 100644 (file)
@@ -721,15 +721,20 @@ void Sky::update(float time_of_day, float time_brightness,
                m_skycolor = m_mix_scolor(m_skycolor, pointcolor, m_horizon_blend() * 0.25);
        }
 
-       float cloud_direct_brightness = 0;
+       float cloud_direct_brightness = 0.0f;
        if (sunlight_seen) {
                if (!m_directional_colored_fog) {
                        cloud_direct_brightness = time_brightness;
-                       if (time_brightness >= 0.2 && time_brightness < 0.7)
-                               cloud_direct_brightness *= 1.3;
+                       // Boost cloud brightness relative to sky, at dawn, dusk and at night
+                       if (time_brightness < 0.7f)
+                               cloud_direct_brightness *= 1.3f;
                } else {
-                       cloud_direct_brightness = MYMIN(m_horizon_blend() * 0.15 +
-                               m_time_brightness, 1);
+                       cloud_direct_brightness = std::fmin(m_horizon_blend() * 0.15f +
+                               m_time_brightness, 1.0f);
+                       // Set the same minimum cloud brightness at night
+                       if (time_brightness < 0.5f)
+                               cloud_direct_brightness = std::fmax(cloud_direct_brightness,
+                                       time_brightness * 1.3f);
                }
        } else {
                cloud_direct_brightness = direct_brightness;