DRTVWR-559 Reduce probe flashing and exposure flickering.
parent
9a03c819d4
commit
b5917fbd16
|
|
@ -55,13 +55,13 @@ void main()
|
|||
|
||||
vec3 col;
|
||||
|
||||
vec2 nz = noiseVec * step * 0.5;
|
||||
//vec2 nz = noiseVec * step * 0.5;
|
||||
|
||||
for (float x = start; x <= end; x += step)
|
||||
{
|
||||
for (float y = start; y <= end; y += step)
|
||||
{
|
||||
vec2 tc = vec2(x,y) + nz;
|
||||
vec2 tc = vec2(x,y); // + nz;
|
||||
vec3 c = texture(diffuseRect, tc).rgb + texture(emissiveRect, tc).rgb;
|
||||
float L = max(lum(c), 0.25);
|
||||
|
||||
|
|
@ -84,9 +84,11 @@ void main()
|
|||
|
||||
float s = clamp(0.1/L, 0.5, 2.5);
|
||||
|
||||
float prev = texture(exposureMap, vec2(0.5,0.5)).r;
|
||||
s = mix(prev, s, min(dt*2.0, 0.04));
|
||||
|
||||
float prev = texture(exposureMap, vec2(0.5,0.5)).r;
|
||||
|
||||
s = mix(prev, s, min(dt*2.0*abs(prev-s), 0.04));
|
||||
|
||||
frag_color = vec4(s, s, s, dt);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -181,7 +181,11 @@ void LLReflectionMapManager::update()
|
|||
|
||||
LLVector4a d;
|
||||
|
||||
if (probe->mOccluded)
|
||||
if (probe->mComplete)
|
||||
{
|
||||
probe->mFadeIn = llmin((F32) (probe->mFadeIn + gFrameIntervalSeconds), 1.f);
|
||||
}
|
||||
if (probe->mOccluded && probe->mComplete)
|
||||
{
|
||||
if (oldestOccluded == nullptr)
|
||||
{
|
||||
|
|
@ -300,7 +304,7 @@ void LLReflectionMapManager::getReflectionMaps(std::vector<LLReflectionMap*>& ma
|
|||
mProbes[i]->mLastBindTime = gFrameTimeSeconds; // something wants to use this probe, indicate it's been requested
|
||||
if (mProbes[i]->mCubeIndex != -1)
|
||||
{
|
||||
if (!mProbes[i]->mOccluded)
|
||||
if (!mProbes[i]->mOccluded && mProbes[i]->mComplete)
|
||||
{
|
||||
mProbes[i]->mProbeIndex = count;
|
||||
maps[count++] = mProbes[i];
|
||||
|
|
@ -385,6 +389,7 @@ S32 LLReflectionMapManager::allocateCubeIndex()
|
|||
S32 ret = mProbes[i]->mCubeIndex;
|
||||
mProbes[i]->mCubeIndex = -1;
|
||||
mProbes[i]->mCubeArray = nullptr;
|
||||
mProbes[i]->mComplete = false;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
@ -435,6 +440,7 @@ void LLReflectionMapManager::doProbeUpdate()
|
|||
mUpdatingFace = 0;
|
||||
if (isRadiancePass())
|
||||
{
|
||||
mUpdatingProbe->mComplete = true;
|
||||
mUpdatingProbe = nullptr;
|
||||
mRadiancePass = false;
|
||||
}
|
||||
|
|
@ -768,7 +774,10 @@ void LLReflectionMapManager::updateUniforms()
|
|||
// for sphere probes, origin (xyz) and radius (w) of refmaps in clip space
|
||||
LLVector4 refSphere[LL_MAX_REFLECTION_PROBE_COUNT];
|
||||
|
||||
// extra parameters (currently only ambiance in .x)
|
||||
// extra parameters
|
||||
// x - irradiance scale
|
||||
// y - radiance scale
|
||||
// z - fade in
|
||||
LLVector4 refParams[LL_MAX_REFLECTION_PROBE_COUNT];
|
||||
|
||||
// indices used by probe:
|
||||
|
|
@ -843,7 +852,7 @@ void LLReflectionMapManager::updateUniforms()
|
|||
rpd.refIndex[count][3] = -rpd.refIndex[count][3];
|
||||
}
|
||||
|
||||
rpd.refParams[count].set(llmax(minimum_ambiance, refmap->getAmbiance())*ambscale, radscale, 0.f, 0.f);
|
||||
rpd.refParams[count].set(llmax(minimum_ambiance, refmap->getAmbiance())*ambscale, radscale, refmap->mFadeIn, 0.f);
|
||||
|
||||
S32 ni = nc; // neighbor ("index") - index into refNeighbor to write indices for current reflection probe's neighbors
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue