From ee73a524118d141418ebb1e075b6d26edb2a4788 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Wed, 30 Dec 2020 00:42:01 -0500
Subject: [PATCH] Fix stars being stuck at the ground.

---
 indra/newview/lldrawpoolwlsky.cpp | 19 +++++++++++++------
 indra/newview/lldrawpoolwlsky.h   |  4 ++--
 2 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 45be8bd2182..58609e9e6ce 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -215,7 +215,7 @@ void LLDrawPoolWLSky::renderSkyHaze(const LLVector3& camPosLocal, F32 camHeightL
     }
 }
 
-void LLDrawPoolWLSky::renderStars(const LLSettingsSky::ptr_t& psky) const
+void LLDrawPoolWLSky::renderStars(const LLSettingsSky::ptr_t& psky, const LLVector3& camPosLocal) const
 {
     LLGLSPipelineBlendSkyBox gls_skybox(true, false);
 	
@@ -257,7 +257,7 @@ void LLDrawPoolWLSky::renderStars(const LLSettingsSky::ptr_t& psky) const
     }
 
 	gGL.pushMatrix();
-	gGL.rotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f);
+    gGL.translatef(camPosLocal.mV[0], camPosLocal.mV[1], camPosLocal.mV[2]);
 	if (LLGLSLShader::sNoFixedFunction)
 	{
 		gCustomAlphaProgram.bind();
@@ -287,7 +287,7 @@ void LLDrawPoolWLSky::renderStars(const LLSettingsSky::ptr_t& psky) const
 	}
 }
 
-void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky) const
+void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky, const LLVector3& camPosLocal) const
 {
 	LLGLSPipelineBlendSkyBox gls_sky(true, false);
 
@@ -304,7 +304,7 @@ void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky) cons
 		return;
 	}
 
-	gDeferredStarProgram.bind();	
+
 
     LLViewerTexture* tex_a = gSky.mVOSkyp->getBloomTex();
     LLViewerTexture* tex_b = gSky.mVOSkyp->getBloomTexNext();
@@ -330,6 +330,11 @@ void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky) cons
         gGL.getTexUnit(1)->bind(tex_b);
     }
 
+    gGL.pushMatrix();
+    gGL.translatef(camPosLocal.mV[0], camPosLocal.mV[1], camPosLocal.mV[2]);
+
+    gDeferredStarProgram.bind();
+
     gDeferredStarProgram.uniform1f(LLShaderMgr::BLEND_FACTOR, blend_factor);
 
     if (LLPipeline::sReflectionRender)
@@ -347,6 +352,8 @@ void LLDrawPoolWLSky::renderStarsDeferred(const LLSettingsSky::ptr_t& psky) cons
     gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
     gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
 
+    gGL.popMatrix();
+
     gDeferredStarProgram.unbind();
 }
 
@@ -539,7 +546,7 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass)
         const LLSettingsSky::ptr_t& psky = environment.getCurrentSky();
 
         renderSkyHazeDeferred(psky, origin, camHeightLocal);
-        renderStarsDeferred(psky);
+        renderStarsDeferred(psky, origin);
         renderHeavenlyBodies(psky, origin);
         renderSkyClouds(psky, origin, camHeightLocal, cloud_shader);
     }
@@ -562,7 +569,7 @@ void LLDrawPoolWLSky::render(S32 pass)
     const LLSettingsSky::ptr_t& psky = environment.getCurrentSky();
     
 	renderSkyHaze(origin, camHeightLocal);    
-    renderStars(psky);
+    renderStars(psky, origin);
     renderHeavenlyBodies(psky, origin);
 	renderSkyClouds(psky, origin, camHeightLocal, cloud_shader);
 
diff --git a/indra/newview/lldrawpoolwlsky.h b/indra/newview/lldrawpoolwlsky.h
index eaa8855d220..ce3e93adda1 100644
--- a/indra/newview/lldrawpoolwlsky.h
+++ b/indra/newview/lldrawpoolwlsky.h
@@ -78,8 +78,8 @@ class LLDrawPoolWLSky final : public LLDrawPool {
 
 	void renderSkyHazeDeferred(const LLSettingsSky::ptr_t& psky, const LLVector3& camPosLocal, F32 camHeightLocal) const;
 
-    void renderStarsDeferred(const LLSettingsSky::ptr_t& psky) const;
-	void renderStars(const LLSettingsSky::ptr_t& psky) const;
+    void renderStarsDeferred(const LLSettingsSky::ptr_t& psky, const LLVector3& camPosLocal) const;
+	void renderStars(const LLSettingsSky::ptr_t& psky, const LLVector3& camPosLocal) const;
 	void renderHeavenlyBodies(const LLSettingsSky::ptr_t& psky, const LLVector3& camPosLocal);
 };
 
-- 
GitLab