Release Notes:

From NeosVR Wiki
Jump to navigation Jump to search

A new semi-major version thanks to a major rewrite to one of the ugliest parts of Neos' codebase. This also significantly improves performance and opens door for more shaders to be easily added, and bringing custom shader support closer!


- Rewrote the whole material update system and all of the material managers. This provides several benefits:

-- Better overall performance when updating materials (loading or animated ones), using pre-fetched property indexes instead of strings

-- Better performance when updating materials, as only changed properties get submitted to the runtime, rather than all of them (this provides about 4-5x speedup for asset integrator in worlds with animated materials)

-- Better performance with high volume of updates, not scheduling new update until the last one is finished (causing lots of duplicate work to pool)

-- More elegant code, reducing amount of bugs and development time for adding new shaders and paving way for custom shader support in the future. I'll be adding more new shaders until then

-- Less memory use due to fewer objects and messages being involved

-- Fixed some incorrectly updated properties or duplicate updates

IMPORTANT: It's possible some properties of materials broke because of this. If you notice material not behaving as it was before, let me know.

New features:

- PlayOneShot (both node and API function) now supports two new arguments:

-- ParentUnderRoot (will parent the sound effect so it moves with the root)

-- LocalOnly (sound will only play for the user who triggered the impulse)

- Added "Jump To User" permission to LocomotionPermissions compoment, which allows disabling the "Jump" button in the Session dialog (for Bom "Bitman" bomb )


- Added extra timing information into the debug dialog for core engine update stages

- Added memory pooling to material updates, which should help reduce overall memory usage

- Hidden ReferenceRegister<T> from the Logix node listing for now

- Tweaked Grabbable so it searches for reparent block until a component search block, rather than all the way up to the hierarchy

- Tweaked FriendLink so it only responds to remote touches (pressing trigger)


- Fixed exception in world browser when the thumbnail URL is null

- Added exception guard for FireWhileTrue, which will prevent the node from getting disabled in case there's an error (discovered in log from Bom "Bitman" bomb)

- Added exception guard for avatar object slot PreEquip, Equip and Dequip events, which should also prevent errors in these from affecting things higher up (discovered in the same log)

- Fixed exception in whisper sphere visual, when the AudioOutput is gone (discovered in log from @0utsider )

- Fixed a rare exception when trying to get a gizmo for a worker which would have unavailable slot (same log)

- Added exception guard for trying to spawn invalid Logix node type (same log)

- Fixed stack overflow (resulting in whole Neos crashing) due to not checking cast Logix nodes for infinite loops (found by @0utsider )

- Fixed size of the whisper sphere for differently scaled avatars

- Fixed whisper sphere range check for quieting down voices outside of it

- Fixed continuously growing memory allocations for Autojoin, grinding the computer to halt after a running for a while (found thanks to stress test by @SHFR_H )

- Fixed broken Autojoin timeout, causing the client to join multiple times in some cases