Releases: ppy/osu-framework
2023.1004.2
What's Changed
Full Changelog: 2023.1004.1...2023.1004.2
2023.1004.1
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 obsoleteDecoupleableInterpolatingFramedClock
by @peppy in #6001 - Fix keyboard handler getting disabled on window creation failure by @peppy in #6005
- Fix
WaveformGraph
overhead whenDrawPosition
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
What's Changed
Full Changelog: 2023.922.0...2023.925.0
2023.922.0
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
- @yesseruser made their first contribution in #5989
Full Changelog: 2023.914.0...2023.922.0
2023.914.0
What's Changed
- Revert masking SSBO changes by @smoogipoo in #5990
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
What's Changed
- Fix masking broken with TexturedVertex3D by @smoogipoo in #5987
Full Changelog: 2023.904.0...2023.912.0
2023.904.0
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
- Free AVIOContext and IO buffer by @FreezyLemon in #5982
- Remove libavfilter where possible by @FreezyLemon in #5980
- Change behaviour of
Storage.Move
to overwrite existing by default by @peppy in #5984 - Fix crash on minimising from non-native fullscreen resolutions by @smoogipoo in #5983
- Update native libraries by @peppy in #5985
Full Changelog: 2023.823.0...2023.904.0
2023.823.0
What's Changed
- Add D3D11VA hwaccel type by @FreezyLemon in #5976
- VideoSprite: Test all supported containers, codecs by @FreezyLemon in #5977
- Add a cache busting mechanism to the shader compilation cache by @smoogipoo in #5978
- Remove now unnecessary blur shader workaround by @smoogipoo in #5979
Full Changelog: 2023.822.0...2023.823.0
2023.822.0
What's Changed
- Add DeltaDash to the list of projects using the framework by @minisbett in #5969
- Allow gravity in RigidBodySimulation to be adjustable by @hwabis in #5972
- Use SSBOs for bindless masking by @smoogipoo in #5952
- Use RectangleF for masking scissor by @smoogipoo in #5960
- Implement window flashing by @ItsShamed in #5970
- Bump Android target SDK version to 33 by @bdach in #5973
- Fix
KeyBindingContainer
propagating release events to removed drawables by @bdach in #5975
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 toScreenSpaceScissorArea
.MaskingRect
renamed toMaskingArea
ToScissorSpace
added. IfScreenSpaceScissorArea
truly represents a screen-space area, set this toMatrix3.Identity
, otherwise set it to convert vertex coordinate inputs to the appropriate coordinate space ofScreenSpaceScissorArea
.
New Contributors
- @minisbett made their first contribution in #5969
- @ItsShamed made their first contribution in #5970
Full Changelog: 2023.817.0...2023.822.0
2023.817.0
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