From 760db3ba6d7fa4b858dc06feedca848e5b8b88ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fernando=20Garc=C3=ADa=20Li=C3=B1=C3=A1n?=
 <fernandogarcialinan@gmail.com>
Date: Wed, 28 Jul 2021 11:37:33 +0200
Subject: [PATCH] HDR: gracefully handle situations where the viewer is below
 the ground

---
 Shaders/HDR/atmos-aerial-perspective.frag | 2 +-
 Shaders/HDR/atmos-sky-view.frag           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Shaders/HDR/atmos-aerial-perspective.frag b/Shaders/HDR/atmos-aerial-perspective.frag
index 5ec3ac62b..c9be8cc8e 100644
--- a/Shaders/HDR/atmos-aerial-perspective.frag
+++ b/Shaders/HDR/atmos-aerial-perspective.frag
@@ -60,7 +60,7 @@ void main()
     vec3 rayDir = vec4(fg_ViewMatrixInverse * vec4(normalize(fragPos), 0.0)).xyz;
 
     float cameraHeight = length(fg_CameraPositionCart);
-    float earthRadius = cameraHeight - fg_CameraPositionGeod.z;
+    float earthRadius = cameraHeight - max(fg_CameraPositionGeod.z, 0.0);
 
     vec3 rayOrigin = fg_CameraPositionCart;
 
diff --git a/Shaders/HDR/atmos-sky-view.frag b/Shaders/HDR/atmos-sky-view.frag
index e0a5f6a4a..8b4d08bb7 100644
--- a/Shaders/HDR/atmos-sky-view.frag
+++ b/Shaders/HDR/atmos-sky-view.frag
@@ -49,7 +49,7 @@ void main()
     vec3 rayDir = vec3(cos(elev) * cos(azimuth), cos(elev) * sin(azimuth), sin(elev));
 
     float cameraHeight = length(fg_CameraPositionCart);
-    float earthRadius = cameraHeight - fg_CameraPositionGeod.z;
+    float earthRadius = cameraHeight - max(fg_CameraPositionGeod.z, 0.0);
 
     vec3 rayOrigin = vec3(0.0, 0.0, cameraHeight);