diff options
| author | Erik Kundiman <erik@megapahit.org> | 2024-06-11 09:12:53 +0800 | 
|---|---|---|
| committer | Erik Kundiman <erik@megapahit.org> | 2024-06-11 09:12:53 +0800 | 
| commit | dedd91fdcabe5af455bbbb1cb0149aea30b0faf9 (patch) | |
| tree | 246d37024406883c917e0c54ce61306552b1671c /indra/newview/llsettingsvo.cpp | |
| parent | b0e7f040658132d398fd2b29585ed5ae782c1fdd (diff) | |
| parent | 730d94779c0e798ec91b269b530a08f0eebaa13d (diff) | |
Merge tag '7.1.8-release'
source for viewer 7.1.8.9375512768
Diffstat (limited to 'indra/newview/llsettingsvo.cpp')
| -rw-r--r-- | indra/newview/llsettingsvo.cpp | 35 | 
1 files changed, 26 insertions, 9 deletions
| diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index ca5e148952..76632a83ae 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -718,11 +718,11 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force)      LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky();      // TODO -- make these getters return vec3s -    LLVector3 sunDiffuse = LLVector3(psky->getSunlightColor().mV); -    LLVector3 moonDiffuse = LLVector3(psky->getMoonlightColor().mV); +    LLVector3 sun_light_color = LLVector3(psky->getSunlightColor().mV); +    LLVector3 moon_light_color = LLVector3(psky->getMoonlightColor().mV); -    shader->uniform3fv(LLShaderMgr::SUNLIGHT_COLOR, sunDiffuse); -    shader->uniform3fv(LLShaderMgr::MOONLIGHT_COLOR, moonDiffuse); +    shader->uniform3fv(LLShaderMgr::SUNLIGHT_COLOR, sun_light_color); +    shader->uniform3fv(LLShaderMgr::MOONLIGHT_COLOR, moon_light_color);      shader->uniform3fv(LLShaderMgr::CLOUD_COLOR, LLVector3(psky->getCloudColor().mV)); @@ -745,8 +745,7 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force)      shader->uniform1f(LLShaderMgr::SKY_SUNLIGHT_SCALE, sunlight_scale);      shader->uniform1f(LLShaderMgr::SKY_AMBIENT_SCALE, ambient_scale); -    static LLCachedControl<F32> cloud_shadow_scale(gSavedSettings, "RenderCloudShadowAmbianceFactor", 0.125f); -    F32 probe_ambiance = getTotalReflectionProbeAmbiance(cloud_shadow_scale); +    F32 probe_ambiance = getReflectionProbeAmbiance();      if (irradiance_pass)      { // during an irradiance map update, disable ambient lighting (direct lighting only) and desaturate sky color (avoid tinting the world blue) @@ -765,9 +764,9 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force)              shader->uniform1f(LLShaderMgr::SKY_HDR_SCALE, auto_adjust_hdr_scale);              LLColor3 blue_horizon = getBlueHorizon() * auto_adjust_blue_horizon_scale;              LLColor3 blue_density = getBlueDensity() * auto_adjust_blue_density_scale; -            LLColor3 sun_diffuse = getSunDiffuse() * auto_adjust_sun_color_scale; +            sun_light_color = sun_light_color * auto_adjust_sun_color_scale; -            shader->uniform3fv(LLShaderMgr::SUNLIGHT_COLOR, sun_diffuse.mV); +            shader->uniform3fv(LLShaderMgr::SUNLIGHT_COLOR, sun_light_color.mV);              shader->uniform3fv(LLShaderMgr::BLUE_DENSITY, blue_density.mV);              shader->uniform3fv(LLShaderMgr::BLUE_HORIZON, blue_horizon.mV); @@ -1009,6 +1008,7 @@ void LLSettingsVOWater::applySpecial(void *ptarget, bool force)          glh::matrix4f mat(modelView);          glh::matrix4f invtrans = mat.inverse().transpose(); +        invtrans.m[3] = invtrans.m[7] = invtrans.m[11] = 0.f;          glh::vec3f enorm;          glh::vec3f ep;          invtrans.mult_matrix_vec(norm, enorm); @@ -1017,12 +1017,29 @@ void LLSettingsVOWater::applySpecial(void *ptarget, bool force)          LLVector4 waterPlane(enorm.v[0], enorm.v[1], enorm.v[2], -ep.dot(enorm)); +        norm = glh::vec3f(gPipeline.mHeroProbeManager.mMirrorNormal.mV); +        p    = glh::vec3f(gPipeline.mHeroProbeManager.mMirrorPosition.mV); +        invtrans.mult_matrix_vec(norm, enorm); +        enorm.normalize(); +        mat.mult_matrix_vec(p, ep); + +        LLVector4 mirrorPlane(enorm.v[0], enorm.v[1], enorm.v[2], -ep.dot(enorm)); +          LLDrawPoolAlpha::sWaterPlane = waterPlane;          shader->uniform4fv(LLShaderMgr::WATER_WATERPLANE, waterPlane.mV); - +        shader->uniform4fv(LLShaderMgr::CLIP_PLANE, mirrorPlane.mV);          LLVector4 light_direction = env.getClampedLightNorm(); +        if (gPipeline.mHeroProbeManager.isMirrorPass()) +        { +            shader->uniform1f(LLShaderMgr::MIRROR_FLAG, 1); +        } +        else +        { +            shader->uniform1f(LLShaderMgr::MIRROR_FLAG, 0); +        } +          F32 waterFogKS = 1.f / llmax(light_direction.mV[2], WATER_FOG_LIGHT_CLAMP);          shader->uniform1f(LLShaderMgr::WATER_FOGKS, waterFogKS); | 
