Skip to content

v4.2.1.2485

Latest

Choose a tag to compare

@VaclavElias VaclavElias released this 27 Oct 13:58

We're excited to announce a new update to the Stride game engine, featuring numerous fixes and improvements across multiple areas. This release includes 55 commits and 244 file changes from 17 contributors since the last version, highlighting the amazing dedication and efforts of our community and contributors.

A huge thank you to all contributors, including the new contributors: @C0dingSteve, @MEEMexe, @ferafiks, @Kreblc3428, @Acissathar and @rmtttt.

Highlights

  • Graphics: Vulkan compute shader support by @johang88
    • Enabled compute shaders in the Vulkan backend. Shader compiler now generates GLSL compute shaders with compute intrinsics (e.g., gl_GlobalInvocationID, memory barriers), RWTexture/RWBuffer load/store, and std430 for non-constant buffers.
    • Added descriptor types: StorageImage, StorageTexelBuffer, StorageBuffer, with counts capped to device limits; added additional pixel formats.
  • UI: Gap support in layout panels by @laske185
    • Added gap spacing similar to CSS gap:
      • Grid/UniformGrid: ColumnGap, RowGap, LayerGap.
      • StackPanel: gap property.
  • Graphics: New Mesh read API
    • Adds a high-level API to efficiently read vertex and index buffers from meshes, handling varied vertex layouts and data types automatically.
  • Improvements to Bepu Physics:
    • Constraint impulse/force getters
      • Adds the ability to query the impulse and force applied by a given constraint. Enables behaviors like detaching overstressed constraints, tuning strengths dynamically, or driving strain-based audio/FX.
    • Raycast against a specific collider
      • Which, as its name implies, adds a way to raycast directly against a chosen collidable, ignoring others that may be in the way.
    • Contact handling refactor, child index lookup, impact force evaluation
      • Easier contact iteration, exposes pre-collision linear/angular velocities, provides an impact force evaluation helper, and reports compound child indices.
      • But introduces a breaking change, by replacing IContactEventHandler with IContactHandler to simplify and future-proof the contact API.
  • Major performance improvements:
    • UI performance: Avoid GPU stalls in batching
      • Ensures temporary buffers used by UI batching are only released on the next draw instead of directly after use, avoiding stalls caused by writing to those buffers while in flight. Reduces MapSubresource duration by ~98% per call, leading to a reduction of 1.96ms per frame in a UI-heavy scene.
    • Engine performance: Revert slow memcpy path
      • Restores MemoryCopy based fast path instead of Unsafe.CopyBlockUnaligned where safe, keeping unaligned copies for platforms that require it. Reducing CPU frame prep time by ~40% in a draw-call heavy scenes.

What's Changed

💥 Breaking Changes

  • fix: Bepu and InputSystem update order by @Eideren in #2848
  • fix: Refactor bepu contact management, support compound shape child index lookup and provide Impact Force evaluation to users by @Eideren in #2901

🧠 Core

🔧 Engineering

📦 Assets

  • fix: incorrect absolute trigger on FBX model import by @Doprez in #2875
  • fix: skinning matrix not getting applied on mesh normals of imported FBX by @rmtttt in #2925

🔨 Build

📄 Docs

🛠️ GameStudio

  • fix: Adjust target frameworks to only include available targets when creating new code library by @Acissathar in #2902
  • fix: Refactor IDEInfo to make Version optional #2900 by @Jklawreszuk in #2912
  • fix: No longer check IsPrimitiveType when nodePresenter.value is null to prevent crash when selecting multiple entities in GameStudio by @Acissathar in #2915

🎨 Graphics

  • fix: crash when resizing render window and at the same time creating textures in a background thread by @azeno in #2842
  • feat: Added compute shader support for vulkan by @johang88 in #2685
  • fix: OpenGL window resizing and GraphicsAdapter.Outputs not being properly populated by @ferafiks in #2845
  • perf: soft revert of the performance regressions introduced in #1469 by @Eideren in #2885
  • feat: Mesh API for index and vertex buffer reading by @Eideren in #2858

➗ Math

⚙️ Physics

  • feat: Bepu, raycast against collidable by @Eideren in #2861
  • chore: Rename _nativeIntertia to _nativeInertia by @C0dingSteve in #2847
  • fix: Bepu, normalize default servo settings across servo constraints by @Eideren in #2838
  • fix: removed double brackets in error log string by @MEEMexe in #2871
  • feat: Bepu, getter to retrieve the impulse and force applied by a given constraint by @Eideren in #2930

📚 Samples

🔄 Serialization

  • fix: Instantiate() behavior for Prefab and Entity references (#2914) by @tebjan in #2947

🖥️ UI

💪 Other Changes

New Contributors

Full Changelog: releases/4.2.1.2442...releases/4.2.1.2485