summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/llwindow/llopenglview-objc.mm60
-rw-r--r--indra/newview/app_settings/settings.xml4
-rw-r--r--indra/newview/app_settings/shaders/class1/effects/bloomExtractF.glsl12
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/uiF.glsl3
-rw-r--r--indra/newview/lldynamictexture.cpp4
-rw-r--r--indra/newview/llreflectionmapmanager.cpp216
-rw-r--r--indra/newview/llreflectionmapmanager.h6
-rw-r--r--indra/newview/llviewerdisplay.cpp3
-rw-r--r--indra/newview/llviewerwindow.cpp4
-rw-r--r--indra/newview/pipeline.cpp44
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml73
11 files changed, 153 insertions, 276 deletions
diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm
index 577311bf49..7579f28656 100644
--- a/indra/llwindow/llopenglview-objc.mm
+++ b/indra/llwindow/llopenglview-objc.mm
@@ -160,8 +160,18 @@ attributedStringInfo getSegments(NSAttributedString *str)
- (void)viewWillMoveToWindow:(nullable NSWindow *)newWindow
{
- if(mHDRDisplay) self.wantsExtendedDynamicRangeOpenGLSurface = YES;
- //else self.wantsExtendedDynamicRangeOpenGLSurface = NO;
+ if(mHDRDisplay)
+ {
+ self.wantsExtendedDynamicRangeOpenGLSurface = YES;
+ NSLog(@"Wants Extended Dynamic Range OpenGL", nil);
+ }
+ /*
+ else
+ {
+ self.wantsExtendedDynamicRangeOpenGLSurface = NO;
+ NSLog(@"Wants Standard Color Range OpenGL", nil);
+ }
+ */
}
- (void)viewDidMoveToWindow
@@ -257,25 +267,34 @@ attributedStringInfo getSegments(NSAttributedString *str)
// Initialize with a default "safe" pixel format that will work with versions dating back to OS X 10.6.
// Any specialized pixel formats, i.e. a core profile pixel format, should be initialized through rebuildContextWithFormat.
// 10.7 and 10.8 don't really care if we're defining a profile or not. If we don't explicitly request a core or legacy profile, it'll always assume a legacy profile (for compatibility reasons).
- NSOpenGLPixelFormatAttribute SDRAttrs[] = {
- NSOpenGLPFADoubleBuffer,
- NSOpenGLPFASampleBuffers, 0,
- NSOpenGLPFASamples, 0,
- NSOpenGLPFAStencilSize, 8,
- NSOpenGLPFADepthSize, 24,
- NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
- 0};
+
+ NSOpenGLPixelFormatAttribute SDRAttrs[] = {
+ NSOpenGLPFANoRecovery,
+ NSOpenGLPFADoubleBuffer,
+ NSOpenGLPFAClosestPolicy,
+ NSOpenGLPFAAccelerated,
+ NSOpenGLPFASampleBuffers, 0,
+ NSOpenGLPFASamples, 0,
+ NSOpenGLPFADepthSize, 24,
+ NSOpenGLPFAAlphaSize, 8,
+ NSOpenGLPFAColorSize, 32,
+ NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
+ 0
+ };
NSOpenGLPixelFormatAttribute HDRAttrs[] = {
- NSOpenGLPFADoubleBuffer,
- NSOpenGLPFASampleBuffers, 0,
- NSOpenGLPFASamples, 0,
- NSOpenGLPFAStencilSize, 8,
- NSOpenGLPFAColorFloat,
- NSOpenGLPFAColorSize, 64,
- NSOpenGLPFADepthSize, 24,
- NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
- 0};
+ NSOpenGLPFANoRecovery,
+ NSOpenGLPFADoubleBuffer,
+ NSOpenGLPFAClosestPolicy,
+ NSOpenGLPFAAccelerated,
+ NSOpenGLPFASampleBuffers, 0,
+ NSOpenGLPFASamples, 0,
+ NSOpenGLPFAColorFloat,
+ NSOpenGLPFAColorSize, 64,
+ NSOpenGLPFADepthSize, 24,
+ NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
+ 0
+ };
NSOpenGLPixelFormat *pixelFormat = nil;
@@ -291,6 +310,7 @@ attributedStringInfo getSegments(NSAttributedString *str)
}
else
{
+ NSLog(@"pixel format created successfully for HDR Display", nil);
mHDRDisplay = YES;
}
}
@@ -324,6 +344,8 @@ attributedStringInfo getSegments(NSAttributedString *str)
self.window.colorSpace = extended_ns_color_space;
CGColorSpaceRelease(color_space_extended);
+
+ NSLog(@"Extended color space applied for HDR Display", nil);
}
//for retina support
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 297ef0e011..c77907b0dd 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -14384,7 +14384,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <integer>1.5</integer>
+ <integer>1.0</integer>
</map>
<key>MPHDRGamma</key>
<map>
@@ -14406,7 +14406,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
- <integer>1.5</integer>
+ <integer>1.0</integer>
</map>
<key>MPColorPrecision</key>
<map>
diff --git a/indra/newview/app_settings/shaders/class1/effects/bloomExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/bloomExtractF.glsl
index d878ab053e..66d86eec1f 100644
--- a/indra/newview/app_settings/shaders/class1/effects/bloomExtractF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/bloomExtractF.glsl
@@ -2,7 +2,7 @@ out vec4 frag_color;
uniform sampler2D diffuseMap;
uniform sampler2D bloomExtractORM; // orm
-uniform sampler2D bloomExtractEmissive; // emissive
+//uniform sampler2D bloomExtractEmissive; // emissive
uniform sampler2D bloomExtractEmissive2; // emissive 2
uniform float bloomExtractBrightness = 0.9;
@@ -15,6 +15,12 @@ void main()
{
vec4 col = texture(diffuseMap, vary_texcoord0.xy);
+ if(col.a > 0.001)
+ {
+ discard;
+ return;
+ }
+
//int valid = 0;
//float brightness = dot(col.rgb, vec3(0.2126, 0.7152, 0.0722));
float brightness = dot(col.rgb, vec3(0.3, 0.5, 0.2));
@@ -25,14 +31,16 @@ void main()
return;
}
+ /*
vec3 emi = texture(bloomExtractEmissive, vary_texcoord0.xy).rgb;
if(emi.r + emi.g + emi.b > 0.01)
{
discard;
return;
}
+ */
- emi = texture(bloomExtractEmissive2, vary_texcoord0.xy).rgb;
+ vec3 emi = texture(bloomExtractEmissive2, vary_texcoord0.xy).rgb;
if(emi.r + emi.g + emi.b > 0.01)
{
discard;
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
index 42cc333829..6120dbd37e 100644
--- a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
@@ -27,12 +27,11 @@ out vec4 frag_color;
uniform sampler2D diffuseMap;
-uniform float mpHDRBoost = 1.0;
in vec2 vary_texcoord0;
in vec4 vertex_color;
void main()
{
- frag_color = mpHDRBoost * vertex_color*texture(diffuseMap, vary_texcoord0.xy);
+ frag_color = vertex_color*texture(diffuseMap, vary_texcoord0.xy);
}
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index 33325e352f..984f8ee25e 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -204,7 +204,7 @@ bool LLViewerDynamicTexture::updateAllInstances()
llassert(bake_target.getHeight() >= (U32) LLAvatarAppearanceDefines::SCRATCH_TEX_HEIGHT);
preview_target.bindTarget();
- preview_target.clear();
+ //preview_target.clear();
LLGLSLShader::unbind();
LLVertexBuffer::unbind();
@@ -249,7 +249,7 @@ bool LLViewerDynamicTexture::updateAllInstances()
// ORDER_LAST is baked skin preview, ORDER_RESET resets appearance parameters and does not render.
bake_target.bindTarget();
- bake_target.clear();
+ //bake_target.clear();
result = false;
ret = false;
diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp
index 68a849714c..9b801a3065 100644
--- a/indra/newview/llreflectionmapmanager.cpp
+++ b/indra/newview/llreflectionmapmanager.cpp
@@ -223,12 +223,11 @@ void LLReflectionMapManager::update()
resume();
}
- static LLCachedControl<S32> sDetail(gSavedSettings, "RenderReflectionProbeDetail", -1);
- static LLCachedControl<S32> sLevel(gSavedSettings, "RenderReflectionProbeLevel", 3);
- static LLCachedControl<U32> sReflectionProbeCount(gSavedSettings, "RenderReflectionProbeCount", 256U);
- static LLCachedControl<S32> sProbeDynamicAllocation(gSavedSettings, "RenderReflectionProbeDynamicAllocation", -1);
-
- static LLCachedControl<F32> sProbeUpdateSlowDown(gSavedSettings, "MPRenderProbeSlowDown", 0.f);
+ S32 sDetail = gSavedSettings.getS32("RenderReflectionProbeDetail");
+ S32 sLevel = gSavedSettings.getS32("RenderReflectionProbeLevel");
+ U32 sReflectionProbeCount = gSavedSettings.getU32("RenderReflectionProbeCount");
+ S32 sProbeDynamicAllocation = gSavedSettings.getS32("RenderReflectionProbeDynamicAllocation");
+ F32 sProbeUpdateSlowDown = gSavedSettings.getF32("MPRenderProbeSlowDown");
bool realtime = sDetail >= (S32)LLReflectionMapManager::DetailLevel::REALTIME;
@@ -293,11 +292,12 @@ void LLReflectionMapManager::update()
initReflectionMaps();
- static LLCachedControl<bool> render_hdr(gSavedSettings, "RenderHDREnabled", true);
+ bool render_hdr = gSavedSettings.getBOOL("RenderHDREnabled");
U32 color_fmt = render_hdr ? GL_R11F_G11F_B10F : GL_RGB8;
- static LLCachedControl<U32> MPColorPrecision(gSavedSettings, "MPColorPrecision", 0);
+ U32 MPColorPrecision = gSavedSettings.getU32("MPColorPrecision");
+
if(MPColorPrecision == 1)
{
color_fmt = GL_RGB8;
@@ -413,8 +413,8 @@ void LLReflectionMapManager::update()
mResetFade = llmin((F32)(mResetFade + gFrameIntervalSeconds * 2.f), 1.f);
- static LLCachedControl<F32> sDefaultUpdatePeriod(gSavedSettings, "RenderDefaultProbeUpdatePeriod", 2.f);
- static LLCachedControl<F32> sMPUpdatePeriod(gSavedSettings, "MPRenderProbeUpdatePeriod", 2.f);
+ F32 sDefaultUpdatePeriod = gSavedSettings.getF32("RenderDefaultProbeUpdatePeriod");
+ //F32 sMPUpdatePeriod = gSavedSettings.getF32("MPRenderProbeUpdatePeriod");
for (unsigned int i = 0; i < mProbes.size(); ++i)
{
@@ -564,15 +564,6 @@ void LLReflectionMapManager::update()
sUpdateCount++;
mUpdatingProbe = probe;
- if(probe->mCompletedCount < 2)
- {
- probe->mNextUpdateTime = gFrameTimeSeconds + fmax( ((F32)sMPUpdatePeriod / 2.0), 0.25);
- }
- else
- {
- probe->mNextUpdateTime = gFrameTimeSeconds + fmax( (F32)sMPUpdatePeriod, 0.25);
- }
-
doProbeUpdate();
}
}
@@ -782,26 +773,14 @@ void LLReflectionMapManager::doProbeUpdate()
LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY;
llassert(mUpdatingProbe != nullptr);
- static LLCachedControl<bool> mp_progressive(gSavedSettings, "MPRenderProbeProgressive", false);
-
if(mUpdatingFace < 6)
{
- updateProbeFace(mUpdatingProbe, mUpdatingFace, mp_progressive);
- }
- else if(mp_progressive)
- {
- if(isRadiancePass())
- {
- //updateProbeRadiance(mUpdatingProbe);
- }
- else updateProbeIrradiance(mUpdatingProbe);
+ LL_WARNS() << "updating face " << mUpdatingFace << LL_ENDL;
+ updateProbeFace(mUpdatingProbe, mUpdatingFace);
}
else
{
- if(isRadiancePass())
- {
- updateProbeRadiance(mUpdatingProbe);
- }
+ if(isRadiancePass()) updateProbeRadiance(mUpdatingProbe);
else updateProbeIrradiance(mUpdatingProbe);
}
@@ -820,8 +799,23 @@ void LLReflectionMapManager::doProbeUpdate()
if (isRadiancePass())
{
+ F32 sMPUpdatePeriod = gSavedSettings.getF32("MPRenderProbeUpdatePeriod");
+
mUpdatingProbe->mComplete = true;
mUpdatingProbe->mCompletedCount++;
+
+ LL_WARNS() << "Probe updated (" << mUpdatingProbe->mCompletedCount << ")" << LL_ENDL;
+
+ if(mUpdatingProbe->mCompletedCount < 5)
+ {
+ //probe->mNextUpdateTime = gFrameTimeSeconds + fmax( ((F32)sMPUpdatePeriod / 2.0), 0.25);
+ mUpdatingProbe->mNextUpdateTime = gFrameTimeSeconds + 1.0;
+ }
+ else
+ {
+ mUpdatingProbe->mNextUpdateTime = gFrameTimeSeconds + fmax( (F32)sMPUpdatePeriod, 0.10);
+ }
+
mUpdatingProbe = nullptr;
mRadiancePass = false;
}
@@ -849,13 +843,14 @@ void LLReflectionMapManager::doProbeUpdate()
// The next six passes render the scene with both radiance and irradiance into the same scratch space cube map and generate a simple mip chain.
// At the end of these passes, a radiance map is generated for this probe and placed into the radiance cube map array at the index for this probe.
// In effect this simulates single-bounce lighting.
-void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face, bool progressive)
+void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)
{
// hacky hot-swap of camera specific render targets
gPipeline.mRT = &gPipeline.mAuxillaryRT;
mLightScale = 1.f;
- static LLCachedControl<F32> max_local_light_ambiance(gSavedSettings, "RenderReflectionProbeMaxLocalLightAmbiance", 8.f);
+ F32 max_local_light_ambiance = gSavedSettings.getF32("RenderReflectionProbeMaxLocalLightAmbiance");
+
if (!isRadiancePass() && probe->getAmbiance() > max_local_light_ambiance)
{
mLightScale = max_local_light_ambiance / probe->getAmbiance();
@@ -996,14 +991,6 @@ void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face, b
gGL.getTexUnit(diffuseChannel)->unbind(LLTexUnit::TT_TEXTURE);
gReflectionMipProgram.unbind();
}
-
- if(progressive)
- {
- if(isRadiancePass()) updateProbeRadianceOnFace(probe, face, sourceIdx);
- }
-
- // if(isRadiancePass()) updateProbeRadianceOnFace(probe, face, sourceIdx);
- //else updateProbeIrradianceOnFace(probe, face, sourceIdx);
}
// ===================== IRRADIANCE ================================
@@ -1032,7 +1019,7 @@ void LLReflectionMapManager::updateProbeIrradiance(LLReflectionMap* probe)
mMipChain[0].bindTarget("irradiance", 0);
- mMipChain[0].clear(0);
+ mMipChain[0].clear();
gIrradianceGenProgram.bind();
@@ -1128,7 +1115,6 @@ void LLReflectionMapManager::updateProbeRadiance(LLReflectionMap* probe)
{
glViewport(0, 0, res, res);
-
gRadianceGenProgram.uniform1f(sMipLevel, (GLfloat)i);
gRadianceGenProgram.uniform1f(sRoughness, (F32)i / (F32)(mMipChain.size() - 1));
@@ -1158,136 +1144,6 @@ void LLReflectionMapManager::updateProbeRadiance(LLReflectionMap* probe)
//mTexture->unbind();
}
-// ================== PER FACE =======================
-
-void LLReflectionMapManager::updateProbeIrradianceOnFace(LLReflectionMap* probe, U32 face, S32 sourceIdx)
-{
- LL_PROFILE_GPU_ZONE("probe irradiance gen");
-
- static LLStaticHashedString sMipLevel("mipLevel");
- static LLStaticHashedString sRoughness("roughness");
- static LLStaticHashedString sWidth("u_width");
-
- gGL.setColorMask(true, false);
- LLGLDepthTest depth(GL_FALSE, GL_FALSE);
- LLGLDisable cull(GL_CULL_FACE);
- LLGLDisable blend(GL_BLEND);
-
- static LLStaticHashedString sSourceIdx("sourceIdx");
-
- //LL_WARNS() << "IRRADIANCE" << LL_ENDL;
-
- mMipChain[0].bindTarget("irradiance", 0);
- //mMipChain[0].clear();
-
- gIrradianceGenProgram.bind();
-
- S32 channel = gIrradianceGenProgram.enableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP_ARRAY);
- mTexture->bind(channel);
-
- gIrradianceGenProgram.uniform1i(sSourceIdx, sourceIdx);
- gIrradianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_MAX_LOD, mMaxProbeLOD);
-
- mVertexBuffer->setBuffer();
-
- int start_mip = 0;
- // find the mip target to start with based on irradiance map resolution
- for (start_mip = 0; start_mip < mMipChain.size(); ++start_mip)
- {
- if (mMipChain[start_mip].getWidth() == LL_IRRADIANCE_MAP_RESOLUTION)
- {
- break;
- }
- }
-
- int i = start_mip;
- glViewport(0, 0, mMipChain[i].getWidth(), mMipChain[i].getHeight());
-
- int cf = face;
- {
- LLCoordFrame frame;
- frame.lookAt(LLVector3(0, 0, 0), LLCubeMapArray::sClipToCubeLookVecs[cf], LLCubeMapArray::sClipToCubeUpVecs[cf]);
-
- F32 mat[16];
- frame.getOpenGLRotation(mat);
- gGL.loadMatrix(mat);
-
- mVertexBuffer->drawArrays(gGL.TRIANGLE_STRIP, 0, 4);
-
- S32 res = mMipChain[i].getWidth();
- mIrradianceMaps->bind(channel);
- glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, i - start_mip, 0, 0, probe->mCubeIndex * 6 + cf, 0, 0, res, res);
- }
-
- mMipChain[0].flush();
- gIrradianceGenProgram.unbind();
- mTexture->unbind();
-}
-
-void LLReflectionMapManager::updateProbeRadianceOnFace(LLReflectionMap* probe, U32 face, S32 sourceIdx)
-{
- LL_PROFILE_GPU_ZONE("probe radiance gen");
- static LLStaticHashedString sMipLevel("mipLevel");
- static LLStaticHashedString sRoughness("roughness");
- static LLStaticHashedString sWidth("u_width");
-
- gGL.setColorMask(true, false);
- LLGLDepthTest depth(GL_FALSE, GL_FALSE);
- LLGLDisable cull(GL_CULL_FACE);
- LLGLDisable blend(GL_BLEND);
-
- static LLStaticHashedString sSourceIdx("sourceIdx");
-
- mMipChain[0].bindTarget("radiance", 0);
- mMipChain[0].clear(0);
-
- gRadianceGenProgram.bind();
- mVertexBuffer->setBuffer();
-
- S32 channel = gRadianceGenProgram.enableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP_ARRAY);
- mTexture->bind(channel);
-
- gRadianceGenProgram.uniform1i(sSourceIdx, sourceIdx);
- gRadianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_MAX_LOD, mMaxProbeLOD);
- gRadianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_STRENGTH, 1.f);
- gRadianceGenProgram.uniform1i(sWidth, mProbeResolution);
-
- U32 res = mMipChain[0].getWidth();
-
- for (int i = 0; i < mMipChain.size(); ++i)
- {
- glViewport(0, 0, res, res);
-
- gRadianceGenProgram.uniform1f(sMipLevel, (GLfloat)i);
- gRadianceGenProgram.uniform1f(sRoughness, (F32)i / (F32)(mMipChain.size() - 1));
-
- int cf = face;
- {
- LLCoordFrame frame;
- frame.lookAt(LLVector3(0, 0, 0), LLCubeMapArray::sClipToCubeLookVecs[cf], LLCubeMapArray::sClipToCubeUpVecs[cf]);
-
- F32 mat[16];
- frame.getOpenGLRotation(mat);
- gGL.loadMatrix(mat);
-
- mVertexBuffer->drawArrays(gGL.TRIANGLE_STRIP, 0, 4);
-
- glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, i, 0, 0, probe->mCubeIndex * 6 + cf, 0, 0, res, res);
- LOG_GLERROR("glCopyTexSubImage3D");
- //mMipChain[0].clear(0);
- }
-
- if (i != mMipChain.size() - 1)
- {
- res /= 2;
- }
- }
-
- gRadianceGenProgram.unbind();
- mMipChain[0].flush();
- mTexture->unbind();
-}
-
void LLReflectionMapManager::reset()
{
mReset = true;
@@ -1387,7 +1243,7 @@ void LLReflectionMapManager::updateUniforms()
LLEnvironment& environment = LLEnvironment::instance();
LLSettingsSky::ptr_t psky = environment.getCurrentSky();
- static LLCachedControl<bool> should_auto_adjust(gSavedSettings, "RenderSkyAutoAdjustLegacy", false);
+ bool should_auto_adjust = gSavedSettings.getBOOL("RenderSkyAutoAdjustLegacy");
F32 minimum_ambiance = psky->getReflectionProbeAmbiance(should_auto_adjust);
@@ -1704,8 +1560,8 @@ void LLReflectionMapManager::renderDebug()
void LLReflectionMapManager::initReflectionMaps()
{
- static LLCachedControl<U32> ref_probe_res(gSavedSettings, "RenderReflectionProbeResolution", 128U);
- U32 probe_resolution = nhpo2(llclamp(ref_probe_res(), (U32)64, (U32)512));
+ U32 ref_probe_res = gSavedSettings.getU32("RenderReflectionProbeResolution");
+ U32 probe_resolution = nhpo2(llclamp(ref_probe_res, (U32)64, (U32)512));
bool shouldInit = mTexture.isNull() || mReflectionProbeCount != mDynamicProbeCount || mProbeResolution != probe_resolution || mReset;
@@ -1729,7 +1585,7 @@ void LLReflectionMapManager::initReflectionMaps()
mTexture->getWidth() != mProbeResolution ||
mReflectionProbeCount + 2 != mTexture->getCount())
{
- static LLCachedControl<bool> render_hdr(gSavedSettings, "RenderHDREnabled", true);
+ bool render_hdr = gSavedSettings.getBOOL("RenderHDREnabled");
if (mTexture)
{
diff --git a/indra/newview/llreflectionmapmanager.h b/indra/newview/llreflectionmapmanager.h
index b874bb1c17..c12a87cade 100644
--- a/indra/newview/llreflectionmapmanager.h
+++ b/indra/newview/llreflectionmapmanager.h
@@ -210,15 +210,11 @@ private:
void doProbeUpdate();
// update the specified face of the specified probe
- void updateProbeFace(LLReflectionMap* probe, U32 face, bool progressive = false);
+ void updateProbeFace(LLReflectionMap* probe, U32 face);
void updateProbeIrradiance(LLReflectionMap* probe);
void updateProbeRadiance(LLReflectionMap* probe);
- void updateProbeIrradianceOnFace(LLReflectionMap* probe, U32 face, S32 sourceIdx);
- void updateProbeRadianceOnFace(LLReflectionMap* probe, U32 face, S32 sourceIdx);
-
-
// list of active reflection maps
std::vector<LLPointer<LLReflectionMap> > mProbes;
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index bd1fc46f5d..579583d825 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1690,9 +1690,6 @@ void render_ui_3d()
gUIProgram.bind();
gGL.color4f(1.f, 1.f, 1.f, 1.f);
- static LLCachedControl<bool> hdrDisplay(gSavedSettings, "MPHDRDisplay");
- static LLCachedControl<F32> hdrUIBoost(gSavedSettings, "MPHDRUIBoost");
- if(hdrDisplay) gUIProgram.uniform1f(LLShaderMgr::MP_HDR_BOOST, (GLfloat)hdrUIBoost);
// Coordinate axes
static LLCachedControl<bool> show_axes(gSavedSettings, "ShowAxes");
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 82246b564c..7f7275c8d1 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -5039,7 +5039,7 @@ bool LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
mWorldViewRectRaw.set(0, image_height, image_width, 0);
LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRectRaw.getHeight() );
LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() );
- scratch_space.bindTarget("", 0);
+ scratch_space.bindTarget();
}
else
{
@@ -5306,7 +5306,7 @@ bool LLViewerWindow::simpleSnapshot(LLImageRaw* raw, S32 image_width, S32 image_
{
mWorldViewRectRaw.set(0, image_height, image_width, 0);
- scratch_space.bindTarget("", 0);
+ scratch_space.bindTarget();
}
else
{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 996221fdba..fef1128a1f 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -356,14 +356,12 @@ bool addDeferredAttachments(LLRenderTarget& target, bool for_impostor = false)
static LLCachedControl<bool> has_emissive(gSavedSettings, "RenderEnableEmissiveBuffer", false);
static LLCachedControl<bool> has_hdr(gSavedSettings, "RenderHDREnabled", true);
static LLCachedControl<U32> MPColorPrecision(gSavedSettings, "MPColorPrecision", 0);
+ static LLCachedControl<bool> MPHDRDisplay(gSavedSettings, "MPHDRDisplay", false);
bool hdr = has_hdr() && gGLManager.mGLVersion > 4.05f;
- if (!hdr || MPColorPrecision < 2)
- {
- norm = GL_RGB10_A2;
- emissive = GL_RGB8;
- }
+ if (!hdr || MPColorPrecision != 2) norm = GL_RGB10_A2;
+ if (!hdr || (!MPHDRDisplay && MPColorPrecision == 1)) emissive = GL_RGB8;
bool valid = true;
valid = valid && target.addColorAttachment(orm); // frag-data[1] specular OR PBR ORM
@@ -874,15 +872,15 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY, U32 type_)
//allocate deferred rendering color buffers
GLuint deferredScreenFormat = GL_RGBA8;
- if((hdr || mHDRDisplay) && MPColorPrecision == 2) deferredScreenFormat = GL_RGBA16F;
+ if((hdr && MPColorPrecision == 2)) deferredScreenFormat = GL_RGBA16F;
if (!mRT->deferredScreen.allocate(resX, resY, deferredScreenFormat, true)) return false;
if (!addDeferredAttachments(mRT->deferredScreen)) return false;
- GLuint screenFormat = GL_RGBA8;
- if(hdr || mHDRDisplay) screenFormat = GL_RGBA16F;
+ GLuint screenFormat = GL_RGBA16F;
+ if(!hdr && !mHDRDisplay && MPColorPrecision == 1) screenFormat = GL_RGB8;
- if (!mRT->screen.allocate(resX, resY, GL_RGBA16F)) return false;
+ if (!mRT->screen.allocate(resX, resY, screenFormat)) return false;
mRT->deferredScreen.shareDepthBuffer(mRT->screen);
@@ -901,7 +899,7 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY, U32 type_)
if (!gCubeSnapshot) // hack to not re-allocate various targets for cube snapshots
{
GLuint UIFormat = GL_RGBA8;
- if(mHDRDisplay && MPColorPrecision == 2) UIFormat = GL_RGBA16F;
+ //if(mHDRDisplay && MPColorPrecision == 2) UIFormat = GL_RGBA16F;
if (RenderUIBuffer)
{
@@ -914,7 +912,15 @@ bool LLPipeline::allocateScreenBufferInternal(U32 resX, U32 resY, U32 type_)
if (RenderFSAAType > 0)
{
GLuint AAFormat = GL_RGBA8;
- if(mHDRDisplay && MPColorPrecision == 2) AAFormat = GL_RGBA16F;
+ if(mHDRDisplay && MPColorPrecision == 2)
+ {
+ LL_WARNS() << "AA SET TO GL_RGBA16F" << LL_ENDL;
+ AAFormat = GL_RGBA16F;
+ }
+ else
+ {
+ LL_WARNS() << "AA SET TO GL_RGBA8" << LL_ENDL;
+ }
if (!mFXAAMap.allocate(resX, resY, AAFormat)) return false;
if (RenderFSAAType == 2)
@@ -3891,9 +3897,6 @@ void render_hud_elements()
gGL.color4f(1, 1, 1, 1);
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
- static LLCachedControl<bool> HDRDisplay(gSavedSettings, "MPHDRDisplay");
- static LLCachedControl<F32> hdrUIBoost(gSavedSettings, "MPHDRUIBoost");
- if(HDRDisplay) gUIProgram.uniform1f(LLShaderMgr::MP_HDR_BOOST, (GLfloat)hdrUIBoost);
if (!LLPipeline::sReflectionRender && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
{
@@ -7363,7 +7366,7 @@ void LLPipeline::gammaCorrect(LLRenderTarget* src, LLRenderTarget* dst)
if(mHDRDisplay)
{
shader.uniform1f(LLShaderMgr::GAMMA, (GLfloat)mp_hdr_gamma);
- shader.uniform1f(LLShaderMgr::MP_HDR_BOOST, (GLfloat)mp_hdr_boost);
+ shader.uniform1f(LLShaderMgr::MP_HDR_BOOST, 1.0);
}
renderTriangle();
@@ -7682,14 +7685,14 @@ void LLPipeline::generateSMAABuffers(LLRenderTarget* src)
edge_shader.bind();
edge_shader.uniform4fv(sSmaaRTMetrics, 1, rt_metrics);
- S32 channel = edge_shader.enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, src->getUsage());
+ S32 channel = edge_shader.enableTexture(LLShaderMgr::DEFERRED_DIFFUSE);
+
if (channel > -1)
{
if (!use_sample)
{
- //src->bindTexture(0, channel, LLTexUnit::TFO_POINT);
- //gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
src->bindTexture(0, channel, LLTexUnit::TFO_BILINEAR);
+ gGL.getTexUnit(channel)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
}
else
{
@@ -7787,7 +7790,6 @@ bool LLPipeline::applySMAA(LLRenderTarget* src, LLRenderTarget* dst)
LL_PROFILE_GPU_ZONE("aa");
- generateSMAABuffers(src);
static LLCachedControl<U32> aa_quality(gSavedSettings, "RenderFSAASamples", 0U);
@@ -8094,7 +8096,7 @@ bool LLPipeline::renderBloom(LLRenderTarget* src, LLRenderTarget* dst)
gBloomExtractProgram.bind();
gBloomExtractProgram.bindTexture(LLShaderMgr::DIFFUSE_MAP, &mRT->screen);
gBloomExtractProgram.bindTexture(LLShaderMgr::BLOOM_EXTRACT_ORM, &mRT->deferredScreen, false, LLTexUnit::TFO_POINT, 1);
- gBloomExtractProgram.bindTexture(LLShaderMgr::BLOOM_EXTRACT_EMISSIVE, &mGlow[1], false, LLTexUnit::TFO_POINT, 0);
+ //gBloomExtractProgram.bindTexture(LLShaderMgr::BLOOM_EXTRACT_EMISSIVE, &mGlow[1], false, LLTexUnit::TFO_POINT, 0);
gBloomExtractProgram.bindTexture(LLShaderMgr::BLOOM_EXTRACT_EMISSIVE2, &mRT->deferredScreen, false, LLTexUnit::TFO_POINT, 3);
gBloomExtractProgram.uniform1f(LLShaderMgr::BLOOM_EXTRACT_BRIGHTNESS, 1.0 - mp_bloom_extract_brightness);
@@ -8217,6 +8219,8 @@ void LLPipeline::renderFinalize()
LLRenderTarget* postHDRBuffer = &mRT->screen;
+ generateSMAABuffers(&mRT->screen);
+
if (hdr)
{
copyScreenSpaceReflections(&mRT->screen, &mSceneMap);
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml
index ddc00915a5..c7a1959853 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml
@@ -1721,8 +1721,8 @@ height="16"
left_delta="150"
top_delta="-1"
initial_value="1.0"
-increment="0.1"
-min_val="0.8"
+increment="0.05"
+min_val="0.75"
max_val="2.0"
decimal_digits="2"
label_width="2">
@@ -1752,7 +1752,7 @@ Advanced settings:
<check_box
name="MultiTexCtrl"
control_name="RenderGLMultiThreadedTextures"
-label="Multithreaded Textures"
+label="Multithreaded Textures (needs restart)"
layout="topleft"
width="400"
height="16"
@@ -1764,8 +1764,8 @@ initial_value="false"
<icon
name="mp_multitex_bullet"
-tool_tip="Improves textures loading performance on certain hardware. But can be unstable."
-image_name="mp_yellow_bullet"
+tool_tip="Improves textures loading performance on certain hardware. But can be unstable!! Don't enable this on Linux and don't use it with Apple Multithreaded OpenGL activated."
+image_name="mp_red_bullet"
follows="left|top"
width="16"
height="16"
@@ -1776,7 +1776,7 @@ top_delta="-2"
<icon
name="mp_multitex_info_bullet"
-tool_tip="Enables loading textures using multiple threads."
+tool_tip="Enables loading textures using multiple threads. Use with extreme caution! it's unstable."
image_name="mp_info_bullet"
follows="left|top"
width="16"
@@ -1873,7 +1873,7 @@ top_delta="-2"
<icon
name="mp_lowcolor_info_bullet"
-tool_tip="Sets the internal color resolution. Improves the speed or quality."
+tool_tip="Sets the internal color resolution. Influences the speed or quality. Set this to high if you want to use HDR Display."
image_name="mp_info_bullet"
follows="left|top"
width="16"
@@ -1924,9 +1924,9 @@ Warning: HDR shows extreme luminosity contrast. Use carefully!
<check_box
name="HDRDisplayCtrl"
control_name="MPHDRDisplay"
-label="HDR Display (Mac)"
+label="HDR Display (Mac) - needs restart"
layout="topleft"
-width="250"
+width="400"
height="16"
left="20"
top_delta="32"
@@ -1934,6 +1934,30 @@ initial_value="true"
>
</check_box>
+<icon
+name="mp_hdrd2_bullet"
+tool_tip="Medium performance impact"
+image_name="mp_yellow_bullet"
+follows="left|top"
+width="16"
+height="16"
+layout="topleft"
+left_pad="5"
+top_delta="-2"
+/>
+
+<icon
+name="mp_hdrd2_info_bullet"
+tool_tip="Make sure your color profile is Apple XDR"
+image_name="mp_info_bullet"
+follows="left|top"
+width="16"
+height="16"
+layout="topleft"
+left_pad="5"
+top_delta="0"
+/>
+
<text
name="mp_hdrd_gamma_lbl"
follows="left|top"
@@ -1964,35 +1988,6 @@ label_width="2">
</slider>
<text
-name="mp_hdrd_uiboost_lbl"
-follows="left|top"
-layout="topleft"
-width="140"
-height="18"
-left="32"
-top_pad="16"
-font="SansSerifSmall"
->
-UI Luminosity Boost
-</text>
-
-<slider
-control_name="MPHDRUIBoost"
-follows="left|top"
-layout="topleft"
-width="200"
-height="16"
-left_delta="150"
-top_delta="-1"
-initial_value="1.0"
-increment="0.1"
-min_val="1.0"
-max_val="1.4"
-decimal_digits="2"
-label_width="2">
-</slider>
-
-<text
follows="left|top"
layout="topleft"
top_pad="30"
@@ -2045,7 +2040,7 @@ top_delta="0"
<check_box
name="MPAppleVBModeCtrl"
control_name="MPVertexBufferMode"
-label="Megapahit Vertex Buffer Mode (needs restart)"
+label="Alternative Vertex Buffer Mode (needs restart)"
layout="topleft"
width="400"
height="16"