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 /indra | |
| 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)
Diffstat (limited to 'indra')
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" |
