1. Neos VR
  2. News

Neos VR News

0.8.19.29761 - Tweaks, improvements and bugfixes for the new Text Rendering

A bunch of bugfixes for the new text rendering system. More are coming!

[h2]Tweaks:[/h2]
- Switched default font weight to Medium from Regular to improve readability in VR
-- Based on feedback from @AlienInArea51 (MR-Alex) and @Anomalous
- tag for the new font rendering system now supports colors by names (e.g. , based on feedback from @Anomalous)

[h2]Bugfixes:[/h2]
- Fonts and FontSets are now referenced as assets rather than regular objects, preseving links to them when saving objects
-- This fixes text disappearing after saving items into the inventory or transfering them to another world (reported by @三田村綯夜 and @Ero)
- Fixed audio clips not loading correctly in some cases
- Fixed race condition breaking glyph rendering process when same glyph is enqueued for rendering after the render has already started
- Fixed TextRenderer not correctly respecting Enabled state, causing some text to be shown when it shouldn't be (e.g. in Neos text fields, reported by @ProbablePrime)
- Fixed up some font change propagation issues, resulting in fonts not being updated properly
- Fixed not being parsed correctly (e.g. , reported by @Zyro1331 | Need Help? Ask.)
- Fixed broken font on Export Dialog and other "physical Neos UI" elements (reported by @Danyy59)

0.8.19.37798 - New Text Rendering system, support for import TrueType font files

New semi-major release, the new text rendering system and support for font import is finally here! :smile: This has been one of the most complex subsystems to develop for Neos and one of the most significant, as this is a foundational block for the UI overhaul, as well as giving you more creative control, improving performance and supporting more languages!

Following this, I'll be working on a brand new UI framework (which should take significantly less time) using this font rendering as basis after which the UI/UX itself will be redesigned.

[h2]New features:[/h2]
- Added a brand new custom Neos text rendering system, replacing the old Unity one
-- This new system is heavily asynchronous and multi-threaded, utilizing multi-core systems and removing all lag when changing/generating lots of text
-- It uses a higher quality MSDF rendering method (old one uses SDF), preserving more detail and sharp edges in font
-- It supports dynamic glyph atlas generation on the fly, rather than a fixed pre-generated atlas, allowing for any glyphs from the font file to be displayed
-- Supports significantly more languages now, including Japanese, Chinese and Korean
-- Languages with complex text shaping rules and right-to-left writing aren't supported yet (e.g. Arabic)
-- This currently replaces the text rendering in TextRenderer, Text within UI canvas (e.g. inspectors, friends list) still uses old one. Will be replaced with new UI system

IMPORTANT: This upgrades all existing instances of TextRenderer. If you encounter anything breaking, DO NOT SAVE the world or item and report the issue. Some small visual differences are expected.

- Added support for importing Font asset files (TrueType/OpenType font formats are supported: .ttf, .ttc, .otf and .otc)
-- You can configure glyph size in atlas, signed distance field range and padding on the asset.
-- Increase the glyph size for fonts with think or small features to reduce artifacts
-- Neos now uses Noto Sans as its default font, replacing previous Liberation Sans

- Added TextUnlit material, which supports MSDF rendering and is used by the new text.
-- You can use this material fully standalone as well, it isn't technically tied to the text
-- It supports different blending modes, offsets and other material settings that the old FontMaterial didn't support
-- More font materials to come in the future!

- TextRenderer now uses regular Neos materials, rather than a specific FontMaterial asset and generates a regular mesh, fitting elegantly into Neos' pipeline
- Added "BoundsAlignment" property to TextRenderer, allowing to set alignment of the BoundsAlignment
- Separated "Align" into HorizontalAlign and Vertical Align for TextRenderer
- HorizontalAlign now supports "Justify" alignment
- Added FontChain component, which allow specifying a main font and a set of fallback fonts used for glyphs missing from the main one
- Added FontCollection component which allows specifying a collection of fonts
- Added tags, which allows using different font for a section of the text. This requires those fonts to be supplied in the FontCollection
- Added or tag for rich text, allowing to select a specific glyph ID from a font file

[h2]Tweaks:[/h2]
- Categorized LogixTip corretly (based on report by @DeliriousJax)

[h2]Bugfixes:[/h2]
- Fixed broken syncing of items/worlds loaded from the database (reported by @Alex from Alaska)
- Fixed TooltipMultiplexer not forwarding the circular menu items correctly (based on report by @DeliriousJax)
- Removed a bunch of old testing and debug components

0.8.18.40552 - Cache obfuscation, Tooltip Multiplexer, local-only data model...

Releasing some goodies today! Obfusaction of data cache, tooltip multiplexer, extensions to data model and more! I was hoping to have the new text rendering system ready today, but there are a few remaining glitches and things to work out and I'm getting dead tired. But it's definitely coming out tomorrow!

[h2]New features:[/h2]
- Added obfuscation for the asset cache, preventing users from easily finding the texture, mesh and other data (based on feedback by @フリック)
-- This only affects new assets, clear the cache first if you want to test this
- Added "TooltipMultiplexer" tooltip, which acts as a proxy for multiple tooltips (selected with an index from a list) (based on request by @DeliriousJax , @LeonClement , @Turk and @Medra)
- Expanded data model to support local-only hierarchy (parts of scene that aren't synchronized)
-- This is done by creating local Slots. Anything on/under those will not be synchronized
-- Any synchronized part of the data model cannot reference local parts, but the opposite is possible
-- This is currently mostly used internally and isn't accessible with LogiX yet (it's used by the new font system)
- Added "PersistentOverrides" to ValueUserOverride and ReferenceUserOverride to allow making the overrides non-persistent (based on feedback by @Hayden (PolyLogiX - ZyroDesign))
- Made some more improvements to internal moderation tools

[h2]Tweaks:[/h2]
- Optimized memory usage and some CPU time for slots, by not allocating children management structures until they're needed (saves memory and CPU on leaf slots)
- PlayOneShot now uses local slots when the sound is set to play only for local user
-- This makes local clips significantly more efficient and prevents some audio artifacts for other users (previously reported by @Coffee)
-- No changes are necessary for this to take effect
- Some small allocation optimizations
- Added ICommonMaterial interface to WireframeMaterial
- Added abuse protection to FocusWorld and OpenWorld node (based on feedback by @ProbablePrime)
- Prevented Login Dialog from being spawned outside of userspace (based on report by @Dante)



0.8.18.20173 - SimpleAvatarProtection improvements, device reliability fixes

Protection improvements for SimpleAvatarProtection, eye tracking and microphone reliability improvements, other bugfixes

[h2]Tweaks:[/h2]
- Added extra protections for the SimpleAvatarProtection, preventing extracting of meshes and materials in most cases
-- This still isn't designed to offer 100 % protection within Neos, but makes it significantly more difficult to extract the data. The license/object ID system will offer protection at asset level once implemented

[h2]Bugfixes:[/h2]
- Fixed EquipTooltip, GetTooltip and DequipTooltip nodes not working correctly (reported by @Parker and @Vigilabo)
- Fixed GetTooltip and DequipTooltip throwing an exception when the node is set to Unknown
- Fixed default snap distances being affected by the model scale when importing model as snappable (reported by @Medra)
- Fixed Vive Pro Eye tracking breaking when the headset is briefly disconnected, especially with wireless (reported by @Reactant and @FustyLugs)
-- Let me know if this fixes the issue completely. I'm pretty sure it should, but I don't have wireless to test
- Added audio input (microphone) reinitialization when the audio data stops coming (e.g. when the device is unplugged or wireless connection is lost, reported by @Reactant)



0.8.18.15786 - Locomotion grip teleport fix, Windows MR hand position fix, more

I think I finally fixed the grip teleporting issue! It was tricky to diagnose, but should be good now. Also improvements for hand position and interactions with Windows MR. A few more tweaks and changes too!

[h2]New Features:[/h2]
- Added TagFilter to GrabbableReceiverSurface (requested by @Hayden (PolyLogiX - ZyroDesign) and @Turk)

[h2]Tweaks:[/h2]
- Model exporter will now append texture type (Albedo, Normal, AO, Emissive...) to the texture file name (requested by @Business Lawyer)
- Changed the default hand offset for Windows MR controllers using new offsets calibrated by @Shifty
- Tweaked SteamVR input update sequencing, to reduce offset drifting
- Interactive Camera will now interpolate between achors by default

[h2]Bugfixes:[/h2]
- Fixed full body calibrator and dynamic bone hand colliders using the raw hand position rather than one with offset (discovered by @Shifty)
-- This makes the hand colliders positioned at actual hand for Windows MR controllers, rather than at the tip of the controller
- Fixed old character controller collision constraints from being applied when transitioning back from kinematic Model
-- This fixes random teleporting when releasing the locomotion gripping (reported by @Rukio and @Shifty)
- Fixed PBS Rim Metallic Emissive map not working correctly (reported by @Groxxy)