From a21fa8664b596a6d3dd08d6d9a52bb41515bd159 Mon Sep 17 00:00:00 2001 From: Graham Linden Date: Thu, 13 Sep 2018 00:34:24 +0100 Subject: SL-1127 fix sky tex update with EEP interpolation getting confused Disable RenderUseAdvancedAtmospherics in feature table to prevent Ultra from turning it on before its time. --- indra/newview/featuretable.txt | 4 +-- indra/newview/featuretable_linux.txt | 4 +-- indra/newview/featuretable_mac.txt | 4 +-- indra/newview/llvosky.cpp | 57 +++++++++++++++++++++++++++++------- indra/newview/llvosky.h | 12 ++++---- 5 files changed, 58 insertions(+), 23 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 1d6fb82d10..e6ee458719 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -66,7 +66,7 @@ RenderCompressTextures 1 1 RenderShaderLightingMaxLevel 1 3 RenderDeferred 1 1 RenderDeferredSSAO 1 1 -RenderUseAdvancedAtmospherics 1 1 +RenderUseAdvancedAtmospherics 1 0 RenderShadowDetail 1 2 RenderUseStreamVBO 1 1 RenderFSAASamples 1 16 @@ -317,7 +317,7 @@ WindLightUseAtmosShaders 1 1 WLSkyDetail 1 128 RenderDeferred 1 1 RenderDeferredSSAO 1 1 -RenderUseAdvancedAtmospherics 1 1 +RenderUseAdvancedAtmospherics 1 0 RenderShadowDetail 1 2 RenderFSAASamples 1 2 diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 18feae162f..bc836a99ca 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -66,7 +66,7 @@ RenderCompressTextures 1 1 RenderShaderLightingMaxLevel 1 3 RenderDeferred 1 1 RenderDeferredSSAO 1 1 -RenderUseAdvancedAtmospherics 1 1 +RenderUseAdvancedAtmospherics 1 0 RenderShadowDetail 1 2 RenderFSAASamples 1 16 RenderMaxTextureIndex 1 16 @@ -316,7 +316,7 @@ WindLightUseAtmosShaders 1 1 WLSkyDetail 1 128 RenderDeferred 1 1 RenderDeferredSSAO 1 1 -RenderUseAdvancedAtmospherics 1 1 +RenderUseAdvancedAtmospherics 1 0 RenderShadowDetail 1 2 RenderFSAASamples 1 2 diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 3f5edede98..68202a571f 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -66,7 +66,7 @@ RenderCompressTextures 1 1 RenderShaderLightingMaxLevel 1 3 RenderDeferred 1 1 RenderDeferredSSAO 1 1 -RenderUseAdvancedAtmospherics 1 1 +RenderUseAdvancedAtmospherics 1 0 RenderShadowDetail 1 2 RenderUseStreamVBO 1 1 RenderFSAASamples 1 16 @@ -317,7 +317,7 @@ WindLightUseAtmosShaders 1 1 WLSkyDetail 1 128 RenderDeferred 1 1 RenderDeferredSSAO 1 1 -RenderUseAdvancedAtmospherics 1 1 +RenderUseAdvancedAtmospherics 1 0 RenderShadowDetail 1 2 RenderFSAASamples 1 2 diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 52e47ab6ba..231fec46a9 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -56,6 +56,8 @@ #include "lltrace.h" #include "llfasttimer.h" +#pragma optimize("", off) + #undef min #undef max @@ -139,6 +141,32 @@ LLSkyTex::~LLSkyTex() mSkyDirs = NULL; } +S32 LLSkyTex::getResolution() +{ + return sResolution; +} + +S32 LLSkyTex::getCurrent() +{ + return sCurrent; +} + +S32 LLSkyTex::stepCurrent() { + sCurrent++; + sCurrent &= 1; + return sCurrent; +} + +S32 LLSkyTex::getNext() +{ + return ((sCurrent+1) & 1); +} + +S32 LLSkyTex::getWhich(const BOOL curr) +{ + int tex = curr ? sCurrent : getNext(); + return tex; +} void LLSkyTex::initEmpty(const S32 tex) { @@ -179,9 +207,6 @@ void LLSkyTex::create(const F32 brightness) createGLImage(sCurrent); } - - - void LLSkyTex::createGLImage(S32 which) { mTexture[which]->createGLTexture(0, mImageRaw[which], 0, TRUE, LLGLTexture::LOCAL); @@ -190,7 +215,14 @@ void LLSkyTex::createGLImage(S32 which) void LLSkyTex::bindTexture(BOOL curr) { - gGL.getTexUnit(0)->bind(mTexture[getWhich(curr)], true); + int tex = getWhich(curr); + gGL.getTexUnit(0)->bind(mTexture[tex], true); +} + +LLImageRaw* LLSkyTex::getImageRaw(BOOL curr) +{ + int tex = getWhich(curr); + return mImageRaw[tex]; } /*************************************** @@ -458,6 +490,7 @@ void LLVOSky::init() } initCubeMap(); + mInitialized = true; mHeavenlyBodyUpdated = FALSE ; @@ -673,7 +706,7 @@ bool LLVOSky::updateSky() mForceUpdateThrottle.setTimerExpirySec(UPDATE_EXPRY); - LLSkyTex::stepCurrent(); + LLSkyTex::stepCurrent(); if (!direction.isExactlyZero()) { @@ -714,6 +747,8 @@ bool LLVOSky::updateSky() } } + int tex = mSkyTex[0].getWhich(TRUE); + for (int side = 0; side < 6; side++) { LLImageRaw* raw1 = nullptr; @@ -721,12 +756,12 @@ bool LLVOSky::updateSky() raw1 = mSkyTex[side].getImageRaw(TRUE); raw2 = mSkyTex[side].getImageRaw(FALSE); raw2->copy(raw1); - mSkyTex[side].createGLImage(mSkyTex[side].getWhich(FALSE)); + mSkyTex[side].createGLImage(tex); raw1 = mShinyTex[side].getImageRaw(TRUE); raw2 = mShinyTex[side].getImageRaw(FALSE); raw2->copy(raw1); - mShinyTex[side].createGLImage(mShinyTex[side].getWhich(FALSE)); + mShinyTex[side].createGLImage(tex); } next_frame = 0; @@ -748,7 +783,7 @@ bool LLVOSky::updateSky() } mCubeMap->init(images); gGL.getTexUnit(0)->disable(); - } + } } } @@ -1504,7 +1539,7 @@ void LLVOSky::setSunAndMoonDirectionsCFR(const LLVector3 &sun_dir_cfr, const LLV updateDirections(); - LLSkyTex::stepCurrent(); + mForceUpdate = true; } void LLVOSky::setSunDirectionCFR(const LLVector3 &sun_dir_cfr) @@ -1531,7 +1566,7 @@ void LLVOSky::setSunDirectionCFR(const LLVector3 &sun_dir_cfr) updateDirections(); - LLSkyTex::stepCurrent(); + mForceUpdate = true; } void LLVOSky::setMoonDirectionCFR(const LLVector3 &moon_dir_cfr) @@ -1540,5 +1575,5 @@ void LLVOSky::setMoonDirectionCFR(const LLVector3 &moon_dir_cfr) updateDirections(); - LLSkyTex::stepCurrent(); + mForceUpdate = true; } diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h index a6f361f5be..ed190892fe 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -74,11 +74,11 @@ protected: ~LLSkyTex(); - static S32 getResolution() { return sResolution; } - static S32 getCurrent() { return sCurrent; } - static S32 stepCurrent() { sCurrent++; sCurrent &= 1; return sCurrent; } - static S32 getNext() { return ((sCurrent+1) & 1); } - static S32 getWhich(const BOOL curr) { return curr ? sCurrent : getNext(); } + static S32 getResolution(); + static S32 getCurrent(); + static S32 stepCurrent(); + static S32 getNext(); + static S32 getWhich(const BOOL curr); void initEmpty(const S32 tex); @@ -118,7 +118,7 @@ protected: return col; } - LLImageRaw* getImageRaw(BOOL curr=TRUE) { return mImageRaw[getWhich(curr)]; } + LLImageRaw* getImageRaw(BOOL curr=TRUE); void createGLImage(BOOL curr=TRUE); }; -- cgit v1.2.3