summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2018-09-13 00:34:24 +0100
committerGraham Linden <graham@lindenlab.com>2018-09-13 00:34:24 +0100
commita21fa8664b596a6d3dd08d6d9a52bb41515bd159 (patch)
tree85e4939cf3a7690165d95a5a5b8e1f6d30ac008a
parentd4927e8f074c8f3b6a28a4f22f344ca27a98cb28 (diff)
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.
-rw-r--r--indra/newview/featuretable.txt4
-rw-r--r--indra/newview/featuretable_linux.txt4
-rw-r--r--indra/newview/featuretable_mac.txt4
-rw-r--r--indra/newview/llvosky.cpp57
-rw-r--r--indra/newview/llvosky.h12
5 files changed, 58 insertions, 23 deletions
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);
};