summaryrefslogtreecommitdiff
path: root/indra/newview/llviewershadermgr.cpp
diff options
context:
space:
mode:
authormobserveur <mobserveur@gmail.com>2025-09-08 17:26:53 +0200
committermobserveur <mobserveur@gmail.com>2025-09-08 17:26:53 +0200
commitccf0114f36968d6cf6dfb11e1c5a035406314924 (patch)
tree50edc786a62ee0b1e2aa6bf06251b655806123f3 /indra/newview/llviewershadermgr.cpp
parent7f0c81918575d3f05e4eadc160b600eaa8b383d1 (diff)
Optimisations and experimental HDR display support on mac
This commit completes the previous ones for performance optimisations, and adds HDR display support on mac
Diffstat (limited to 'indra/newview/llviewershadermgr.cpp')
-rw-r--r--indra/newview/llviewershadermgr.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 4d62adf3e2..18407b5b43 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -202,6 +202,7 @@ LLGLSLShader gDeferredPostTonemapProgram;
LLGLSLShader gNoPostTonemapProgram;
LLGLSLShader gDeferredPostGammaCorrectProgram;
LLGLSLShader gLegacyPostGammaCorrectProgram;
+LLGLSLShader gHDRGammaCorrectProgram;
LLGLSLShader gExposureProgram;
LLGLSLShader gExposureProgramNoFade;
LLGLSLShader gLuminanceProgram;
@@ -449,6 +450,7 @@ void LLViewerShaderMgr::finalizeShaderList()
mShaderList.push_back(&gNoPostTonemapProgram);
mShaderList.push_back(&gDeferredPostGammaCorrectProgram); // for gamma
mShaderList.push_back(&gLegacyPostGammaCorrectProgram);
+ mShaderList.push_back(&gHDRGammaCorrectProgram);
mShaderList.push_back(&gDeferredDiffuseProgram);
mShaderList.push_back(&gDeferredBumpProgram);
mShaderList.push_back(&gDeferredPBROpaqueProgram);
@@ -802,13 +804,16 @@ std::string LLViewerShaderMgr::loadBasicShaders()
S32 probe_level = llclamp(gSavedSettings.getS32("RenderReflectionProbeLevel"), 0, 3);
- S32 shadow_detail = gSavedSettings.getS32("RenderShadowDetail");
+ S32 shadow_detail = gSavedSettings.getS32("RenderShadowDetail");
if (shadow_detail >= 1)
{
- attribs["SUN_SHADOW"] = "1";
+ if(shadow_detail < 3)
+ {
+ attribs["SUN_SHADOW"] = "1";
+ }
- if (shadow_detail >= 2)
+ if (shadow_detail > 1)
{
attribs["SPOT_SHADOW"] = "1";
}
@@ -908,7 +913,7 @@ bool LLViewerShaderMgr::loadShadersWater()
S32 shadow_detail = gSavedSettings.getS32("RenderShadowDetail");
bool use_sun_shadow = mShaderLevel[SHADER_DEFERRED] > 1 &&
- shadow_detail > 0;
+ shadow_detail > 0 && shadow_detail < 3;
if (mShaderLevel[SHADER_WATER] == 0)
{
@@ -1158,6 +1163,7 @@ bool LLViewerShaderMgr::loadShadersDeferred()
gLuminanceProgram.unload();
gDeferredPostGammaCorrectProgram.unload();
gLegacyPostGammaCorrectProgram.unload();
+ gHDRGammaCorrectProgram.unload();
gDeferredPostTonemapProgram.unload();
gNoPostTonemapProgram.unload();
for (auto i = 0; i < 4; ++i)
@@ -2501,6 +2507,21 @@ bool LLViewerShaderMgr::loadShadersDeferred()
if (success)
{
+ gHDRGammaCorrectProgram.mName = "HDR Gamma Correction Post Process";
+ gHDRGammaCorrectProgram.mFeatures.hasSrgb = true;
+ gHDRGammaCorrectProgram.mFeatures.isDeferred = true;
+ gHDRGammaCorrectProgram.mShaderFiles.clear();
+ gHDRGammaCorrectProgram.clearPermutations();
+ //gHDRGammaCorrectProgram.addPermutation("HDR_GAMMA", "1");
+ gHDRGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER));
+ gHDRGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/MPHDRDisplayGammaF.glsl", GL_FRAGMENT_SHADER));
+ gHDRGammaCorrectProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];
+ success = gHDRGammaCorrectProgram.createShader();
+ llassert(success);
+ }
+
+ if (success)
+ {
gDeferredPostTonemapProgram.mName = "Deferred Tonemap Post Process";
gDeferredPostTonemapProgram.mFeatures.hasSrgb = true;
gDeferredPostTonemapProgram.mFeatures.isDeferred = true;