diff --git a/osu.Game.Rulesets.Osu/Skinning/Default/DrawableSliderPath.cs b/osu.Game.Rulesets.Osu/Skinning/Default/DrawableSliderPath.cs index 6f41d33c3d39..b2794720c4ff 100644 --- a/osu.Game.Rulesets.Osu/Skinning/Default/DrawableSliderPath.cs +++ b/osu.Game.Rulesets.Osu/Skinning/Default/DrawableSliderPath.cs @@ -2,11 +2,12 @@ // See the LICENCE file in the repository root for full licence text. using osu.Framework.Graphics.Lines; +using osuTK; using osuTK.Graphics; namespace osu.Game.Rulesets.Osu.Skinning.Default { - public abstract partial class DrawableSliderPath : SmoothPath + public abstract partial class DrawableSliderPath : BackdropBlurPath { public const float BORDER_PORTION = 0.128f; public const float GRADIENT_PORTION = 1 - BORDER_PORTION; @@ -14,6 +15,11 @@ public abstract partial class DrawableSliderPath : SmoothPath private const float border_max_size = 8f; private const float border_min_size = 0f; + protected DrawableSliderPath() + { + EffectBufferScale = new Vector2(0.25f); + } + private Color4 borderColour = Color4.White; public Color4 BorderColour diff --git a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs index ef616ae96462..89aadf3f07a4 100644 --- a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs +++ b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs @@ -74,6 +74,7 @@ private void load() { Anchor = Anchor.Centre, Origin = Anchor.Centre, + Alpha = priorityLookupPrefix == null ? 0.75f : 0.5f // TODO: this is kind of a dirty way to check if we're a hitcircle or a circle that's part of a slider. }, OverlayLayer = new Container { diff --git a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderBody.cs b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderBody.cs index b54bb44f9447..748bff419141 100644 --- a/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderBody.cs +++ b/osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderBody.cs @@ -7,6 +7,7 @@ using osu.Game.Rulesets.Osu.Skinning.Default; using osu.Game.Skinning; using osu.Game.Utils; +using osuTK; using osuTK.Graphics; namespace osu.Game.Rulesets.Osu.Skinning.Legacy @@ -18,11 +19,21 @@ public partial class LegacySliderBody : PlaySliderBody protected override Color4 GetBodyAccentColour(ISkinSource skin, Color4 hitObjectAccentColour) { // legacy skins use a constant value for slider track alpha, regardless of the source colour. - return base.GetBodyAccentColour(skin, hitObjectAccentColour).Opacity(0.7f); + return base.GetBodyAccentColour(skin, hitObjectAccentColour).Opacity(0.6f); } private partial class LegacyDrawableSliderPath : DrawableSliderPath { + public LegacyDrawableSliderPath() + { + BlurSigma = new Vector2(16f); + + BackdropTintStrength = 0.5f; + + // To prevent shadows from contributing to the background blur effect + MaskCutoff = 0.25f; + } + protected override Color4 ColourAt(float position) { // https://github.com/peppy/osu-stable-reference/blob/3ea48705eb67172c430371dcfc8a16a002ed0d3d/osu!/Graphics/Renderers/MmSliderRendererGL.cs#L99 diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs index dce24c6ee7e2..4c730bc37981 100644 --- a/osu.Game/OsuGame.cs +++ b/osu.Game/OsuGame.cs @@ -994,7 +994,11 @@ protected override void LoadComplete() Children = new Drawable[] { backReceptor = new ScreenFooter.BackReceptor(), - ScreenStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both }, + new RefCountedBackbufferProvider + { + RelativeSizeAxes = Axes.Both, + Child = ScreenStack = new OsuScreenStack { RelativeSizeAxes = Axes.Both } + }, BackButton = new BackButton(backReceptor) { Anchor = Anchor.BottomLeft,