SL-20654 Fix for box probes sometimes glitching out at the corners. Incidental fix for crash when mWaterPool is null.
parent
1718fe5da2
commit
c28eb36a2c
|
|
@ -106,7 +106,7 @@ vec3 toneMap(vec3 color)
|
|||
color *= exposure * exp_scale;
|
||||
|
||||
// mix ACES and Linear here as a compromise to avoid over-darkening legacy content
|
||||
color = mix(toneMapACES_Hill(color), color, 0.333);
|
||||
color = mix(toneMapACES_Hill(color), color, 0.3);
|
||||
#endif
|
||||
|
||||
return color;
|
||||
|
|
|
|||
|
|
@ -167,7 +167,16 @@ void LLReflectionMap::autoAdjustOrigin()
|
|||
{
|
||||
mPriority = 1;
|
||||
mOrigin.load3(mViewerObject->getPositionAgent().mV);
|
||||
mRadius = mViewerObject->getScale().mV[0]*0.5f;
|
||||
|
||||
if (mViewerObject->getVolume() && ((LLVOVolume*)mViewerObject)->getReflectionProbeIsBox())
|
||||
{
|
||||
LLVector3 s = mViewerObject->getScale().scaledVec(LLVector3(0.5f, 0.5f, 0.5f));
|
||||
mRadius = s.magVec();
|
||||
}
|
||||
else
|
||||
{
|
||||
mRadius = mViewerObject->getScale().mV[0] * 0.5f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -252,14 +252,12 @@ void LLReflectionMapManager::update()
|
|||
continue;
|
||||
}
|
||||
|
||||
if (probe != mDefaultProbe &&
|
||||
if (probe != mDefaultProbe &&
|
||||
(!probe->isRelevant() || mPaused))
|
||||
{ // skip irrelevant probes (or all non-default probes if paused)
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
LLVector4a d;
|
||||
|
||||
if (probe != mDefaultProbe)
|
||||
|
|
@ -999,10 +997,21 @@ void LLReflectionMapManager::updateUniforms()
|
|||
llassert(refmap->mCubeIndex >= 0); // should always be true, if not, getReflectionMaps is bugged
|
||||
|
||||
{
|
||||
if (refmap->mViewerObject)
|
||||
if (refmap->mViewerObject && refmap->mViewerObject->getVolume())
|
||||
{ // have active manual probes live-track the object they're associated with
|
||||
refmap->mOrigin.load3(refmap->mViewerObject->getPositionAgent().mV);
|
||||
refmap->mRadius = refmap->mViewerObject->getScale().mV[0] * 0.5f;
|
||||
LLVOVolume* vobj = (LLVOVolume*)refmap->mViewerObject;
|
||||
|
||||
refmap->mOrigin.load3(vobj->getPositionAgent().mV);
|
||||
|
||||
if (vobj->getReflectionProbeIsBox())
|
||||
{
|
||||
LLVector3 s = vobj->getScale().scaledVec(LLVector3(0.5f, 0.5f, 0.5f));
|
||||
refmap->mRadius = s.magVec();
|
||||
}
|
||||
else
|
||||
{
|
||||
refmap->mRadius = refmap->mViewerObject->getScale().mV[0] * 0.5f;
|
||||
}
|
||||
|
||||
}
|
||||
modelview.affineTransform(refmap->mOrigin, oa);
|
||||
|
|
|
|||
|
|
@ -8303,7 +8303,10 @@ void LLPipeline::doWaterHaze()
|
|||
gGLLastMatrix = NULL;
|
||||
gGL.loadMatrix(gGLModelView);
|
||||
|
||||
mWaterPool->pushFaceGeometry();
|
||||
if (mWaterPool)
|
||||
{
|
||||
mWaterPool->pushFaceGeometry();
|
||||
}
|
||||
}
|
||||
|
||||
unbindDeferredShader(haze_shader);
|
||||
|
|
|
|||
Loading…
Reference in New Issue