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 b49fe3585118bb23ab269c871f109fb593ff0668..820073b3e0a52aaf3c6ab9c01956c450c6c4c3f3 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -442,7 +442,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 89ac0df28644b3554841ac0f64036f1db9d49d6a..261aa51d62bfcf249ed56c73b0a9574aef0588df 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 8252b4be366d38f6f07c581cff480f0871c10e39..dc84b0b10e65862a985ae6e3bbc3f6a6a0e56ae9 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -861,6 +861,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) @@ -876,6 +879,12 @@ void LLReflectionMapManager::updateUniforms() // this neighbor may be sampled rpd.refNeighbor[ni++] = idx; + + neighbor_count++; + if (neighbor_count >= max_neighbors) + { + break; + } } }