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.
- 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 <font="Font Name"> </font> tags, which allows using different font for a section of the text. This requires those fonts to be supplied in the FontCollection
Added <sprite=index> or <glyph=index> tag for rich text, allowing to select a specific glyph ID from a font file
- Categorized LogixTip corretly (based on report by @DeliriousJax)
- 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