diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl | 8 | ||||
| -rw-r--r-- | indra/newview/llreflectionmapmanager.cpp | 17 | 
2 files changed, 18 insertions, 7 deletions
| diff --git a/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl b/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl index b325f55576..1c1984e8ee 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/exposureF.glsl @@ -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)); +    s = mix(prev, s, min(dt*2.0*abs(prev-s), 0.04)); +          frag_color = vec4(s, s, s, dt);  } diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index 6828078f4f..e9df67c724 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -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          { | 
