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