diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/lldrawpoolwlsky.cpp | 23 | 
2 files changed, 27 insertions, 7 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 3ef7cb9ef7..30b307677b 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9373,6 +9373,17 @@      <key>Value</key>      <real>1.0</real>    </map> +  <key>RenderHDRIIrradianceOnly</key> +  <map> +    <key>Comment</key> +    <string>Only use HDRI sky for irradiance map when RenderHDRISplitScreen is 0</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>0</integer> +  </map>    <key>RenderMaxOpenGLVersion</key>    <map>      <key>Comment</key> diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index 323ab5fc07..68be354533 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -130,6 +130,17 @@ void LLDrawPoolWLSky::renderDome(const LLVector3& camPosLocal, F32 camHeightLoca  extern LLPointer<LLImageGL> gEXRImage; +static bool use_hdri_sky() +{ +    static LLCachedControl<F32> hdri_split(gSavedSettings, "RenderHDRISplitScreen", 1.f); +    static LLCachedControl<bool> irradiance_only(gSavedSettings, "RenderHDRIIrradianceOnly", false); + +    return gCubeSnapshot && (!irradiance_only || !gPipeline.mReflectionMapManager.isRadiancePass()) ? gEXRImage.notNull() : // always use HDRI for reflection probes when available +        gEXRImage.notNull() ? hdri_split > 0.f : // fallback to EEP sky when split screen is zero +        false; // no HDRI available, always use EEP sky + +} +  void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 camHeightLocal) const  {      if (!gSky.mVOSkyp) @@ -141,7 +152,7 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca  	if (gPipeline.canUseWindLightShaders() && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_SKY))  	{ -        if (gEXRImage.notNull()) +        if (use_hdri_sky())          {              sky_shader = &gEnvironmentMapProgram;              sky_shader->bind(); @@ -161,7 +172,7 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca              sky_shader->uniform1f(LLShaderMgr::SKY_HDR_SCALE, powf(2.f, hdri_exposure));              sky_shader->uniformMatrix3fv(LLShaderMgr::DEFERRED_ENV_MAT, 1, GL_FALSE, (F32*) rot.mMatrix); -            sky_shader->uniform1f(hdri_split_screen, hdri_split); +            sky_shader->uniform1f(hdri_split_screen, gCubeSnapshot ? 1.f : hdri_split);          }          else          { @@ -170,8 +181,6 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca          LLGLSPipelineDepthTestSkyBox sky(true, true); -         -          sky_shader->uniform1i(LLShaderMgr::CUBE_SNAPSHOT, gCubeSnapshot ? 1 : 0);          LLSettingsSky::ptr_t psky = LLEnvironment::instance().getCurrentSky(); @@ -210,7 +219,7 @@ void LLDrawPoolWLSky::renderSkyHazeDeferred(const LLVector3& camPosLocal, F32 ca  void LLDrawPoolWLSky::renderStarsDeferred(const LLVector3& camPosLocal) const  { -    if (!gSky.mVOSkyp || gEXRImage.notNull()) +    if (!gSky.mVOSkyp || use_hdri_sky())      {          return;      } @@ -281,7 +290,7 @@ void LLDrawPoolWLSky::renderStarsDeferred(const LLVector3& camPosLocal) const  void LLDrawPoolWLSky::renderSkyCloudsDeferred(const LLVector3& camPosLocal, F32 camHeightLocal, LLGLSLShader* cloudshader) const  { -    if (gEXRImage.notNull()) +    if (use_hdri_sky())      {          return;      } @@ -345,7 +354,7 @@ void LLDrawPoolWLSky::renderSkyCloudsDeferred(const LLVector3& camPosLocal, F32  void LLDrawPoolWLSky::renderHeavenlyBodies()  { -    if (!gSky.mVOSkyp || gEXRImage.notNull()) return; +    if (!gSky.mVOSkyp || use_hdri_sky()) return;      LLGLSPipelineBlendSkyBox gls_skybox(true, true); // SL-14113 we need moon to write to depth to clip stars behind  | 
