Fix excessive clearing of shader cache when toggling mirrors (#1950)
parent
a79e02da0f
commit
e101d1aa28
|
|
@ -44,7 +44,6 @@ using std::make_pair;
|
|||
using std::string;
|
||||
|
||||
LLShaderMgr * LLShaderMgr::sInstance = NULL;
|
||||
bool LLShaderMgr::sMirrorsEnabled = false;
|
||||
|
||||
LLShaderMgr::LLShaderMgr()
|
||||
{
|
||||
|
|
@ -600,11 +599,6 @@ GLuint LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shader_lev
|
|||
extra_code_text[extra_code_count++] = strdup("#define FXAA_GLSL_130 1\n");
|
||||
}
|
||||
|
||||
if (sMirrorsEnabled)
|
||||
{
|
||||
extra_code_text[extra_code_count++] = strdup("#define HERO_PROBES 1\n");
|
||||
}
|
||||
|
||||
// Use alpha float to store bit flags
|
||||
// See: C++: addDeferredAttachment(), shader: frag_data[2]
|
||||
extra_code_text[extra_code_count++] = strdup("#define GBUFFER_FLAG_SKIP_ATMOS 0.0 \n"); // atmo kill
|
||||
|
|
|
|||
|
|
@ -378,7 +378,6 @@ public:
|
|||
bool mShaderCacheInitialized = false;
|
||||
bool mShaderCacheEnabled = false;
|
||||
std::string mShaderCacheDir;
|
||||
static bool sMirrorsEnabled;
|
||||
|
||||
protected:
|
||||
|
||||
|
|
|
|||
|
|
@ -797,6 +797,7 @@ void settings_setup_listeners()
|
|||
setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeDetail", handleReflectionProbeDetailChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderMirrors", handleReflectionProbeDetailChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderHeroProbeResolution", handleHeroProbeResolutionChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderShadowDetail", handleSetShaderChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderDeferredSSAO", handleSetShaderChanged);
|
||||
|
|
|
|||
|
|
@ -495,8 +495,6 @@ void LLViewerShaderMgr::setShaders()
|
|||
|
||||
mShaderList.clear();
|
||||
|
||||
LLShaderMgr::sMirrorsEnabled = LLPipeline::RenderMirrors;
|
||||
|
||||
if (!gGLManager.mHasRequirements)
|
||||
{
|
||||
// Viewer will show 'hardware requirements' warning later
|
||||
|
|
@ -755,6 +753,8 @@ std::string LLViewerShaderMgr::loadBasicShaders()
|
|||
|
||||
bool ssr = gSavedSettings.getBOOL("RenderScreenSpaceReflections");
|
||||
|
||||
bool mirrors = gSavedSettings.getBOOL("RenderMirrors");
|
||||
|
||||
bool has_reflection_probes = gSavedSettings.getBOOL("RenderReflectionsEnabled") && gGLManager.mGLVersion > 3.99f;
|
||||
|
||||
S32 probe_level = llclamp(gSavedSettings.getS32("RenderReflectionProbeLevel"), 0, 3);
|
||||
|
|
@ -782,6 +782,11 @@ std::string LLViewerShaderMgr::loadBasicShaders()
|
|||
attribs["REF_SAMPLE_COUNT"] = "32";
|
||||
}
|
||||
|
||||
if (mirrors)
|
||||
{
|
||||
attribs["HERO_PROBES"] = "1";
|
||||
}
|
||||
|
||||
{ // PBR terrain
|
||||
const S32 mapping = clamp_terrain_mapping(gSavedSettings.getS32("RenderTerrainPBRPlanarSampleCount"));
|
||||
attribs["TERRAIN_PLANAR_TEXTURE_SAMPLE_COUNT"] = llformat("%d", mapping);
|
||||
|
|
|
|||
|
|
@ -1072,12 +1072,7 @@ void LLPipeline::refreshCachedSettings()
|
|||
RenderScreenSpaceReflectionAdaptiveStepMultiplier = gSavedSettings.getF32("RenderScreenSpaceReflectionAdaptiveStepMultiplier");
|
||||
RenderScreenSpaceReflectionGlossySamples = gSavedSettings.getS32("RenderScreenSpaceReflectionGlossySamples");
|
||||
RenderBufferVisualization = gSavedSettings.getS32("RenderBufferVisualization");
|
||||
if (gSavedSettings.getBOOL("RenderMirrors") != RenderMirrors)
|
||||
{
|
||||
RenderMirrors = gSavedSettings.getBOOL("RenderMirrors");
|
||||
LLViewerShaderMgr::instance()->clearShaderCache();
|
||||
LLViewerShaderMgr::instance()->setShaders();
|
||||
}
|
||||
RenderMirrors = gSavedSettings.getBOOL("RenderMirrors");
|
||||
RenderHeroProbeUpdateRate = gSavedSettings.getS32("RenderHeroProbeUpdateRate");
|
||||
RenderHeroProbeConservativeUpdateMultiplier = gSavedSettings.getS32("RenderHeroProbeConservativeUpdateMultiplier");
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue