Skip to content

Releases: ppy/osu-framework

2023.1004.2

04 Oct 14:55
5600aba
Compare
Choose a tag to compare

What's Changed

  • Fix source clock not correctly getting started after a decoupled transition by @peppy in #6017

Full Changelog: 2023.1004.1...2023.1004.2

2023.1004.1

04 Oct 07:53
c59f38c
Compare
Choose a tag to compare

Breaking changes

DecoupleableInterpolatingFramedClock is obsoleted. Use DecouplingClock instead

See #6001 for more details on a migration path.

What's Changed

  • Add fluXis to project list by @flustix in #6003
  • Stop logging non-error output from OpenTabletDriver by @peppy in #6006
  • Add new DecouplingClock and obsolete DecoupleableInterpolatingFramedClock by @peppy in #6001
  • Fix keyboard handler getting disabled on window creation failure by @peppy in #6005
  • Fix WaveformGraph overhead when DrawPosition is changed by @peppy in #6009
  • Increase tolerance in decoupling framed clock tests by @bdach in #6011
  • Reduce FFmpeg binary size by @FreezyLemon in #5981
  • Update FFmpeg binaries by @github-actions in #6012
  • Disable linux video hardware acceleration for now by @peppy in #6015
  • Fix race condition in ThreadedTaskScheduler when adding tasks by @smoogipoo in #6014
  • Update FFmpeg binaries by @github-actions in #6016
  • Update nativelibs to latest version by @peppy in #6013

New Contributors

Full Changelog: 2023.925.0...2023.1004.1

2023.925.0

25 Sep 02:13
af39e7b
Compare
Choose a tag to compare

What's Changed

  • Bump SPIRV with plist versioning fix by @peppy in #6004

Full Changelog: 2023.922.0...2023.925.0

2023.922.0

21 Sep 16:25
2cb33d7
Compare
Choose a tag to compare

What's Changed

  • Allow testflight/app store links to be opened externally by @peppy in #5991
  • Tidy up InterpolatingFramedClock by @peppy in #5992
  • Fix OpenUrlExternally potentially crashing applications due to misconfigurations (and log errors instead) by @yesseruser in #5989
  • Remove local veldrid-spirv iOS native libraries by @frenzibyte in #5995
  • Avoid throwing exception when attempting to access WebRequest response in fail path by @peppy in #5998
  • Bump OpenTabletDriver to 0.6.3.0 by @X9VoiD in #5999
  • Don't block cut/copy platform actions on empty textbox selection by @peppy in #5997

New Contributors

Full Changelog: 2023.914.0...2023.922.0

2023.914.0

14 Sep 06:38
5307515
Compare
Choose a tag to compare

What's Changed

Breaking changes

Masking-related breaking changes from 2023.822.0 have been reverted

After pushing the SSBO masking changes to users, it turned out that the change was not an unambiguous performance win as originally hoped, and as such has been reverted for now in order to avoid diverting focus further away from more important concerns.

In response, framework consumers need to revert any and all changes incurred by the aforementioned release. It is advised to keep the changes around somewhere, however, as the SSBO concept may be revisited at a later date.

Full Changelog: 2023.912.0...2023.914.0

2023.912.0

11 Sep 18:21
3f83dc3
Compare
Choose a tag to compare

What's Changed

Full Changelog: 2023.904.0...2023.912.0

2023.904.0

05 Sep 06:39
fc5cd7e
Compare
Choose a tag to compare

Breaking Changes

Storage.Move() will overwrite file at target destination if present

Previously it would fail if a file already existed at the target destination. Overwriting is usually the preferred outcome.

What's Changed

Full Changelog: 2023.823.0...2023.904.0

2023.823.0

23 Aug 11:11
091a670
Compare
Choose a tag to compare

What's Changed

Full Changelog: 2023.822.0...2023.823.0

2023.822.0

22 Aug 03:34
036defa
Compare
Choose a tag to compare

What's Changed

Breaking changes

Maskable vertex input layout has changed

Vertices which want to use the built-in VertexShaderDescriptor.TEXTURE fragment shader, or the sh_Masking.h particle, will need to adjust the vertex input slightly:

+ #include "Internal/sh_MaskingInfo.h"

layout(location = 0) in vec2 m_Position;
+ layout(location = 1) in int m_MaskingIndex;

+ layout(location = 5) flat out int v_MaskingIndex;
+ layout(location = 6) out highp vec2 v_ScissorPosition;

void main(void)
{
+   InitMasking(m_MaskingIndex);

    // Transform from screen space to masking space.
-   highp vec3 maskingPos = g_ToMaskingSpace * vec3(m_Position, 1.0);
+   highp vec4 maskingPos = g_MaskingInfo.ToMaskingSpace * vec4(m_Position, 1.0, 0.0);
    v_MaskingPosition = maskingPos.xy / maskingPos.z;

+   // Transform from screen space to scissor space.
+   highp vec4 scissorPos = g_MaskingInfo.ToScissorSpace * vec4(m_Position, 1.0, 0.0);
+   v_ScissorPosition = scissorPos.xy / scissorPos.z;

+   v_MaskingIndex = m_MaskingIndex;

    gl_Position = g_ProjMatrix * vec4(m_Position, 1.0, 1.0);
}

Likewise, the C# definition must also be updated to write the m_MaskingIndex input, and be constructed with an IRenderer:

[StructLayout(LayoutKind.Sequential)]
public struct MyCustomVertex : IEquatable<MyCustomVertex>, IVertex
{
    [VertexMember(2, VertexAttribPointerType.Float)]
    public Vector2 Position;

+   [VertexMember(1, VertexAttribPointerType.Int)]
+   private readonly int maskingIndex;

+   public MyCustomVertex(IRenderer renderer)
+   {
+       this = default;
+       maskingIndex = renderer.CurrentMaskingIndex;
+   }

    public readonly bool Equals(MyCustomVertex other) =>
        Position.Equals(other.Position)
+       && maskingIndex == other.maskingIndex;
}

Non-masking fragment shaders must use non-masking vertex shaders

Any usages of VertexShaderDescriptor.TEXTURE_2 as a vertex shader in-combination with a non-masking fragment shader (i.e. one that does not use the built-in sh_Masking.h particle), should be updated to use VertexShaderDescriptor.TEXTURE_2_NO_MASKING instead.

IRenderer.PushScissorOffset()/IRenderer.PopScissorOffset() have been removed

The way masking applies scissor has changed such that this no longer has any use.

MaskingInfo layout has changed

  • ScreenSpaceAABB renamed to ScreenSpaceScissorArea.
  • MaskingRect renamed to MaskingArea
  • ToScissorSpace added. If ScreenSpaceScissorArea truly represents a screen-space area, set this to Matrix3.Identity, otherwise set it to convert vertex coordinate inputs to the appropriate coordinate space of ScreenSpaceScissorArea.

New Contributors

Full Changelog: 2023.817.0...2023.822.0

2023.817.0

17 Aug 07:11
55f4a81
Compare
Choose a tag to compare

What's Changed

  • Remove DepthWrappingVertex<T> by @smoogipoo in #5943
  • Add support for shader storage buffer objects (SSBOs) by @smoogipoo in #5950
  • Implement popover hinting by @bdach in #5967
  • Make KeyBindingContainer.Prioritised work for positional input too by @bdach in #5966

Breaking changes

TexturedVertex2D must be initialised with an IRenderer.

The default constructor for this type has been obsoleted and will now generate a compiler error.

Full Changelog: 2023.815.0...2023.817.0