Skip to content

Louvre v1.2.0-2

Compare
Choose a tag to compare
@ehopperdietzel ehopperdietzel released this 13 Feb 19:59
· 19 commits to main since this release
09f8ee8

Louvre (1.2.0-2)

New Protocols

New Features

  • LOutput now supports fractional scales with optional oversampling to reduce aliasing artifacts when necessary.
  • Added VSync disabling capability in LOutput with optional refresh rate limits.
  • LOutput now supports custom gamma correction curves through LOutput::setGamma() and the new LGammaTable class.
  • LPainter has new methods for rendering texture regions with higher precision and applied transforms.
  • LTextureView now supports custom source rects and transforms, see LTextureView::setSrcRect() and LTextureView::setTransform().
  • Introduced LBitset class to reduce memory usage for storing binary conditions.
  • Introduced isKeySymbolPressed() to LKeyboard, allowing querying the state of key symbols instead of raw key codes.

Minor API Changes

  • Replaced most of the non-order-dependent lists with vectors to minimize cache misses.
  • LOutput setBufferDamage() now takes LRegion * as an argument instead of LRegion &.
  • Updated all virtual constructor parameters in LCompositor to const void *.
  • Removed the create() method in LAnimation and LTimer, replaced with class constructors for stack allocation.
  • Replaced LView's paintRect() event with paintEvent().

Graphic Backend

  • The graphic backend modules API has been refactored with a cleaner and more efficient API (this does not affect Louvre public API).

Input Backend

  • The Caps Lock key LED is now automatically toggled based on the state of the keyboard modifiers.

Bug Fixes

  • Resolved a bug causing the compositor to respond to multiple frame callbacks when a client sent multiple frames before waiting for a reply, thanks to @yurikhan for identifying and reporting it.

Examples

  • The louvre-views example now uses a single texture atlas for UI elements instead of individual images.
  • Transitioned most heap-allocated objects to stack allocation.
  • Workspace switching and fullscreen transition animations have undergone optimization, resulting in a smoother visual experience.
  • Added new shortcuts for changing the output transform, scale, mode, and toggling VSync.

Building

  • Updated C++ standard to version 20.
  • SRM dependency now requires version 0.5.2 or later.

Documentation

  • Rewrote most of the tutorial for clearer explanations and code.
  • Created a new repo containing the code of the final result after completing the tutorial.
  • Expanded the tutorial with new chapters on gamma correction, fractional scaling, and VSync.
  • Remove white spaces from code, thanks to @zlice.

-- Eduardo Hopperdietzel ehopperdietzel@gmail.com Tue, 13 Feb 2024 13:28:39 -0300