diff options
| author | mobserveur <mobserveur@gmail.com> | 2025-10-02 14:35:34 +0200 | 
|---|---|---|
| committer | mobserveur <mobserveur@gmail.com> | 2025-10-02 14:35:34 +0200 | 
| commit | 37bfe659ad0e4eaad4e3697f27947aaea4db8427 (patch) | |
| tree | e0f1fe2993b9dd58054eaee58477ddd00e7db369 | |
| parent | 8aa2fe7bf74870780aa0f9ae49eea2e89287bced (diff) | |
Fixes visual glitches after 2025.07 merge
This commit fixes the visual glitches after the 2025.07 merging.
It also allows the user to set a very short draw distance
(this can be useful for photography)
8 files changed, 47 insertions, 114 deletions
diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 57b1252cf1..268afe843d 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -259,10 +259,7 @@ attributedStringInfo getSegments(NSAttributedString *str)  		NSOpenGLPFADoubleBuffer,  		NSOpenGLPFAClosestPolicy,  		NSOpenGLPFAAccelerated, -		//NSOpenGLPFASampleBuffers, samples, -		//NSOpenGLPFASamples, 0,  		NSOpenGLPFADepthSize, 24, -		//NSOpenGLPFAAlphaSize, 8,  		NSOpenGLPFAColorSize, 32,  		NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,  		0 @@ -273,8 +270,6 @@ attributedStringInfo getSegments(NSAttributedString *str)          NSOpenGLPFADoubleBuffer,          NSOpenGLPFAClosestPolicy,          NSOpenGLPFAAccelerated, -        //NSOpenGLPFASampleBuffers, samples, -        //NSOpenGLPFASamples, 0,          NSOpenGLPFAColorFloat,          NSOpenGLPFAColorSize, 64,          NSOpenGLPFADepthSize, 24, @@ -282,8 +277,6 @@ attributedStringInfo getSegments(NSAttributedString *str)          0      }; -	//NSOpenGLPixelFormat *pixelFormat = nil; -      mHDRDisplay = NO;      if(gHDRDisplaySupport) diff --git a/indra/newview/app_settings/shaders/class1/deferred/MPHDRDisplayGammaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/MPHDRDisplayGammaF.glsl index 7107cfcbce..503974cb7c 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/MPHDRDisplayGammaF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/MPHDRDisplayGammaF.glsl @@ -30,7 +30,7 @@ out vec4 frag_color;  uniform sampler2D diffuseRect;  uniform float gamma = 2.2; -uniform float mpHDRBoost; +uniform float mpHDRBoost = 1.0;  in vec2 vary_fragcoord; diff --git a/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl b/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl index 5837308965..10a48f1e01 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl @@ -1373,7 +1373,7 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,      SMAA_BRANCH      if (dot(a, float4(1.0, 1.0, 1.0, 1.0)) < 1e-5) {          float4 color = SMAASampleLevelZero(colorTex, texcoord); -        color.rgb = srgb_to_linear(color.rgb); +        //color.rgb = srgb_to_linear(color.rgb);          #if SMAA_REPROJECTION          float2 velocity = SMAA_DECODE_VELOCITY(SMAASampleLevelZero(velocityTex, texcoord)); @@ -1382,7 +1382,7 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,          color.a = sqrt(5.0 * length(velocity));          #endif -        color.rgb = linear_to_srgb(color.rgb); +        //color.rgb = linear_to_srgb(color.rgb);          return color;      } else {          bool h = max(a.x, a.z) > max(a.y, a.w); // max(horizontal) > max(vertical) @@ -1400,11 +1400,11 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,          // We exploit bilinear filtering to mix current pixel with the chosen          // neighbor:          float4 color = SMAASampleLevelZero(colorTex, blendingCoord.xy); -        color.rgb = srgb_to_linear(color.rgb); +        //color.rgb = srgb_to_linear(color.rgb);          color = blendingWeight.x * color;          float4 color2 = SMAASampleLevelZero(colorTex, blendingCoord.zw); -        color2.rgb = srgb_to_linear(color2.rgb); +        //color2.rgb = srgb_to_linear(color2.rgb);          color += blendingWeight.y * color2;          #if SMAA_REPROJECTION @@ -1416,7 +1416,7 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord,          color.a = sqrt(5.0 * length(velocity));          #endif -        color.rgb = linear_to_srgb(color.rgb); +        //color.rgb = linear_to_srgb(color.rgb);          return color;      }  } diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 0c369d6926..39ac1aff07 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -228,7 +228,7 @@ const F32 ALPHA_BLEND_CUTOFF = 0.598f;  const F32 DEFERRED_LIGHT_FALLOFF = 0.5f;  const U32 DEFERRED_VB_MASK = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1; -const U32 SHADOWS_RESX = 1024; +const U32 SHADOWS_RESX = 512;  const U32 SHADOWS_RESY = 512;  extern S32 gBoxFrame; @@ -7484,7 +7484,6 @@ void LLPipeline::gammaCorrect(LLRenderTarget* src, LLRenderTarget* dst)          LLGLSLShader& shader = psky->getReflectionProbeAmbiance(should_auto_adjust) == 0.f ? gLegacyPostGammaCorrectProgram :              gDeferredPostGammaCorrectProgram; -        static LLCachedControl<F32> mp_hdr_boost(gSavedSettings, "MPHDRBoost", false);          static LLCachedControl<F32> mp_hdr_gamma(gSavedSettings, "MPHDRGamma", false);          if(mHDRDisplay) shader = gHDRGammaCorrectProgram; @@ -7654,12 +7653,9 @@ void LLPipeline::generateGlow(LLRenderTarget* src)  bool LLPipeline::applyCAS(LLRenderTarget* src, LLRenderTarget* dst)  { -    static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderCASSharpness", 0.4f);      LL_PROFILE_GPU_ZONE("cas"); -    if (cas_sharpness == 0.0f || !gCASProgram.isComplete() || !gCASLegacyGammaProgram.isComplete()) -    { -        return false; -    } + +    static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderCASSharpness", 0.0f);      LLGLSLShader* sharpen_shader = &gCASProgram;      static LLCachedControl<bool> should_auto_adjust(gSavedSettings, "RenderSkyAutoAdjustLegacy", false); @@ -8378,46 +8374,37 @@ void LLPipeline::renderFinalize()      static LLCachedControl<bool> has_hdr(gSavedSettings, "RenderHDREnabled", true);      bool hdr = gGLManager.mGLVersion > 4.05f && has_hdr(); -    U16 activeRT = 0; +    bool apply_cas = false; +    static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderCASSharpness", 0.0f); +    if (cas_sharpness > 0.0f && gCASProgram.isComplete() && gCASLegacyGammaProgram.isComplete() && !mHDRDisplay) apply_cas = true; -    LLRenderTarget* postHDRTarget = &mRT->screen; +    U16 activeRT = 0; -    if (hdr) +    if (hdr && !mHDRDisplay)      {          copyScreenSpaceReflections(&mRT->screen, &mSceneMap); -        if(!mHDRDisplay) -        {          generateLuminance(&mRT->screen, &mLuminanceMap); -          generateExposure(&mLuminanceMap, &mExposureMap); -/* -        static LLCachedControl<F32> cas_sharpness(gSavedSettings, "RenderCASSharpness", 0.4f); -        bool apply_cas = cas_sharpness != 0.0f && gCASProgram.isComplete() && gCASLegacyGammaProgram.isComplete(); - -        tonemap(&mRT->screen, apply_cas ? &mRT->deferredLight : &mPostPingMap, !apply_cas); -          if (apply_cas)          { -            // Gamma Corrects -            applyCAS(&mRT->deferredLight, &mPostPingMap); -        } -*/ -              tonemap(&mRT->screen, &mRT->deferredLight, false); -            postHDRTarget = &mRT->deferredLight; +            applyCAS(&mRT->deferredLight, &mPostMaps[activeRT]); +        } +        else +        { +            tonemap(&mRT->screen, &mPostMaps[activeRT], true);          }      } -/*      else      { -        gammaCorrect(&mRT->screen, &mPostPingMap); +        if(mHDRDisplay) copyScreenSpaceReflections(&mRT->screen, &mSceneMap); +        gammaCorrect(&mRT->screen, &mPostMaps[activeRT]);      } -*/ -    gammaCorrect(postHDRTarget, &mPostMaps[1 - activeRT]); -    activeRT = 1 - activeRT; +    generateFXAABuffer(&mRT->screen); +    generateSMAABuffers(&mRT->screen);      generateGlow(&mPostMaps[activeRT]); @@ -8429,61 +8416,17 @@ void LLPipeline::renderFinalize()          }      } -/*      LLVertexBuffer::unbind(); -    generateGlow(&mPostPingMap); - -    LLRenderTarget* sourceBuffer = &mPostPingMap; -    LLRenderTarget* targetBuffer = &mPostPongMap; - -    combineGlow(sourceBuffer, targetBuffer); -    std::swap(sourceBuffer, targetBuffer); -      gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;      gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;      gGLViewport[2] = gViewerWindow->getWorldViewRectRaw().getWidth();      gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();      glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]); -    if((RenderDepthOfFieldInEditMode || !LLToolMgr::getInstance()->inBuildMode()) && -        RenderDepthOfField && -        !gCubeSnapshot) -    { -        renderDoF(sourceBuffer, targetBuffer); -        std::swap(sourceBuffer, targetBuffer); -    } - -     if (RenderFSAAType == 1) -    { -        applyFXAA(sourceBuffer, targetBuffer); -        std::swap(sourceBuffer, targetBuffer); -    } -    else if (RenderFSAAType == 2) -    { -        generateSMAABuffers(sourceBuffer); -        applySMAA(sourceBuffer, targetBuffer); -        std::swap(sourceBuffer, targetBuffer); -    } -*/ -      combineGlow(&mPostMaps[activeRT], &mPostMaps[1 - activeRT]);      activeRT = 1 - activeRT; -    if(!mHDRDisplay) -    { -        //CAS breaks the hdr colors for now. -        if(applyCAS(&mPostMaps[activeRT], &mPostMaps[1 - activeRT])) -        { -            activeRT = 1 - activeRT; -        } -    } - -    { -        generateFXAABuffer(&mPostMaps[activeRT]); -        generateSMAABuffers(&mPostMaps[activeRT]); -    } -      if(renderDoF(&mPostMaps[activeRT], &mPostMaps[1 - activeRT]))      {          activeRT = 1 - activeRT; @@ -8566,12 +8509,6 @@ void LLPipeline::renderFinalize()      // Present the screen target. -    gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft; -    gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom; -    gGLViewport[2] = gViewerWindow->getWorldViewRectRaw().getWidth(); -    gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight(); -    glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]); -      gDeferredPostNoDoFNoiseProgram.bind(); // Add noise as part of final render to screen pass to avoid damaging other post effects      // Whatever is last in the above post processing chain should _always_ be rendered directly here.  If not, expect problems. @@ -8648,15 +8585,18 @@ void LLPipeline::bindShadowMaps(LLGLSLShader& shader)      LOG_GLERROR("bindShadowMaps() 2"); -    for (U32 i = 4; i < 6; i++) +    if(RenderShadowDetail > 1)      { -        S32 channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0 + i); -        if (channel > -1) +        for (U32 i = 4; i < 6; i++)          { -            LLRenderTarget* shadow_target = getSpotShadowTarget(i - 4); -            if (shadow_target) +            S32 channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0 + i); +            if (channel > -1)              { -                gGL.getTexUnit(channel)->bind(shadow_target, true); +                LLRenderTarget* shadow_target = getSpotShadowTarget(i - 4); +                if (shadow_target) +                { +                    gGL.getTexUnit(channel)->bind(shadow_target, true); +                }              }          }      } @@ -8988,7 +8928,7 @@ void LLPipeline::renderDeferredLighting()          tc_moon = mat * tc_moon;          mTransformedMoonDir.set(tc_moon); -        if ((RenderDeferredSSAO && !gCubeSnapshot) || (RenderShadowDetail > 0 && RenderShadowDetail < 4)) +        if ((RenderDeferredSSAO && !gCubeSnapshot) || (!gCubeSnapshot && RenderShadowDetail > 0 && RenderShadowDetail < 4))          {              LL_PROFILE_GPU_ZONE("sun program");              deferred_light_target->bindTarget("sun_shader", 1); diff --git a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml index ec6e7dac24..0e37472990 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml @@ -29,13 +29,13 @@      decimal_digits="0"      follows="left|top"      height="16" -    increment="32" -    initial_value="160" +    increment="8" +    initial_value="128"      label="Draw distance:"      label_width="185"      layout="topleft"      left="30" -    min_val="32" +    min_val="8"      max_val="512"      name="DrawDistance"      top_delta="16" diff --git a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml index ece9bb2552..a412543251 100644 --- a/indra/newview/skins/default/xui/en/panel_performance_preferences.xml +++ b/indra/newview/skins/default/xui/en/panel_performance_preferences.xml @@ -209,11 +209,11 @@      follows="left|top"      top_delta="-1"      height="16" -    increment="16" +    increment="8"      initial_value="128"      label_width="90"      layout="topleft" -    min_val="32" +    min_val="8"      max_val="512"      name="draw_distance"      left_pad="5" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index ec4fede090..c78575cf82 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -207,13 +207,13 @@      decimal_digits="0"      follows="left|top"      height="16" -    increment="32" -    initial_value="160" +    increment="8" +    initial_value="128"      label="Draw distance:"      label_width="187"      layout="topleft"      left="30" -    min_val="32" +    min_val="8"      max_val="512"      name="DrawDistance"      top_delta="40" @@ -346,8 +346,8 @@      name="IndirectMaxNonImpostorsText"      width="65">        0 -  </text>  -     +  </text> +    <button      height="23"      label="Exceptions..." diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml index 2fcdf2a546..5a35d682ae 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml @@ -505,9 +505,9 @@ height="16"  left_delta="150"  top_delta="-1"  increment="0.5" -initial_value="1.5" +initial_value="2.0"  min_val="1.0" -max_val="6.0" +max_val="8.0"  label_width="2"  >  </slider> @@ -1996,7 +1996,7 @@ top_delta="-2"  <icon  name="mp_lowcolor_info_bullet" -tool_tip="Sets the internal color resolution. Influences the speed or quality. Set this to high if you want to use HDR Display." +tool_tip="Sets the internal color resolution. Influences the speed or quality."  image_name="mp_info_bullet"  follows="left|top"  width="16" @@ -2163,7 +2163,7 @@ top_delta="0"  <check_box  name="MPAppleVBModeCtrl"  control_name="MPVertexBufferMode" -label="Alternative Vertex Buffer Mode (needs restart)" +label="Alternative Vertex Buffer Mode (Mac only / needs restart)"  layout="topleft"  width="400"  height="16"  | 
