From bc5db9b0273d43fffad93cf67cf2bfdb714441a9 Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Sat, 3 Aug 2013 19:04:16 +0300
Subject: [PATCH] Lessen the sky color glitch when quickly turning to look up
 after looking at ground that contains caves

---
 src/sky.cpp | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/sky.cpp b/src/sky.cpp
index 22b12ca1b..e55dd1eb2 100644
--- a/src/sky.cpp
+++ b/src/sky.cpp
@@ -433,9 +433,14 @@ void Sky::update(float time_of_day, float time_brightness,
 	//video::SColorf cloudcolor_bright_dawn_f(1.0, 0.65, 0.44);
 	video::SColorf cloudcolor_bright_dawn_f(1.0, 0.7, 0.5);
 
+	float cloud_color_change_fraction = 0.95;
 	if(sunlight_seen){
-		//m_brightness = m_brightness * 0.95 + direct_brightness * 0.05;
-		m_brightness = m_brightness * 0.95 + time_brightness * 0.05;
+		if(fabs(time_brightness - m_brightness) < 0.2){
+			m_brightness = m_brightness * 0.95 + time_brightness * 0.05;
+		} else {
+			m_brightness = m_brightness * 0.80 + time_brightness * 0.20;
+			cloud_color_change_fraction = 0.0;
+		}
 	}
 	else{
 		if(direct_brightness < m_brightness)
@@ -493,8 +498,8 @@ void Sky::update(float time_of_day, float time_brightness,
 	} else {
 		cloud_direct_brightness = direct_brightness;
 	}
-	m_cloud_brightness = m_cloud_brightness * 0.95 +
-			cloud_direct_brightness * (1.0 - 0.95);
+	m_cloud_brightness = m_cloud_brightness * cloud_color_change_fraction +
+			cloud_direct_brightness * (1.0 - cloud_color_change_fraction);
 	m_cloudcolor_f = video::SColorf(
 			m_cloudcolor_bright_f.getRed() * m_cloud_brightness,
 			m_cloudcolor_bright_f.getGreen() * m_cloud_brightness,
-- 
GitLab