summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authormobserveur <mobserveur@gmail.com>2025-10-02 14:35:34 +0200
committermobserveur <mobserveur@gmail.com>2025-10-02 14:35:34 +0200
commit37bfe659ad0e4eaad4e3697f27947aaea4db8427 (patch)
treee0f1fe2993b9dd58054eaee58477ddd00e7db369 /indra
parent8aa2fe7bf74870780aa0f9ae49eea2e89287bced (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')
-rw-r--r--indra/llwindow/llopenglview-objc.mm7
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/MPHDRDisplayGammaF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/SMAA.glsl10
-rw-r--r--indra/newview/pipeline.cpp114
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_performance_preferences.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics3.xml8
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"