1. Neos VR
  2. News

Neos VR News

2020.5.11.410 - Fixing a few bugs and regressions with lasers

A small patch, fixing a few bugs/regressions before I go to sleep so they don't stay there. Compatible with the last build.

[h2]Tweaks:[/h2]
- Added Neos user agent to the HTTP requets sent form HTTP GET/POST string nodes (requested by @Alex from Alaska)

[h2]Bugfixes:[/h2]
- Fixed normal map textures not being marked back as compressed (based on report by @H3BO3)
- Fixed tooltip snapping sometimes being prioritized over the context menu rather than the other way around
- Fixed laser passing through some objects when using tools
-- This should fix the tool placing on toolshelves reported by @Alex from Alaska

2020.5.10.1362 - Better quality normal map compression (DXTnm), tweaks, bugfixes

Another smallish build, but some important changes. We're now switching to BC3nm texture variant for normal maps, offering significantly higher normal map quality! Some normal maps might still be using the old one and need to be computed - you can check if they look like typical blue-ish ones (old) or new red-ish ones.

Also some more bugfixes for new laser system and other tweaks.

[h2]New Features:[/h2]
- Recompiled all shaders with normal map unpacking support and switched to BC3nm as the compression texture variant for normal maps in Neos (requested by @H3BO3 and @Enverex)
-- This provides significantly higher compressed normal map quality, by compressing each channel individually and reconstructing the third one on the fly in the shader
-- Note: The actual look of normal maps compressed with this method will change, they will be mostly red and transparent. This is normal! (pun intended)
- Added -ForceSRAnipal commandline argument, which forces the SR Anipal SDK to initialize for HTC eye and lip tracking, even if Vive Pro Eye is not present (requested by @Elektrospy)
- Reimplemented world overwrite functionality with the new context menu - simply hold a world orb and click on another world orb (that you can write permissions for) and it will offer overwrite option (requested by @Nexulan)

[h2]Tweaks:[/h2]
- Tweaked developer tooltip so it always prefers developer/building UI's, avoiding the laser from going through them
- Tweaked laser preferred hit search, to prefer touchable hits if they're within the initial collider penetration distance
-- This should make it easier to interact with UI's and buttons when using developer tooltip
-- This should also fix the pin button not being pressable with LogiX tip equipped (reported by @orange, @H3BO3 and @Shifty | Quality Control Lead)

[h2]Bugfixes:[/h2]
- Fixed missing steam_api.dll from the headless, making the Steam Networking Sockets not work with headless server (reported by @Shifty | Quality Control Lead)

Bug Hunting and You

Hello everyone! Welcome back to the Weekly Update! We've got a very important announcement from the head of our Bug Report Team, Shifty! They'll be going over our new bug reporting/suggestion/feedback process and how to post on our GitHub. This is in an effort to remove the hours of feedback that Frooxius has to respond to daily, so he can focus entirely on writing code for Neos.



[h2]Bug Reporting Process: GitHub[/h2]

Hey everyone, Shifty here. As many of you know (or hopefully do by now), I am the Neos Team member responsible for bug management. Today, I wish to run through a quick guide on how to effectively report issues that you encounter in Neos.

The three keys to a good issue report are as follows:
Clarity: Be sure to report the issue in a clear, and concise way.
Replicability: List a simplified series of steps required to replicate the issue.
Objectivity: Try to keep reports objective, and highlight the underlying issue first. Suggestions for how to resolve it are welcome, but should be secondary to identifying the issue.

To report issues, you will need a GitHub account, for which you can sign up for free at https://github.com/. Afterward, you will need to browse to our public issue board, found at https://github.com/Frooxius/NeosPublic/issues.

Once you are signed in, and on the issue board, please take a moment to search through the issue list to see if your issue has already been reported. You can scan through the issue titles, or search the list with some common terms associated to the issue:



If the issue has not already been reported, press the green "New issue" button, and fill out your issue report. If it does turn out to be a duplicate issue, don't worry, we will mark it as such, and link the original issue containing the report, or request.



A good report starts with a good title. Ideally you want to have a clear, and simple title that summarizes the issue. Details for replication of the issue, and specifics are best left for the body of the issue. The rest of your issue should highlight the steps required to recreate the issue, observations you've made about the issue including conditions under which the issue does or does not occur (if applicable), or any other details you believe will help make the issue easier for us to interpret, and fix.



Ideally, when collecting log files for a replication case, you will:
- Start Neos
- Create a new world, e.g. Basic Empty
- Replicate the issue by recreating it from only the bare minimum steps required
- Close Neos

As applicable, record any relevant footage, or take any screenshots you believe will help clarify the issue.

If the issue can't easily be replicated in a new world, or there are additional factors, feel free to attach a link to the URL for the world, or your footage/screenshots depicting the issue.

[h3]Collecting Logs:[/h3]
Neos logs can be found in the Neos installation directory. This is most easily accessed through Steam. Right click on Neos VR in your Steam library, and select Properties, then Local Files, then Browse Local Files. Here, you will find a Logs folder which contains logs named by build number, the date, and time of the log's creation. When submitting them, select the most recent logs which correspond to the session the issue occurred in.

Unity Player.log files can be found by pressing Windows Key + R and entering %USERPROFILE%\AppData\LocalLow\Solirax\NeosVR then OK. The Player.log is overwritten each time you launch Neos, so make sure to collect it right away after you encounter a crash, or bug. If you have launched Neos once since the issue occurred, the contents will be in the Player-prev.log file. If you've launched Neos twice or more since the issue occurred, the Player.log file will be gone as it will have been overwritten.

In the event that you crash, Neos will attempt to create crash logs, and memory dumps that are located in a Crashes folder found at %USERPROFILE%\AppData\Local\Temp\Solirax\NeosVR. Inside of the crashes folder are folders for each crash logged, and inside of each is an error.log file, a Player.log file, and a memory dump.

If they exist, submit the error.log, and Player.log file from the crash folder alongside the Neos log from your installation folder. Otherwise, just submit the Neos log, and the Player.log.

Logs can be submitted either directly attached to the GitHub issue, or directly to Shifty on Discord if privacy is a concern. Log files can contain sensitive information such as IP addresses, and details regarding what sessions you've joined, etc. Only provide logs to people you trust.

[h3]Alternative Channels To Report Issues:[/h3]
If you are uncertain if a behavior is a bug, or if you've made a strange observation, but can't replicate it, the #🐜bugs-and-feedback channel on our Discord is a great place to report it until you discover additional details, or replication steps prior to making a GitHub issue. Issues logged through Discord are liable to get forgotten if they aren't properly reported.

If you believe there is a security risk associated with an issue, and wish to report it privately, please DM Shifty your findings so that they may handle the issue.

It is planned to eventually allow bug reports from within Neos itself. For the time being, we appreciate your time, and effort to ensure that you follow proper bug reporting protocol so that we may best address your issues.

Thank you!
~ Shifty

[h2]Updates to Radiant UI laser system[/h2]
Since its release, the new laser system has received many updates and polish based on feedback. Its main parameters are now configurable, snapping behavior was improved and it was integrated with all of the new tools. The laser now also has a visual cursor that changes depending on the action!

With developer tooltip, the laser will now automatically pass through objects to reach gizmos, making the access easier while also giving you visual feedback.

The new context menus are now fully integrated as well. Together with the laser they render through other objects, letting you easily interact even if your avatar or an item obscures it and for items that were never properly setup with a laser it will no longer appear in an awkward position.

[h2]What’s Next?[/h2]
We’re now starting to work on the biggest part of the UI upgrade - the facet system and the new dash. First part of this is going to be technical - implementing the system for facets and their containers themselves. Once that’s done, we’ll quickly wrap the existing UI into the new system and start the transitioning period.

During the transition, the actual interfaces themselves will be redesigned and reworked. They will be split from the large monolithic facets into smaller pieces and redesigned to look and feel better and offer new functionality.

Over time we’ll transition all the core functionality and build new one, while gathering continuous feedback from you, the community, to help us to keep on track.

Thank you again for reading our Weekly Update, and a special thanks to Shifty for showing the community a better way to report bugs! And of course, we couldn't have known about all of these bugs on our own, so a huge thanks goes out to our community members who have been reporting them! We hope you guys have a great week, and have a ton of fun using Neos. Until next time!

2020.5.9.1126 - More bugfixes and tweaks for lasers, tooltips and more

More bugfixes and tweaks for new lasers, tool issues and some other recent additions and changes.

[h2]New Features:[/h2]
- Added "ButtonActionTrigger" component, which allows calling a function when a button is pressed/released
-- Old cameras are auto-updated with this system using heuristics, making the physical trigger functional again (previously reported by @Hayden (PolyLogiX - ZyroDesign))

[h2]Tweaks:[/h2]
- Exposed "Trigger()" delegate on InteractiveCamera through inspector, to allow it from being called with buttons events
- Developer tooltip will now also prefer inspectors together with gizmos over other objects, preventing the laser from going through them to reach a gizmo behind (based on report by @Jolzu Groxxy Zyar the Avali)

[h2]Bugfixes:[/h2]
- Disabled lasers on ParticleSpray tooltip (reported by @Shifty)
- Fixed TooltipMultiplexer not passing through laser classification methods to the target tooltip, causing the developer tooltip in multiplexer not go through objects to reach gizmos and tooltips to have green laser (reported by @Shifty and @GearBell)
- Fixed user joined/left events and world focused/saved events being called on objects that have been just destroyed, casuing exceptions (discovered in log from @Coffee)
- DelayWithValue will now set the value to null if it's an object that has been destroyed in the meanwhile to avoid attempts to access disposed parts of data model (discovered in log from @Coffee)
- Added guards against disposed nodes when walking LogiX node tree
-- This fixes LogiX node failing to pack nodes in some cases due to exception mid-packing and provides more diagnostic information in the future (reported and discovered from log by @Coffee)
- Added cleanups to internal data for LogiX inputs and outputs when disposing, to aid GC and prevent potential memory leaks and help discover invalid accesses
- Fixed new laser system not properly respecting the permission system (reported by @Shifty)
- Fixed the avatar clipping into the interactive camera in Smooth POV mode when moving (reported by @ProbablePrime and @LeonClement)
- Potentially fixed MeshRenderer becoming pink when the mesh data is updated (reported by @DeliriousJax through @Shifty)

2020.5.9.132 - BC3nm/DXTnm compression seeding, laser tweaks and bugfixes

Sorry for smaller build today, spent some time at the livestream. This build is first phase of adding new texture asset variant "BC3nm" (typically known as DXT5nm) designed specifically for normal maps. This remaps the first two channels into alpha and GB channels and compresses using BC3 with encoder settings more suitable for normal maps. This produces significantly higher normal maps and should get rid of the blocky artifacts.

You will still see the artifacts in this build, but all normal map textures are marked by materials and scheduled on the cloud to be computed. All Neos shaders also need to be recompiled to decode those normal maps, which will take at least 2 days. During this time a lot of them should already be compressed, so when we make the switch it'll be faster and you won't have to wait too much for stuff to load!

Also some more tweaks and bugfixes for the new laser system and scaling.

[h2]New Features:[/h2]
- Added new texture variant: BC3nm (DXT5nm) - normal map with Y packed into GB channels and X into A channel and the block compression using parameters more suitable for normal maps, offering higher detail and less compression artifacts
-- This isn't used by Neos yet, shaders need to be recompiled for this, but this allows the cloud to seed and precompute those variants in advance
- Added automatic marking of textures assigned as NormalMap in materials as normal maps to help prepare the system for a transition
- Added seeding of block compressed normal maps variants - any texture marked as normal map will now be compressed as BC3nm in the cluod
- Added "Decode As Normal Map" property to Unlit Material and UI Unlit Material, which will decode the texture color data as a normal map (can be used for visualization of packed normal maps)
- Added axisDeadZone configuration option to the Config.json, which allows setting deadzone for joystick/touchpad (based on issue by @RueShejn)

[h2]Tweaks:[/h2]
- Lowered the laser soft-pull activation threshold so they trigger before the click event with Oculus Touch controllers (based on report by @Shifty)
- When grabbing, the laser will now visually stick to the initial point on "indirect" grabbables - joints, sliders and so on, rather than the movement reference
- Updated youtube-dl to 2020.05.08 (based on report by @Lewi-bean | Audio Designer)

[h2]Bugfixes:[/h2]
- Fixed trigger locking up when using Oculus with SteamVR, making lasers not re-appear and preventing tools from working (reported by @guillefix, @Cyro, @Jeff07734, tested by @Shifty)
- Fixed incorrect tooltip check, causing avatars to not be equippable (reported by @ProbablePrime)
- Fixed texture compression not respecting threading limitation when the soure texture isn't in the right channel format
- Fixed the new passthrough laser search not returning the first found touchable when going through a collider
- Fixed regression where laser wouldn't penetrate through a collider in the userspace to find a touchable, causing some interactions with private UI to be unreliable
- Fixed laser activating with tools that don't use laser (based on report by @Coffee)
- Fixed not being able to use the "Reset Scale" option when scaled to a different size by external means with scaling disabled (reported by @Shifty)