1. Neos VR
  2. News

Neos VR News

2020.11.21.1319 - Cubemap session transfer fix, potential Reverb G2 finger fix

Small patch, mainly fixing cubemaps not transferring to other users within a session and broken fingers with HP Reverb G2 controllers (needs testing, I don't have the HW, so please let me know if fingers are still broken).

Compatible with previous build. If cubemaps are not transferring, make sure everyone has updated first!

[h2]Tweaks:[/h2]
- Merged Dutch locale updates and fixes by @Alex the insufferable avali 🐩

[h2]Bugfixes:[/h2]
- Fixed locally stored cubemaps (e.g. freshly made or imported) not transferring correctly over the P2P session (discovered by @Veer | Chief Moderation Officer)
- Potentially fixed broken skeletal model for HP Reverb G2 controllers (based on report by @Rue Shejn | Artist 3D, needs to be tested)
- Tweaked impulse breaking mechanism to compensate for world/server startup
-- This should help fix User Joined node breaking on headless startup and similar scenarios (reported by @Shadow Panther [RU/EN, UTC+3])

2020.11.18.630 - Full cubemap support, Cubemap Creator, HP Reverb G2 bindings

Proper cubemap support is finally here! You can now create cubemaps in Neos using the Cubemap Creator and use them for skyboxes or point light cookies, with more to come soon (e.g. Reflection Probes).

I have generalized and extended Neos' texture system, spanning from the cloud asset metadata/variant system to the native GPU texture uploads to support for this. This means that Cubemaps are now loaded highly efficiently as standard 2D textures, using less CPU and memory and being uploaded using time-slicing, so even huge cubemaps won't stall the main thread.

Cubemaps are now also block compressed, heavily reducing their VRAM usage. E.g. for RGB skybox the memory usage goes down by factor of 8 (BC1, BC6H for HDR), in other cases by 4 (BC3, BC7) and are loaded progressively by mipmaps - you'll see lower resolution versions load as soon as they're downloaded/compressed, same as other textures.

There are a bunch of other related and unrelated additions and updates as usual. Notably this build adds initial support for HP Reverb G2 controllers, but it's untested as I don't have the headset yet. The upgraded Unity version might also fix some video-playback related crashes.

[h2]New Features:[/h2]
- Implemented native sliced cubemap GPU upload through DirectX 11 and OpenGL API, significantly improving its performance and memory usage
-- This also reduces freezes when loading a large cubemap, as the GPU upload is sliced over several frames
- Asset variant system now fully supports Cubemap textures, with all the block compression formats and progressive mip map loading
-- Crunch compression isn't currently supported, variants will only us eLZMA
- Added "Cubemap Creator" wizard (can be spawned by Create New -> Editor -> Cubemap Creator) which allows creating cubemaps from 6 face textures
-- It's strongly recommended to use textures of same size (square and power of two) and type to get consistent results, but the creator will try to conform them
- StaticCubemap now exposes same properties as StaticTexture2D, except NormalMap, Crunch compression and Wrap models
-- This includes filtering options (point, billinear, trillinear and anisotropic) as well as variant/format selection
-- The shared properties have been unified under the hood, making the code simpler and easier to maintain, as well as fixing some issues
- Added system for procedural Cubemaps
- Added "CheckerboardCubemap" procedural cubemap, which features simple checkerboard pattern (configurable size) with adjustable colors for each face
- Added BooleanReferenceDriver (requested by @Toxic_Cookie)
- Added CubemapLOD field to Projection360, which allows sampling specific LOD of the cubemap
- Added initial support for HP Reverb G2 (currently untested) (requested and models provided by @Cyro)

[h2]Tweaks:[/h2]
- Memory/VRAM usage for textures in inspector and on Texture2DAssetMetadata now includes mipmaps if they're present
- Texture2DAssetMetadata now also reports if the texture has mipmaps and how many levels it has
- Optimized cloud asset variant computation to reduce frequency of computation queue extensions, reducing the load on the cloud server
- Upgraded to Unity 2019.4.15f1 (from 2019.4.14f1)
-- This might potentially fix some crashes with video playback, as this version fixes crash when video player is destroyed while still initializing
- Renamed "Full Body Calibrator" to "Full Body / Avatar Calibrator" (based on suggestion from @DeliriousJax)

- Merged Polish locale additions (including MTC 2.0 tutorial) by @art0007i
- Merged Japanese, Esperanto and Chinese locale additions by @Melnus
- Merged German locale addition by @Bluigi
- Merged Russian locale updates by @Shadow Panther [RU/EN, UTC+3]
- Merged Setup Guide imperial unit example fix by @ProbablePrime (reported by @Hayden (PolyLogiX Studio))

[h2]Bugfixes:[/h2]
- Fixed cloud server exceptions when trying to extend asset variant computation task that has been removed in the meanwhile by another process
- Fixed bitmap metadata computation taking longer than necessary by not correctly breaking out early
- Fixed texture 90° CW and CCW rotations being swapped (reported by @Shadow Panther [RU/EN, UTC+3] and @H3BO3)
- Fixed asset removal events not always being sent properly, resulting in some assets lingering after their provider is removed
- Fixed reversed cubemap projection for Projection360 shader
- Fixed red grabbable laser showing up for grabbables with active GrabBlock in their parent hierarchy (reported by @Alex from Alaska)
- Fixed incorrect cubemap mipmap level conversion from Unity cubemaps to Neos in the Unity SDK (will be in the next SDK release)
- Fixed Neos not requesting cloud to compute metadata for assets if the metadata does not exist
- Fixed assets that fail to load not incrementing the loaded asset count, causing the loading indicator to stick around indefinitely (reported by @Enverex)
- Fixed desktop ignoring DuplicateBlock component (reported by @ChrisWarner103 (DelVR))
- Fixed GrabBlock not working when placed directly on the object with Grabbable (based on report by @ChrisWarner103 (DelVR))
- Fixed exceptions with certain configurations of PreferredFormat and other settings on StaticTexture2D

Neos Festa: Creator Content Festival Event 12th December 2020 (Japan Event)

The Japanese community is welcoming all international members of NeosVR to participate in the second Content Creator Festival “Neos Festa”.

Utilizing the functions of NeosVR and the Neos Festa World, you will be able to showcase and distribute items and files within the Event world in your personal Booth! If you are not looking to exhibit any items, you are also welcome to check out the creations of the many others content creators of NeosVR.

In Part 2, we implemented a dynamic spawn system for more comfortable booth browsing.
Each booth exhibited is loaded individually at the time of browsing, providing a much more smoother world loading and experience.

Please see below for the detailed schedule and exhibition method.

[h2]Schedule[/h2]
  • Publication of submission rules until 11/20 (Friday)
  • 12/4 (Friday) First submission deadline
  • 12/5 (Sat) Spawn check of each booth
  • 12/9 (Wednesday) Final submission deadline
  • 12/12 (Sat) Opening


[h2]Exhibition application[/h2]
Please apply using this form.
The exhibition fee is free.

[h2]Streaming Schedule[/h2]
The opening of the Event will be livestreamed in English by the founder of Creator Jam, Medra, starting at 19pm PST (5am CEST) on the 12th of December 2020. You can watch at the Creator Jam Twitch channel.

[h2]Inquiries[/h2]
Contact us on the "#Questions" International channel on the Discord server.

2020.11.18.630 - AMD Compressonator integration - BC1/3 LZMA, BC6H, BC7 support

Significant improvements to the asset variant system with support for a bunch of new block compression formats thanks to the AMD Compressonator SDK integration!

For your existing BC1 and BC3 textures, you can now disable the Crunch compression to reduce some blocking artifacts, which will make the system compress the block compressed asset with LZMA (lossless). This will usually increase the download size of the texture, so use it only when needed.

Other formats are supported as well. Notably HDR textures are now block compressed with BC6H, cutting their VRAM usage by eight times (e.g. 16MB to 2MB for 2048x1024) - you can now use much higher resolution version HDR skyboxes while using less VRAM and this is an important step towards support for reflection probes as well.

You can also request textures to use more advanced BC7 format. It has same VRAM usage as BC3, but significantly higher compression quality, dealing better with visually complex textures, at the cost of taking longer to compute.

In other news, the intro tutorial is now skippable via a gesture and commandline argument, details below. A bunch of bugfixes and tweaks as well!

The MTC 2.0 is now also in Spanish and German thanks to our translators!

[h2]New Features:[/h2]
- Integrated AMD Compressonator SDK into Neos' codebase to significantly extend support for block compressed formats and allow for a higher quality compression - Neos now internally supports all BCn formats, ETC2 formats, all ASTC variants and potentially more in the future (e.g. ATC for WebGL)
-- Currently the generation of non-crunched variants is only supported on Windows. Linux headless won't be able to generate those variants and will have to rely on the cloud
-- Also note for BC6H and BC7 currently the requested quality is 60%, other formats use 100%, due to significantly higher processing time for any values above this (e.g. over 2 minutes for a single 2048x2048 texture with 100 % utilization on AMD Ryzen 5950X, but only about 9 seconds for 60%)

- Extended the asset variant system to support LZMA compressed variants for storage & transfer rather than crunch compression
-- You can disable crunch compression by unchecking CrunchCompressed on StaticTexture2D
-- This will reduce some blocking artifacts, as crunch is a lossy compression, at the cost of potentially increasing the download size (VRAM usage is exactly the same)
- Added new texture asset variants to the asset variant system. All currently supported variants are:
-- BC1_Crunched/LZMA - RGB only, 1:8 compression ratio vs RGBA32
-- BC3_Crunched/LZMA - RGBA, 1:4 compression ratio vs RGBA32
-- BC4_LZMA - R only, useful for single channel textures (usally requires shader to use properly)
-- BC6H_LZMA - Supports HDR textures, 1:8 compression ratio vs RGBAHalf
-- BC7_LZMA - RGBA, 1:4 compression ratio vs RGBA32, significantly higher compression quality vs BC3, much slower to compute, recommended for visually complex/colorful textures
-- ETC2_RGB_Crunched/LZMA - analogue of BC1, supported on Android
-- ETC2_RGBA8Crunches/LZMA - analogue of BC3, supported on Android
-- ASTC(block size)_LZMA - more modern replacement of BCn/ETC2 with varying quality (block sizes 4x4, 5x5, 6x6, 8x8, 10x10 and 12x12 are supported, each block is 128 bits)
--- Not supported by DirectX 11, should work on Android/Linux, but currently untested
--- Can achieve extremely high compression ratios (0.89 bits per pixel for 12x12), at same block size 4x4 has superior quality to BC3

- Extended Neos' bitmap/texture system to handle block-compressed formats with block sizes other than 4x4, as well as fractional bits per pixel rates
- Added "ForceExactVariant" to StaticTexture2D, which will force it to load specifically requested variant, without using a fallback version
-- This is STRONGLY recommended only for debugging/testing purposes. It's recommended to leave this unchecked and leave Neos to load fallback variant if the currently requested one is not available, otherwise you might be forcing every user to generate the variant locally on their computer
- Added PreferredFormat to StaticTexture2D, which allows overriding the preferred variant to load (e.g. BC7)
-- Note that this API will likely change in the future, but will be auto-upgraded
-- If variant is not supported on the system, it will never be loaded and closest supported variant will be used instead
-- Please note that requesting a new variant of the asset might take a while to load, as it will be queued in the cloud. It can take even several hours. Neos will use best available variant in the meanwhile.
- You can now skip the intro tutorial (based on feedback by Moorekun, @DeliriousJax, @Turk, @ohzee, @ProbablePrime and @Shadow Panther [RU/EN, UTC+3])
-- Pass -SkipIntroTutorial to Neos on startup, which will prevent the intro tutorial from starting
-- Same option was added to Neos launcher as well as persistent
-- You can also skip the tutorial by enabling Edit mode while at the "Welcome" screen (suggested by @Alex from Alaska)

[h2]Tweaks:[/h2]
- HDR textures will now load BC6H block compressed texture variants by default, reducing VRAM usage for those textures by factor of 8 (e.g. 16 MB to 2 MB, which is why those will be crucial for reflection probes later on)
- Removed grabbed object contextual tutorial as this is now taught in MTC. Contextual tutorials for tools are still present (based on request by @Nexulan | Community Manager)
- Added support for color type to the SmoothValue component (requested by @Coffee | Programmer)
- Increased the size of the credits section for language selection
- Texture2DAssetMetadata will now continually update when the texture asset is in partial load state, to keep showing the latest info, rather than getting stuck until the load is fully finished
- Optimized cloud asset variant generation to skip regenerating variants in a variant chain, if they have already been generated (e.g. by previous failed task or request for lower mip levels)
- Texture2DAssetMetadata now also reports the exact variant that was loaded, which is shown in the inspector for StaticTexture2D as well
- Graphical Neos and headless log file naming is now same and consistent (requested by @Shadow Panther [RU/EN, UTC+3])

- Merged Spanish locale additions (including MTC 2.0) by @Ruzert
- Merged German locale additions (including MTC 2.0) by @Bluigi
- Merged Korean locale fixes by @MirPASEC
- Merged English MTC 2.0 locale tweaks by @Coffee | Programmer

[h2]Bugfixes:[/h2]
- Fixed server status fetching causing background exceptions in some cases
- Fixed asset variant system loading completely incorrect variants in some cases, when the exact requested variant isn't available
- Fixed requests for exact variants of texture getting ignored and not forcing the variant to reload if one is already loaded, but using a fallback
- Contextual tutorial now ignores tooltip multiplexer, fixing excessive lagging (reported by @3x1t_5tyl3 and @Shifty | Quality Control Lead)
- Fixed Stopwatch node reseting itself every time the Start is pulsed, rather than resuming (reported by @Coffee | Programmer)
-- Note some internal handling of playback for "infinite" playback was changed, so NormalizePosition for such clips is always -1 to indicate that it's not valid/applicable. There are possible sideeffects and glitches to this, keep a lookout, but things seem to be good from testing
- Fixed Tooltips generating LocaleStringDrivers on each load (reported by @3x1t_5tyl3 and @Alex from Alaska)
- Fixed LocalePostprocessor not handling extra keys in locales properly, resulting in percentages over 100 % and negative numbers of missing keys
- Fixed Setup Guide screen not using localized versions of the "Primary Controller" label (reported by @Bluigi)

Redesigned new user experience & intro tutorial - Metaverse Training Center 2.0

Hello and welcome to another weekly update!

This week we have good news mainly for all the new users coming into Neos VR as we have finally overhauled and extended the introductory experience to Neos, to make sure everyone has their basics setup and knows how to navigate Neos.

There have been improvements on a few fronts, including a new setup guide, which then leads to the redesigned MTC (Metaverse Training Center) with a simple interactive tutorial that walks through the basic controls and interactions in Neos VR.



[h2]Setup Guide[/h2]
Starting a few updates ago, any new user will be now welcomed by a new setup guide on their dash, which walks them step by step through some basics, ensuring that Neos is in the right language, the correct audio input device is selected, some crucial settings are set and ideally registers an account before continuing.

Once the user finishes the setup, they’ll be offered a choice between starting the intro tutorial as public world or as a private. Making it public will allow community members to join and help them out. We wanted to make that choice ultimately up to the user and what they’re more comfortable with, as we have received many reports of users getting startled when others have joined their sessions unexpectedly.

[previewyoutube][/previewyoutube]

Some of the existing flows were improved as well to make the process simpler, for example the registration process will now automatically login the user after they click on the verification link, rather than requiring them to type their credentials again.

During the intro tutorial, closing the dash or switching to another screen is also disabled, to ensure that new users don't accidentally get lost before completing the tutorial.

If you'd like to try out the new setup guide yourself, you can force it to start by passing -ForceIntroTutorial to Neos on startup or using similarly named option in the Neos Launcher.

[h2]New MTC with intro tutorial[/h2]
The meat of the new user experience is in a brand new MTC 2.0 hub (Metaverse Training Center), which now features an UIX based interactive guide that walks the user through basic controls and interfaces of Neos.

We have redesigned the look and feel of the MTC as well, to make it more open and inviting, with the new design having more out-door lighting, water and plants, combining with the futuristic architecture design.

[previewyoutube][/previewyoutube]

Currently only the main hub is redesigned, with the Avatar, Creation and Recording/Streaming rooms still using the old design, but they will also be redesigned one by one.

Thanks to all the additions, improvements to Neos as well as new experience since the first MTC, building the new version was much simpler and more flexible. Making the main tutorial based on UIX rather than static textures provides several benefits as well. It makes it much easier for us to update as we continue to overhaul more of the UI’s and makes it localizable.



Not even a day after its release, the new starter tutorial is already available in Japanese, Esperanto, Chinese, Korean, Czech and Russian, making Neos more accessible to many non-English speaking members. Thank you everyone for translating!



Much of our team has come together to build this new experience, from direction, art design, video editing, scripting, world building and sound effects and we had a few community members help out as well, notably Ryuvi and Earthmark, with many other members providing feedback.

Even after release the experience is open to suggestions and feedback, you can leave them at our official Discord or at GitHub.

Our goal is to make Neos a lot more comfortable to new users and remove a lot of the common initial frustrations and problems that new users encounter. Knowing what users get stuck on or what frustrates them can help us a lot to smooth those issues out over time and help the community grow!

[h2]New Audio Input Selection[/h2]
As part of the new experience, we also built some new UI’s to make certain common tasks easier. One of them is a new easier way to switch the active audio device, which now lists all the available devices and shows a live waveform and volume from the currently selected one, utilizing the waveform procedural mesh that was recently added.

It also features a quick way to check the microphone by playing the audio back to the user, allowing to easily verify if the selected audio device is correct one or not or if there are any issues with the sound.

You can access the new selection through Settings screen at the original location of the audio switching. It’s also part of the new Setup Guide in the dash, making sure new users start with the correct audio device.

[h2]New Language Selection[/h2]
Similarly to audio devices, we have also built new proper UI for selecting Neos’ language. It will list all the currently available languages, rather than having to type a specific locale code to override the active one. Note that Neos will use system locale by default, so in most cases there shouldn’t be a need to change it in most cases.

Since many of our community members are continually putting effort into translating new strings to their languages, we have also added a list of credits for the currently selected languages (picked up from the list in the locale file itself), to make sure every contributor is properly credited for their efforts.

The language selection is also part of the new Setup Guide and can be accessed anytime in the Settings dialog. Looking at the list it’s impressive how many translators have sprung to get Neos translated into different languages, with 20 locales available!



[h2]Community highlights[/h2]
[h3]Charma’s breakdance[/h3]
We've seen an epic trend of VR Dancers utilizing Neos VR's fullbody tracking. Charma shows off their spectacular moves in this newly released Twitter video, check it out here!



[h3]School of fish simulation by thotgamma[/h3]
If you like playing with simulations in VR, you should check out the new “Boid Simulation” world by thotgamma, which simulates a school of fish that you can interact with.



[h3]Turtle Drawing VM by thotgamma[/h3]
Another very technically impressive creation by thotgamma is implementation of the classic turtle drawing algorithm. The implementation features a simple VM, which executes instructions, making a turtle move around and draw various shapes.



[h3]Oscilloscope Music visualization by June[/h3]
June, one of our newest Moderators, has created a fun way of showing off the power and precision of our new oscilloscope features. By connecting the oscilloscope with Jerobeam Fenderson's Oscilloscope Music, June was able to recreate the visuals that are created by Soundwave programmed into the music!



------------------------------------

Anyway this is all for now! We hope the new MTC experience will help out many new users and make it easier and less frustrating to get started in Neos. We still plan to rework many of the old UI’s in the future, which should make things more intuitive and with the new design, we can update the MTC much faster and easier, rather than it growing progressively more outdated.

We wouldn’t be able to put all of this together without you and your support and feedback and if you know of anything that could make Neos easier to use for new users, please let us know! Even if we cannot address certain issues right away, we put them on our long term roadmap when redesigning many of the new systems.

Thanks again and see you at the next update!