Repository navigation
What's Changed
Auto-generated; a maintainer may hand-edit.
🎮 Graphics & Rendering
- Direct3D 12 games no longer need Windows Developer Mode to use the Agility SDK. It now works on Windows 10, games ship it in a
D3D12folder next to the executable, and Game Studio loads it too (@xen2, #3627) - MSAA now works on Vulkan and Direct3D 12, and is no longer turned off on iOS (@xen2, #3552, #3636)
- Indirect draws and dispatches now work on Vulkan and Direct3D 12. New
Buffer.Argument.Newoverloads accept arguments written by compute shaders, andComputeEffectShadercan dispatch from an argument buffer (@xen2, #3620) - Added
CommandList.UnorderedAccessBarrier, andClearReadWritenow runs in the right order with the shader reads and writes around it. On Vulkan it can also clear buffers (@xen2, #3644, #3642) - On hybrid laptops, games now run on the discrete GPU instead of always picking the integrated one (@Nicogo1705, #3388)
- Voxel GI lights scenes again on Direct3D 12 and Vulkan, and no longer starts from leftover memory on Vulkan (@xen2, #3645, #3653, #3636)
- Fixed a crash in Vulkan games built with WinForms when their window is minimized (@icauro, #3548)
- Fixed several Vulkan rendering bugs:
the wrong start instance in instanced draws, buffer copies made inside a render pass, a crash creating pipelines for effects with no resources, and broken profiler labels. Pipelines are also bound once per change instead of before every draw (@xen2, #3613, #3614; @sasvdw, #3568; @Nicogo1705, #3562) - Fixed several Direct3D 12 bugs:
device removal on Intel Arc GPUs, depth-only pipeline states, MSAA resolve copies going the wrong way, and crashes from barriers on resources that were already disposed (@xen2, #3601, #3640; @Nicogo1705, #3557, #3560) - Fixed Direct3D 11 bugs:
per-instance vertex data lost its step rate, a resource could stay bound for reading while being written by a shader, and a possible crash when binding render targets (@xen2, #3613, #3623, #3633) - GPU profiling no longer throws in the first frame on Direct3D 11, and GPU queries are reset, read back and reused correctly on Vulkan and Direct3D 12 (@xen2, #3624)
- Temporary render targets and buffers are reused correctly, and their names are no longer wrong (@icauro, #3592)
- Opaque objects now draw in the same order on every run. Local reflections start from a clean history, and temporal anti-aliasing no longer depends on gather offsets (@xen2, #3553, #3552)
- Games keep the device's shader profile when none is set, and unload only the game systems whose content actually loaded (@sasvdw, #3566; @xen2, #3590)
- A
RenderOutputDescriptionbuilt from a short span no longer reads past it, and a typed unordered-access buffer below feature level 11_0 now fails with a clear error (@Nicogo1705, #3529, #3469)
🎨 Materials
- Transparent materials apply their alpha only once, on every lighting path, so they now look brighter than before (@xen2, #3612)
- The cel shading ramp uses a color's brightness and keeps its hue instead of reading only the red channel. The clear coat metal flakes normal map now uses its own settings (@xen2, #3612)
✨ Shaders
- A shader that implements an abstract method without
overridecompiles again, as it did in Stride 4.3, and now only gets a warning (@xen2, #3603) - The shader compiler now accepts much more HLSL code that used to fail or produce invalid shaders, including:
do-while loops, comma expressions, structs declared inside methods, struct members that are arrays, writing through swizzles (also asoutarguments), initializer lists for any numeric type, int/uint/bool matrices,lit(),Interlocked*on signed values and texture texels, and texture offsets that become constant after unrolling (@xen2, #3625, #3611, #3630, #3661, #3657, #3662, #3655) - Better support for structured and byte address buffers:
methods can take them as parameters, they getGetDimensionsandLoad, and buffers of matrices orfloat3use the same layout on Vulkan and Direct3D 12 as on Direct3D 11 (@xen2, #3658, #3659, #3607, #3635, #3646, #3650) - Many shader compile errors and warnings now say what is wrong and point to the right file, line and column. New warnings flag suspicious operator precedence the same way DXC does (@xen2, #3606, #3637, #3654, #3661, #3628, #3629, #3647, #3616)
- Fixed many cases that produced invalid shaders or wrong results. Examples are a
continueinside aswitch, methods used by two shader stages, 1D textures, geometry shaders,SV_PrimitiveIDread without a geometry shader, anddiscard;in effects (@xen2, #3657, #3658, #3663, #3643, #3617, #3608, #3602, #3604, #3605, #3615) - Effects, shader classes and materials are compiled again once after upgrading, to pick up these fixes (@xen2, #3611, #3615, #3643, #3650, #3658, #3662, #3663)
🧨 Physics
- Added debug rendering of contact points and normals, and fixed wireframe glitches on faces that cross the camera plane (@Nicogo1705, #3526, #3525)
MaxStepPerFramenow limits the steps per frame, and-1no longer freezes the simulation.BodyComponent.SetTargetPosenow reaches the target orientation in one step (@Nicogo1705, #3524, #3563)
🕹️ Engine & Input
- Input routing and text input no longer allocate memory for every event (@sasvdw, #3496)
EntityProcessor<,>no longer requires its component data to be a class (@ds5678, #3555)- Fixed errors when scripts are cancelled after the scheduler has shut down, and a possible crash in the update engine (@shahriariqbal, #3577; @xen2, 6d9ad58087)
📦 Content & Assets
- Assets from plugins are now upgraded for their own format versions, not only the engine's. An asset file with a YAML error now reports that error and where it is, instead of crashing (@xen2, #3535, #3649)
- Project upgrades back up files before they change anything, including bare
.sdpkgfiles, and also work for sessions opened without a solution (@xen2, #3585, #3586) - Packages resolve relative project paths, share the assemblies the editor ships, and find the native libraries next to them (@xen2, #3521, #3535)
- A scene with a video component no longer fails to build in the editor (@xen2, #3535)
🖥️ Editor / Game Studio
- Reloading game assemblies after a code change is much more reliable:
live objects and scene content are rebuilt, an asset that fails is reported without blocking the others, undo puts back the previous state, and prefab instances no longer get each change twice (@xen2, #3520, #3535, #3638, #3651) - The Asset errors panel can show all assets or only the selected ones, shows which asset each message belongs to, and updates without losing your selection. Thumbnail build errors and messages not tied to a single asset now appear there too (@xen2, #3591, #3648)
- The Output panel has a new Editor tab with the editor's warnings and errors (@xen2, #3591)
- Saving a
.csprojasks you to reload only once. Overlapping builds wait their turn, and the upgrade and reload questions are no longer hidden behind the progress window (@xen2, #3535, #3520, #3585) - Fixed editing multi-clip animation assets, sprite previews after their preview closes, missing error icons, and the main window after it is hidden and shown again (@icauro, #3567, #3531; @xen2, 6ed96ca16c, #3648)
- Updated translations, and the UI language is now applied correctly when translating (@Kryptos-FR, #3433)
🔧 Under the hood
- New graphics, shader and rendering tests, with steadier waits instead of fixed sleeps, and fixes for flaky Android and emulator test runs (@xen2, #3549, #3572, #3633; @Nicogo1705, #3561)
- Updated shader-translation and software-rendering dependencies, with a
spirv_to_dxilbuilt from the same code Stride ships (@xen2, #3574, #3609, #3610, #3656, #3663) - Nightly package builds of master and maintenance branches (@xen2, 878c0ea7e4)
- Improvements to the release-notes generator and the editor screenshot checks (@xen2, #3550, #3551)
- Code cleanups from analyzer fixes, and faster local development package setup (@ds5678, #3517, #3518; @xen2, #3523)
Full Changelog: releases/4.4.0...releases/4.4.1