Skip to content

Releases: bryanedds/Nu

Spine 2D integration plus various fixes!

24 Dec 00:00
Compare
Choose a tag to compare

The big hullaballoo this release is the integration of the Spine 2D animation system -

image

The only caveat with this integration is that it doesn't respect Nu's functional undo / redo system in some ways because it's inherently imperative and we haven't taken the time to figure out if or how we need to mitigate that in #922.

If you have an existing Nu project, you'll need to add this line to its .fsproj file -

<ProjectReference Include="..\..\Nu\Nu.Spine\Nu.Spine.csproj" />

...and if you wish to use the new Spine functionality, add the json and skel entries to your AssetGraph.nuag like so -

[[Assets Assets/Default [bmp png psd ttf skel json] [PsdToPng] [Render2d]]

...and atlas like so -

[Assets Assets/Default [nuentity nugroup tsx tmx atlas bin] [] []]]]]

...and finally, be sure to copy over the new Default assets files to your project's Assets/Default folder as described here -

https://github.com/bryanedds/Nu/wiki/Updating-User%E2%80%90Created-Project-Assets-on-Engine-Updates

Additional changes -

  • Quick font rendering regression on window resize fix.
  • Made font reload failure fatal due to inability to having to unconditional font deletion
  • Integrated Spine skeleton animation system.
  • Fixed unit tests.
  • Fixed unintended interaction with view manipulator when dragging 2D entities.

Full Changelog: v17.10.0...v17.11.0

(Finally) Implemented Run-Time Resolution Changes + Threading Fixes

18 Dec 22:25
Compare
Choose a tag to compare

So this got put off for quite a while, being implemented in bits and pieces over the years - #50

This was a pretty complicated thing to do given how much variation you can get between platforms and the fact that its representation requires the use of global mutable variables that just perfectly go against Nu's architectural thrust.

Additionally, recent stability issues due to the new SemaphoreSlim-based renderer threading model have been addressed by effectively going back to the old volatile flags + spin yields threading model. It may not make as optimal utilization of the OS's scheduling resources, but at least it does hang itself when the window is minimized or cause 'random' hangs in the Visual Studio debugger.

Finally, during the refactoring process that enabled fixing #50, a few constants were refactored, resulting in VirtualScalar being renamed to DisplayScalar in your program's App.config file.

Finally, we've exposed support for public discussion in this github repository, with which a discussion for this release will be provided in case of any comments or questions!

Full Changelog: v17.9.0...v17.10.0

ImGui update and fixes.

12 Dec 23:53
Compare
Choose a tag to compare

The bulk of this release revolves around updating ImGui to its latest version, thus enabling us to fix several ImGui-related issues.

If you have an existing Nu project, you'll need to do the following -

  1. Removed the existing Twizzle ImGui nuget packages from your project.
  2. Add the Twizzle.ImGui-Bundle.NET 1.91.5.1 nuget package to your project.
  3. Run the appropriate PropagateAssets script to update your default assets.
  4. Delete imgui.ini from your project's output folders.
  5. Optionally add gltf and glb to your Render3d assets and bin to the any assets like so -
[[Default
  [[Assets Assets/Default [bmp png psd ttf] [PsdToPng] [Render2d]]
   [Assets Assets/Default [jpg jpeg tga tif tiff dds] [ConvertToDds] [Render3d]]
   [Assets Assets/Default [cbm fbx gltf glb dae obj mtl glsl raw] [] [Render3d]]
   [Assets Assets/Default [wav ogg mp3] [] [Audio]]
   [Assets Assets/Default [nueffect nuscript csv] [] [Symbol]]
   [Assets Assets/Default [nuentity nugroup tsx tmx bin] [] []]]]]

See this wiki for more detail - https://github.com/bryanedds/Nu/wiki/Updating-User%E2%80%90Created-Project-Assets-on-Engine-Updates

Additional changes -

  • Fixed #915 [by using a frame-based texture id blacklist.]
  • Added height map-specific naming conventions for non-compression.
  • Better log reports when encountering mismatched terrain resolution images
  • Better doc comment for FeelerFacet.
  • Made Presence into a struct type for efficiency and got rid of its Type properties (which are now auto-available in F# via Is properties).
  • ImGui update.
  • Enabled mixed mode debugging for better ImGui debugging.
  • ImGui delta time population improvement.
  • ImGui layout clean-up.
  • Addressed #862
  • Fixed #854
  • Goes far enough to fix the primary issues with #815
  • Fixed #910
  • Fixed #892
  • Exposed ImGui debug log feature.
  • Implemented CastShadow property.
  • Exposed gltf support.
  • Clear log as menu and quick command in Gaia.
  • Implemented #888
  • Dummied out fix for #832 in order to partly solve #918

Implemented partial shadow caching and editor improvements + various fixes.

07 Dec 19:58
Compare
Choose a tag to compare

This release starts the process of developing toward that goal of Nu 2.0 - #319

The overall goal of Nu 2.0 is to get Nu up to the standard of a commercial game engine in terms of its rendering features and editor. The exception is the ongoing Vulkan renderer rewrites and shader graph / material editing tool, which are both happening on a separate but parallel work stream.

image

Here's full change list for this release -

  • Removed no longer needed copyright dates in source.
  • Quick fix for new renderer threading disallowing application close.
  • Using stronger typing in DataToken.
  • Added back Blaze Vector demo project.
  • Fixed bug when disabling DesireShadows in saved scene.
  • Fixed #893
  • Fixed thread locking bug.
  • Fixed #866
  • Increased SsaoIntensityDefault and SsaoSampleCountDefault.
  • Implemented shadow caching.
  • Increased default shadow textures and maps max.
  • Got view manipulator mostly working.
  • Fixed #911
  • Implemented #898
  • Added asset texture icons in gaia (images only).

Full Changelog: v17.7.0...v17.8.0

Physics Regression Fixes and .NET 9.0 Upgrade

24 Nov 18:46
Compare
Choose a tag to compare

We had a recent regression in the physics system that ended up breaking basic behavior in Terra Firma. This has been fixed. Additionally, we've upgraded to .NET 9, which has lowered GC pressure even further. Again, we're not surfacing any GC issues in .NET 9, but it's a continuing goal of the engine to reserve as much of the GC to abuse as possible to the user.

Additional changes -

  • Lowered ShadowDetailedResolutionScalar to something less crazy.
  • Fixed #897
  • Also relighting when light probe visibility changed.
  • Updated .NET dependencies.
  • Implemented #900
  • Froze some global collections.
  • Structified trivial effect types.
  • Made MMCC Game the default project.
  • Fixed #902
  • Partially addressed #901
  • Fixed runEmptyFrameThenCleanUp unit test.
  • Event object count reduction.

Full Changelog: v17.5.0...v17.7.0

Fixed optimization regressions.

17 Nov 18:47
Compare
Choose a tag to compare

Well, we flew a little too close to the sun and ended up introducing some regressions while optimizing. Here we've fixed those regressions, but GC pressure is back up some for the 3D animation system, so it's an overall victory - just not without battle scars :)

Full Changelog: v17.5.0...v17.6.0

Improved point light shadows and engine optimization.

17 Nov 18:51
Compare
Choose a tag to compare

We weren't happy with the first pass of the point light shadow rendering, so we reworked it to use PCF and it now looks a LOT better! Additionally, we dug in with a memory profiler and optimized away a lot of unnecessary allocations from the animation system and elsewhere. Finally, we're now exposing the new ImNui functionality via their own ImNui-specific dispatchers, similar to how MMCC has it's own dispatchers.

image

Additional changes -

  • Simplified Address and Relation definitions.
  • Making ImNui functionality available via their own dispatcher types
  • Made World.getEntities lazy to avoid excessive allocation in user code.
  • World.getEntityMounters lazy as well.
  • Multiline editing in Gaia stringized properties.
  • Changed Address and Relation semantics to reduce garbage generation.
  • Got rid of some GC pressure from model animation.
  • Stressing base metrics a bit more with full static model rendering.
  • Fixed allocations in GameTime.
  • Reduced material property allocation.
  • Using fast path for gui sprite rendering.
  • Using voption for metadata.
  • Removed absoluteness of sky box (3D entities do not use Absolute).
  • Using PCF for point light shadows.

Full Changelog: v17.4.0...17.5.0

Implemented Point Light Shadows

09 Nov 21:13
Compare
Choose a tag to compare

We kind of put off implementing these a bit too long, but they're here now! -

image

More detail -

image

This completes the implementation of our lighting shadow model.

Full Changelog: v17.3.0...v17.4.0

ImNui Optimization

03 Nov 16:30
Compare
Choose a tag to compare

We had some unexpected issues with ImNui's implementation leading to scalabililty and LOH thrashing issues. This release fixes them and makes ImNui even faster than MMCC!

Note that you will need to update your existing project's Prime nuget package to latest.

Full Changelog: v17.2.0...v17.3.0

Maintenance Release.

02 Nov 17:32
Compare
Choose a tag to compare