diff --git a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl index e73e396b8e3119ca8e7ee6829a2594e8e513493b..e1b18935e80e7ef0dc7630334aa70a71bb511d37 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl @@ -134,7 +134,7 @@ void preProbeSample(vec3 pos) int neighborIdx = refIndex[i].y; if (neighborIdx != -1) { - int neighborCount = min(refIndex[i].z, REF_SAMPLE_COUNT-1); + int neighborCount = refIndex[i].z; int count = 0; while (count < neighborCount) diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 144f79ae13eaeba6f6f9da4cdc62393719867a5d..a9da887220348754e1c5b2c04e57c2ec5ea000bc 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -441,7 +441,11 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass) { renderStarsDeferred(origin); } - renderSkyCloudsDeferred(origin, camHeightLocal, cloud_shader); + + if (!gCubeSnapshot || gPipeline.mReflectionMapManager.isRadiancePass()) // don't draw clouds in irradiance maps to avoid popping + { + renderSkyCloudsDeferred(origin, camHeightLocal, cloud_shader); + } } gGL.setColorMask(true, true); } diff --git a/indra/newview/llreflectionmap.cpp b/indra/newview/llreflectionmap.cpp index 0606e31ac390998ff21ccbda3393328a714f1c28..e71d06fb8761c67a628597241be645d545c0db39 100644 --- a/indra/newview/llreflectionmap.cpp +++ b/indra/newview/llreflectionmap.cpp @@ -70,7 +70,7 @@ void LLReflectionMap::autoAdjustOrigin() { LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY; - if (mGroup) + if (mGroup && !mComplete) { const LLVector4a* bounds = mGroup->getBounds(); auto* node = mGroup->getOctreeNode(); diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index 9e947774b19a41dc8cd777d9a42101385dd53950..68c35ebbb564699ad1d3b7359107c567c5dd6207 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -860,6 +860,9 @@ void LLReflectionMapManager::updateUniforms() { //LL_PROFILE_ZONE_NAMED_CATEGORY_DISPLAY("rmmsu - refNeighbors"); //pack neghbor list + const U32 max_neighbors = 64; + U32 neighbor_count = 0; + for (auto& neighbor : refmap->mNeighbors) { if (ni >= 4096) @@ -875,6 +878,12 @@ void LLReflectionMapManager::updateUniforms() // this neighbor may be sampled rpd.refNeighbor[ni++] = idx; + + neighbor_count++; + if (neighbor_count >= max_neighbors) + { + break; + } } }