2022 TPVD meetings week #27

Village of Ahiru, April 2022 – blog post

The following notes were taken from the video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) of the Third-Party Viewer Developer (TPVD) meeting on Friday, July 8th, 2022 at 13:00  SLT.

Please note that this is a summary of the key topics discussed during the meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 0:08-2:30]

  • Maintenance Optimisations RC version 6.6.2.573065 issued on Thursday, July 7th, This viewer:
    • Incorporates the Build Copy / Paste capability (also found in the Copy / Paste Project viewer).
    • Assorted UI improvements / clean-up (e.g. such as with the Build Edit folder).
    • Apparently includes the ability to hide the World Map Legend
    • Is likely to be fast-tracked to release status “in the next couple of weeks”.

The rest of the current crop of official viewers remains as follows:

  • Release viewer: version 6.6.1.572458 – formerly the Maintenance M(akgeolli) RC viewer, promoted June 29th.
  • Release channel cohorts:
    • Nomayo Maintenance RC (Maintenance N) viewer, version 6.6.1.572179, June 1.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.571296, May 10.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.

General Viewer Notes

  • Following the promotion of the Maintenance Optimisation RC viewer, the focus will be on the Legacy Profile viewer to get that to RC status.
  • There are some crash-on-exit issues with the official viewer the Lab is attempting to fix.

RequestImage UDP Message

[Video: 2:50-4:44]

  • Since 2015, assets have been delivered to the viewer via HTTP using CDN capabilities.
  • However, the RequestImage UDP messaging capability for delivering textures has remained in place on the simulator, and it has been noted that some viewers continue to use it directly or as a fallback, requiring the simulator to carry out checks with the CDN service when textures cannot be found.
  • LL would like to completely remove all reliance on the simulator for texture fetching / checking, and have everything via HTTP and the viewer / asset system / CDN.
  • To this end the RequestImage message will be deprecated and removed “very soon”.
  • Viewer that us (or actually rely on) it are therefore asked to ensure they only use the HTTP route.
  • [Video: 6:55-7:24] Going forward, the simulator code will track deprecated messaging that TPVs may or may not be using, allowing LL to them TPV where such message paths are still being used and which have been earmarked for removal from the simulator.

In Brief

  • [Video 5:42-6:25] A bug introduced into one of the upload paths this week resulted in the CDN service delivering PNG data in place of JPEG2000 (primarily for profile pictures), which resulted in some viewers experiencing clogging of their texture processing pipes. This issue has now been fixed.
  • As a part of general discussions, Alexa Linden indicated she’d like to start reducing the time it takes for code contributions from TPVs and third-party developers to be integrated into the core SL viewer code. This includes receiving reminders about old code contributions that may have fallen by the wayside.

Mojo’s Wishlist Ideas

[Video: 8:21-pretty much to the end]

There are not currently project, by Mojo Linden continues to seek feedback on them.

  • He reiterated the idea mentioned at the week #27 CCUG meeting of using low-poly bakes to help “increase” visibility across Mainland regions to try an instil a greater sense of scale of the continents.
    • Mojo noted this could perhaps leverage the Map service in some manner (a problem being that the Map service currently doesn’t know about mesh geometry).
    • In raising the Map service, he also noted LL is also aware of the issues within that service that need to be addressed, and that this is really down to determining the optimum time to doe so, rather than having technical reasons why it cannot be improved.
  • He floated the idea of introducing some means of hidden surface removal, particularly for avatars to remove the need for alpha layers, etc., to hide body parts, the idea being to reduce the complexity of avatar rendering.
    • There are edge cases with this – such as an item of clothing with both an “outside” and “inside” texture (such as a lining on a jacket) – what happens to the “inside” texture, does it get culled?
  • He also floated the idea of fully baking the avatar’s appearance such that avatar and clothing are baked as one as a final step of changing appearance, reducing the overall render cost and complexity.
    • It is not clear if this would allow avatar appearance to be changed in “real time” or not (e.g. Sansar bakes avatars, but does so using a separate environment in which to modify an avatar’s appearance).
    • The fact that rigging can be variable between clothing and bodies, etc., might also need to be worked around, as baking would likely require committing to a single set of weights.
  • It is possible the use of baked avatars would allow for an alternative form of avatar impostor for use within large events with a lot of avatars in a single space, the bakes – whilst lower poly than would be the case in less-crowded environments – offering a better visual result than the current impostor system.
  • A lot of technical questions were through out by those at the meeting as to how LL see baked avatars, etc., “working”. However, as Mojo notes, he’s putting ideas forward to see if there is interest in pursuing them rather than presenting any actual projects; as such answers would be sought collaboratively if it were deemed something that should be looked at more formally / in-depth.

Date of Next Meeting

Friday, August 5th, 2022.

2022 TPVD meetings week #23: PBR materials; textures

Village of Ahiru, April 2022 – blog post

The following notes were taken from the video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) of the Third-Party Viewer Developer (TPVD) meeting on Friday, June 10th, 2022 at 13:00  SLT. These meetings are chaired by Vir Linden, and dates for them can be obtained from the SL Public Calendar.

Important: as from this meeting, the TPV Developer meeting has moved to a four-week schedule.

Please note that this is a summary of the key topics discussed during the meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 1:23-2:39]

There have been no viewer updates through the week, leaving the current list of public official viewers as:

  • Release viewer: version 6.6.0.571939 – formerly the Performance Improvements viewer, dated May 25th – no change.
  • Release channel cohorts (please see my notes on manually installing RC viewer versions if you wish to install any release candidate(s) yourself).
    • Nomayo Maintenance RC (Maintenance N) viewer, version 6.6.1.572179, June 1.
    • Makgeolli Maintenance RC viewer (Maintenance M) viewer, version 6.5.6.571575, May 12.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.571296, May 10.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Notes

  • The Performance Improvements viewer has had a couple of “significant issues” raised against it, which are being pulled into the Maintenance RC channels for resolution. One of these might be BUG-232200 (extreme mouse sensitivity based on DPI), although no specifics provided at the meeting.
  • The Legacy Profile project viewer (finally) looks like it may be getting some attention in the near future, in the hope it can move forward to RC status at some point.

Additional Materials Support / PBR

[Video: 2:58-5:28]

Summary

Note: please also refer to my recent (April / May) CCUG meeting summaries.

Two area of work are currently in progress.

  • One element of work is to provide “full” Physically Based Rendering (PBR) materials support utilising the glTF specification.
    • This work is currently focused on implementing a new materials asset type that will allow materials surfaces created utilising the PBR workflow to be imported to SL and then applied to their desired object face(s).
  • A parallel piece of work is adding sport to SL for reflection probes to update the generation of the environment maps (because the current cube mapping used by SL is limited and would not work will with PBR).

Current Progress

  • Simulator-side support for reflection probes is being added, together with updates to the EEP system in support of the changes. This work is being implemented so that (hopefully) viewers without the necessary rendering updates will not see any “breakages” to the environment as the simulator work progresses through Aditi to Agni.
    • These updates are currently on Aditi on the DRTSIM542 channel (Materials 1, Rumpus Room, Rumpus Room 2, Materials Adult).
  • LSL support for this work still TBD.
  • There is now a test version of the viewer for the materials work available through the SL Discord server #content-features channel.
  • A glTF importer will “hopefully be ready in the next week or so”, although it will be a work-in-progress,

Texture Rendering Improvements

[Video 5:30-18:15]

  •  There is a texture streaming overhaul in progress. This changes the number of threads used in texture decoding and how the decoding on the background threads is handled, and should see a noticeable improvement in texture rendering when available & incorporated into viewers.
    • This work will likely be available ahead of the materials work mentioned above, but it has not been determined if it will form a dedicated project / RC viewer or be folded into a Maintenance RC.
    • TPV developers who may have been working recently on the texture threads, may want to take note of this and listen to this portion of the video, given that a number of threads have been removed o eliminate conflicts.
  • Part of this work is focused on trying to get a “good honest answer” from the operating system running the viewer as to how much video memory is actually free for the viewer to use.
    • In general (and despite the VRAM slider) the official viewer typically uses between 512 MB and 2GB of video memory (when available on a system), but runs into trouble trying to balance using anything over 512 MB with the 512 MB “limit”, thus causing issues of texture thrashing.
    • This work will likely see the removal of said slider as well.
  • Once completed, these changes should see the viewer work more “cooperatively” with other applications running on a client system:
    • As video memory is required by other programs, to the viewer will relinquish it; as video memory becomes available, so the viewer will attempt to use it.
    • As video memory is relinquished, the viewer will attempt to “intelligently” unload textures – such as those in the background/occluded, those far away, etc., to reduce the amount of visible texture blurring / unblurring as textures are unloaded /reloaded.
  • This work will hopefully benefit the viewer across all operating systems, although there are issues around getting Mac OS to report the amount of free video memory, and AMD GPUs are also proving a little difficult in their reporting of memory use.
  • The structure being used for the Windows enquiries can be found here.

In Brief

  • [Video 22:50-27:52] Discussion on alpha masking on avatars / rigged mesh, including reports on some content with transparent rigged meshes appearing broken as a result of changes to the draw order.
    • A lot of the reported breakage appears to be the result of creators “cranking the handle” to achieve results, without actually fully understanding either what they are doing or how the viewer’s rendering system works.
    • The changes being made now are part of trying to make the draw order more logically consistent with a view “maybe someday” being able to explicitly set the ordering priority for the draw order.
  • [Video 28:11-36:00] Advanced Lighting Model (ALM) vs. non-ALM (aka “forward rendering”). LL are strongly leaning towards getting rid of the non-ALM rendering path, providing it can be shown that this does not adversely impact performance (e.g. ALM runs roughly as well as non-ALM for those using the latter) on the broad cross-section of hardware most commonly operated by SL users.
    • This may raise concerns among the minority on metered connections (as it will increase the amount of data crossing their network in handling materials, etc.), so consideration is being given to including a “data saving mode” into ALM that will prevent the sending for materials data.
    • Another problem is that of general education. A lot of people still think that enabling ALM means they “must” run with shadows enabled (which does cause a significant performance hit), without realising they can disable shadows from Preferences → Graphics the Shadows drop down. De-coupling automatic shadows enabling from ALM may help rectify this.
    • Similarly, local lights can be a performance hit with ALM as the number can be unlimited, as opposed to the cap of six rendered lights under non-ALM rendering), so the suggestion is to have a slider to allow the user define how many local lights are rendered in their view under ALM.
    • [Video: 38:22-39:48] removing the non-ALM rendering path would also mean the removal of the Atmospheric Shaders checkbox, the avatar cloth checkbox (which user generated content cannot access anyway), the Bump Mapping and Shiny (low, medium high) drop-downs,
  • [Video: 36:10-40:04] The Performance Improvements Floater viewer (still at Project viewer status at the time of writing, and not to be confused with the Performance Improvements viewer now at release status) makes some changes to graphics pre-sets:
    • The object mesh detail is not always set to Low (as per some TPVs already).
    • Changes to max no of non-impostor avatars is based on the graphics quality slider.
    • The core benchmarking for setting all pre-sets has been revised.
    • This work is all part of the “auto-FPS” improvements that for a part of the Performance Improvements Floater viewer.

Date of Next Meeting

Friday, July 8th, 2022.

 

2022 TPVD meetings week #19 summary: PBR materials

RockMead, April 2022 – blog post

The following notes were taken from the video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) of the Third-Party Viewer Developer (TPVD) meeting on Friday, May 13th, 2022 at 13:00  SLT. These meetings are chaired by Vir Linden, and dates for them can be obtained from the SL Public Calendar.

Important: as from this meeting, the TPV Developer meeting has moved to a four-week schedule.

Please note that this is a summary of the key topics discussed during the meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 0:00-6:22]

On Thursday, May 12th:

  • The Makgeolli Maintenance RC viewer (Maintenance M) viewer updated to version 6.5.6.571575.
  • The Performance Improvements RC viewer updated to version 6.6.0.571736.

On Tuesday, May 10th, the Performance Floater and Auto-FPS project viewer updated to version 6.5.4.571296.

The rest of the currently available official viewer versions remain as:

  • Release viewer: version version 6.5.5.571282 – formerly the MFA RC viewer, dated April 26, promoted Wednesday, May 4th – NEW.
  • Project viewers:
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Notes

  • The Performance Improvements RC viewer remains the next in line for promotion to de facto release status, the latest update to this viewer awaiting data on crash rates prior to potentially being promoted.
  • MFA Enforcement: the eventual plan with multi-factor authentication (MFA) is to “enforce” it for all users who have opted-in to using it so that when logging-in to SL on a viewer without MFA support, they will see a message requesting they either swap to using one with MFA support or disable MFA from their Second Life account dashboard.
    • It is not clear when such enforcement will commence. However, the official viewer, Catznip, Kokua and Cool VL are all known to support MFA, and an MFA version of Firestorm is in the works, so it is likely that the “enforcement” could come in the relatively near future.
    • There will be no change to logging into the viewer for users who have not opted to use MFA or who decided to disable it on their account.
  • https://viewer-login.agni.lindenlab.com/ is a URL referenced in the viewer log-in code, but is currently a redirect and not actually used. LL is therefore planning on removing it.

Additional Materials Support / PBR

[Video: 7:19-20:36]

Note: please also refer to my recent (April / May) CCUG meeting summaries.

Two area of work are currently in progress.

Materials Assets Support

One element of work is to provide “full” Physically Based Rendering (PBR) materials support utilising the glTF specification.

  • This work is currently focused on implementing a new materials asset type that will allow materials surfaces created utilising the PBR workflow to be imported to SL and then applied to their desired object face(s).
  • LL hopes that creators using PBR will also supply textures entries (e.g. a diffuse map + normal & specular maps (if required) + associated parameters as we know them today in the build floater) so that systems / clients that cannot / do not run the supporting PBR code can display these texture entries instead, rather than leaving objects with blank faces.
    • It has been suggested than any such use of “fallback” texture entries be an automated process, rather than something that has to be done manually by the creator.
    • Longer term, there will be some form of LSL support for this as well, although the extent of this has yet to be fully determined. However, it is liable to be along similar lines to texture application using LSL.
  • Once defined, the materials assets will be stored using the glTF 2.0 specification.

Reflection Probes / Environment Maps

A parallel piece of work is adding sport to SL for reflection probes to update the generation of the environment maps (because the current cube mapping used by SL is limited and would not work will with PBR).

  • The key point here is that the introduction of reflection probes + updated cube maps will work with both “PBR” and “legacy” content.
  • This work has been underway for the last couple of weeks, including input from some content creators / viewer developers.
  • “Outdoor” probes will likely be subject to automated placement, but with a hierarchy applied such that they don’t override probes placed inside structures.

General Notes

  •  In terms of user testing, the approach to this work is similar to that taken with Mesh:
    • Testing will initially be carried out on Aditi (the beta grid) as things develop, allowing various “PBR” and “legacy” content to be uploaded and tested, well before anything is implemented on the main grid or made widely available to users through the viewer.
    • Content creators wishing to test content are strongly advised to join the Discord discussions and join in with testing from there.
  • glTF mesh object uploads: this is on the roadmap of things the Lab would like to include in the initial project. However, depending on how work progresses and time frames imposed, it may not form a part of the initial work that is shipped and slip to being “tackled at some point”.
  • Support for materials variants within the glTF assets (e.g. to allow colour variants in fatpack items) is also under internal discussion at the Lab.

In Brief

  • [Video 21:09-23:30] The simulator fixes for off-line Group and Friend invites failing to update following acceptance should be surfacing on the RC channels in week #20.
  • [Video 22:44-27:40] a discussion on rigged meshes and bounding boxes focused on a change that was made to overcome issues of people creating oversized bounding boxes for their rigged meshes in order to avoid providing LODs (and forcing the viewer to always render them at a performance impact) that was recently reverted.
    • Runitai Linden explained that the revision was actually the result of changes made within the Performance Improvements Viewer that clashed with the rigged mesh bounding box changes, and that there is still an open issue to ensure the rigged mesh bounding box is always an appropriate size.
    • This rolled into a broader discussion on the complexities of rigged mesh visual size, scaling, bounding boxes / LODs selection, impact of the animation system, etc.
  • [Video 28:04-End] The above leads into a discussion on LODs in general and the idea of auto-LODding content vs. (good and bad) custom LOD creation (and what constitutes “good” LOD modelling – e.g. basing on surface area or triangle count?), LOD / LI conflicts, and trying to strike an equitable balance such that LODs can be “properly” defined and used.
    • As this discussion covers a lot of ground, I refer those interested to the video.

2022 CCUG + TPVD meetings week #16 summary (PBR)

Seagull Rock, March 2022 – blog post

The following notes were taken from:

  • My audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, April 21st 2022 at 13:00 SLT.
  • The video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) from the Third-Party Viewer Developer (TPVD) meeting on Friday, April 22nd, 2022 at 13:00  SLT.

These meetings are chaired by Vir Linden, and their respective dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in each meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 0:22-2:00 + notes from CCUG meeting]

The list below reflects the rest of the currently available official Second Life viewers:

  • Release viewer: version version 6.5.4.570575 – formerly the Lao-Lao Maintenance RC viewer, promoted Monday, April 18.
  • Release channel cohorts:
    • Performance Improvements RC viewer version 6.6.0.570163, dated April 4, issued April 14(?).
    • MFA RC viewer, update to version 6.5.4.569725, on March 24.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.569531, March 18.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Notes

  • The focus remains on fixing the bugs reported on the Performance Improvements RC viewer so that it can be the next viewer promoted to de facto release status. The RC version has been updated but has yet to be issued.
  • The promotion of the Lao-Lao viewer to release status means the current RC viewers are going through the merge with that codebase, and a new Maintenance RC should be appearing soon.
  • The Copy / Paste project viewer has been languishing in project viewer hell for some time whilst the focus on viewer work has been elsewhere. It is hoped that this well move forward once more Soon™.
  • [Video 6:26-7:35] Additional work is being carried out on the Legacy Profiles viewer (such as allowing the avatar UUID to be accessed via scripts by the likes of greeters that display the avatar image, etc.).

CCUG: Additional Materials Support / PBR: Hitting the RESET Button – CCUG Meeting

This formed the core of the CCUG meeting. The notes below should also be referenced with my notes from the previous CCUG meeting.

  • As previously noted LL had proposed a two-step approach towards moved to “full” Physically Based Rendering (PBR) materials support to give a high fidelity to SL rendering where PBR materials are used.
  • Significant concerns were raised about this approach at the last two meetings (e.g. a lot of creators do not use PBR-based workflows – a requirement for glTF – and so moving in this direction could create extensive issues for those creators).
  • As a result of the feedback, discussions at the Lab have been focused on an alternate approach:
    • Creation of a materials inventory type with an associated asset which could potentially have different forms (e.g. in one state it could be associated with PBR, another simply specify the legacy texture / materials parameters)
      • Where the PBR materials are specified, render using a  new “PBR render path”; if the legacy parameters are used, render via the existing render path.
    • Move directly to a PBR implementation.
    • This would initially be limited to the materials aspect of glTF and not support any geometry for objects that can also be held by a glTF file (so no uploading for uploading complete mesh objects as glTF) – which is not to stay upload support for other formats wouldn’t be added at some point in the undefined future).
  • However – the above bullet points are all still under discussion at the Lab, so no final decision on the overall approach has been made.
    • It has also been noted that whatever happens, a significant requirement will be to provide specifications on which materials types are going to be supported, and what people can expect.
    • It is hoped that at least some of the Lab’s approach can built off of existing specifications rather than reinventing the wheel, then extended into those “optional” materials should be supported.

Cube Maps / Reflection Model

  • A concern was raised that current cube mapping used by SL is limited, and would need to be updated to a higher resolution for PBR support to be effective.
    • LL are aware of the limitations of the current cube map and would be “looking to address that” – although indicated this may not be done for the initial release of any related work.
    • This led to concerns that any release of PBR materials support without any corresponding update to SL’s cube mapping will result in creators attempting to implement their own workarounds to perceived limitations, resulting in content at odds with any cube mapping updates the Lab does make.
    • This latter point wasn’t seen as a problem, as LL’s view is that any updates to SL’s cube map will only be relevant to content created after the update, and it was further suggested that any “initial” updates to support PBR (and sans cube maps updates, environment maps, etc., might not even be user-facing, but purely for internal use / testing.
  • A similar concern was raised over the current reflection model + environment maps – that if not considered / managed as a part of the PBR project, it will lead to very poor results or limit the use of PDR materials.
    • Again, LL’s view is that reflection map / probes / environment maps re something that will be tackled “later”; some creators are of the opinion that it needs to be tackled as a core element of the work.
    • LL suggested that they might offer support of static environment maps initially, and then move towards the ability to cast reflection probes to allow reflections to be dynamically generated. However, all of this is still being discussed internally at the Lab.
  • It was also pointed out that lighting / reflections in PBR are calculated on physical properties (e.g. lumen equivalency) – which currently isn’t possible in SL without significant update to the rendering system. This was again seen as something that could be handled “later”.
  • Concerns were also voiced over the idea of things being set aside for “later” on the basis that LL has a long track record of breaking projects down into “iterative phases” – only to deliver the first one or two, and then push further work off into the future for assorted reasons (Examples:. the original materials project, Animesh, Experience Keys, EEP, the in-world aspect of ARCTan (allowing for the fact ARCTan as a whole seems to have become stuck)), with the results they become “someday / never”.

General Questions

  • Will the addition of broader materials support with PBR lead to alterations to the land impact formula?
    • Potentially for content using PBR, but this has yet to be fully determined. The feeling among creators is that a re-balancing of the LI formula would be required.
    • However, LI calculations themselves are in need of overhaul to more accurately reflect the cost of rendering objects (something the Lab has planned to do as “phase 2” of adjusting rendering calculations as a whole under project ARCTan, so while not intrinsic to PBR, LI / rendering costs might be reviewed as an adjunct to this work.
  • Will this lead to an increase in region land capacities? No.
  • Will it apply to all new content, post implementation? Yes, with the exception of system avatars and content requiring the the Bake Service.
  • Will this approach allow scripted update / changes to materials on faces? That is something that will likely have to be “tackled latter”.
  • Will this mean further updates to the uploader? most likely, yes.

TPVD: Off-line Friendship / Group Offers + Simulator Capabilities

[Video: 3:22-6:14]

  • Monty Linden has been working to fix issues of off-line friendship and Group invitation offers failing.
  • This has required a complete overhaul of the related capabilities for handling such offers, with the focus being primarily on getting them working again. Although “at some future time” the functionality might be revisited to do “something bolder and more interesting with it.”
  • This work is going to QA, and will be moving to Aditi (DRTSIM-537) for further testing.
  • At the same time, Monty has also be updating the Simulator Capabilities wiki page
    • The focus had been on making sure the list of capabilities in up-to-date.
    • Work will now be going forward to update / provide the underpinning documentation for all the capabilities. This will be done on an as time permits basis.

TPV In Brief

  • [Video 7:38-26:00] Extensive discussion on updating / refactoring the viewer code, updating the viewer build process, LL’s thinking on moving to more recent graphics APIs (e.g. Vulkan) and the problems involved,
    • Some of this has been covered previously in these summaries (e.g. options for future graphics APIs, the number of users running systems unable to run Vulcan, etc).
    • Much of the discussion is well into the long grass of viewer code, etc., and thus you are referred to the video.
  • [Video: 26:25-37:10] Accessibility options (close captions for when Voice is being used; text to speech, etc).
    • Accessibility is something that is looked at during general UI design work, but there is no project looking at specific questions of accessibility. However, it is recognised that perhaps a more formalised approach to handling accessibility should be adopted.
    • The issue of allowing Voice to be set so that all speakers can be heard equally irrespective of distance from the listener (as once supported by several TPVS, see: BUG-23172) is apparently difficult to implement in the current Vivox implementation and so has been subject to discussions between LL and Vivox.
    • The question was asked if TPVs felt effort should be pushed into a significant Vivox update.
      • A suggested response was given that any attempt to update to Vivox 5 would require a “wholesale change” to the Voice service, LL might be better looking at alternative offerings that offer better means of support.
      • Based on feedback from the meeting, Mojo suggested the keenness for LL to focus on  large Voice related project isn’t there.
  • [Video: 37:43-43:05] Pathfinding:
    • It was suggested that Pathfinding could be improved if the options in the viewer were all moved to a single tab on the Build / Edit floater. LL agreed this would be beneficial and requested a Jira on the idea.
    • LL more broadly noted that Pathfinding could benefit from a re-visit / update, although there are no current plans for any work. Some ideas for potential work have been submitted via BUG-229442. This in turn leads to a broader discussion on some of the additional issues with Pathfinding (lack of cohesive documentation, complexity of use, lack of automatic region rebakes, etc.).
  • [Video: 43:05-46:49] The above flows into a discussion on custom pivot points, some that was being worked on by LL but has been on the shelf of late, and the complexities involved.
  • [Video: 48:15-60:00] A general discussion on land impact calculations and making them more reflective of the cost of rendering (particularly textures, etc.).
    • This touches upon the ARCTan project, which was originally initiated to overall the formulas used to calculate both avatar complexity and the complexity of in-world objects – the latter of which may have led to adjustment in LI calculations, although ARCTan went on to initially focus on avatar complexity prior to being suspended altogether.
    • Folded into this is further discussion of alternate methods of calculating LI (e.g. through object geometry – although this doesn’t necessarily account for draw calls, which tend to be a big hit for the viewer), and ideas for encouraging best practices / finding a balance between control and offering the ability to create and upload.
  • There is further informal discussion after the meeting has ended. Please refer to the video if interested.

 

2022 CCUG + TPVD meetings week #14 summary

Bella’s Lullaby, March 2022 – blog post

The following notes were taken from:

  • My audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, April 7th 2022 at 13:00 SLT.
  • The video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) from the Third-Party Viewer Developer (TPVD) meeting on Friday, April 8th, 2022 at 13:00  SLT.

These meetings are chaired by Vir Linden, and their respective dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in each meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 0:00-1:11 and 2:05-243] + notes from CCUG]

The list below reflects the rest of the currently available official Second Life viewers:

  • Release viewer: version version 6.5.3.568554 – formerly the Maintenance J&K RC viewer, promoted Monday, February 28 – No Change
  • Release channel cohorts (please see my notes on manually installing RC viewer versions if you wish to install any release candidate(s) yourself).
    • MFA RC viewer, update to version 6.5.4.569725, on March 24.
    • Performance Improvements RC viewer version 6.6.0.569349, dated March 14.
    • Lao-Lao Maintenance RC viewer, version 6.5.4.569191, issued on March 11.
  • Project viewers:
    • Performance Floater project viewer, version 6.5.4.569531, March 18.
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Notes

  • The focus is on fixing the bugs reported on the Performance Improvements RC viewer so that it can be the next viewer promoted to de facto release status. The RC version has been updated but has yet to be issued.
  • The Performance Floater project viewer includes the auto-FPS capability that is similar in nature to Firestorm’s Auto Tune capability designed to help maintain a given viewer frame rate (see here for more), and the aim is to try to sync these two approaches up before the Lab’s viewer moves to RC status.
  • The server-side work required for the Legacy Profiles viewer had been deployed, so that viewer should be updated and appearing soon.

Additional Materials Support – CCUG Meeting

Please also refer to my notes from the previous CCUG meeting.

  • The basic idea remains:
    • Providing the ability to import a glTF file with is single material within it containing all the textures / maps and colour parameters for a given face. Exactly which maps (normal, specular, emissive, roughness, albedo, occlusion, etc.) is still being defined.
    • When uploaded, the material then becomes an inventory asset.
    • When the asset is applied to the face of an object, it overrides the texture parameters for that face (diffuse, normal spec maps, full bright, etc.), with the options to edit these parameters in the Build / Edit tool disabled until such time as the material is removed from that face.
      • However, the face-related options – rotation, repeats per metre, offsets, etc., – would remain accessible.
    • This approach would faces to be textured under the existing system and have a materials asset applied so that viewers without the new materials code would render the “legacy” texture parameters for the object face, whilst viewers with the updated code would render the settings specified by material.
  • What is the benefit of this?
    • It moves SL towards proper support for PBR and the improvements that will bring.
    • Very simply put from an end-user perspective: it will help add depth to Second Life by improving the way surfaces appear be giving them improved surface texturing, reflectivity, and so on; and it will no longer require end-users fiddling around with textures and normal / specular maps to achieve something; they’ll have a simple asset they apply to (say) a wall, and that’s it.
  • The first pass of this work will provide support for Adobe Substance 3D Painter, and as such, LL are looking for feedback from creators who use Substance Painter in terms of how they use it, what kind of materials they are creating, and how they would like those materials represented in Second Life, what maps they would ideally like to see supported.
  • A concern raised with this approach is that glTF does not natively support non-PBR workflows, which is a problem for those who use Substance Painter “non-PBR” (such as clothing creators), and this needs to be taken into consideration.
    • One route around this is the suggestion that the materials actually be built at import time, rather than just built within Substance Painter and exported to glTF for import.
  • It was requested that some form of UI element should be added to the viewer to allow material assets to at least be inspected. While this is something that will be provided, it will not be in the first phase of the work.
  • Rendering for these “new” materials will be entirely separate to the existing rendering path for SL’s existing materials system, allowing for a more “industry standard” approach to be used with the new materials.
  • Whether or not a fee is to be charged for importing these materials is still TBD (and somewhat complex, if the importer is to support using texture files previously uploaded to SL, rather than having to import them again).
  • Longer-term the idea is at when PBR support is added, it will only work with these material assets; texture entries will continue to be handed as they are now (as noted above).
    • PBR itself is a complex issue both technically and in terms of content, and it is already envisaged that it will give rise to differing environments in-world (e.g. locations that are “PBR enabled” and require people to be running viewers capable of supporting PBR).
    • This is because SL content being what it is, there is no easy way to “PBR-ify” it all, and gain a uniform (or even desirable) result – particularly where content has been designed under the existing rendering capabilities to produce a specific result.
  • Given the complexities / impact of such a project, LL recognises there is a need to provide the means for ongoing real-time exchange of ideas / gathering creator input.
    • Neither the CCUG nor the SL forums are seen as a good fit for this kind of interaction.
    • The preferred option voiced in the meeting was to use Discord as a host. Server details TBD at this time, if this is selected.

From the TPVD Meeting

  • [Video: 4:41-9:10] It has been pointed out the 30-day validity period for an MFA token seems unusually long, and a request has been made to reduce it.
    • In particular, testing the MFA code and token refresh when looking at the viewer code is more difficult when the tester has to wait a month between tests and checks / retries.
  • [Video: 11:54-20:10] Beq Janus and Vaalith Jinn are working on “temp mesh” – a means to preview mesh and rigged mesh in-world without necessarily having to log to the Beta grid and upload there. As per the video, there are some issues (such as the temporary creation of linksets), but overall it is hoped with work will result in a usable capability.
    • This conversation folds into itself a broader discussion on purely viewer-side rendering (as opposed to rendering asset data coming via the CDN)
  • [Video: 20:12-25:16] Bandwidth setting confusion:  A claim was made the turning up the official viewer’s network bandwidth setting improves texture download speeds for those on faster Internet connections, prompting a request for the default setting being turned up.
    • Given that the network bandwidth setting is supposedly only for UDP messaging, and all assets, including textures, are transmitted via HTTP via CDN(s), some understandable doubt was cast on this.
    • While not ruling out changing the bandwidth setting causing a degree of improvement, Runitai’s thoughts on the matter (through looking at the code) fall into two areas:
      • Any actual delay in texture fetching is more likely to be with some of the background thread handling which has yet to be updated.
      • It is more likely that issues in texture loading / handling may be related to a number of issues, including a) the viewer mistakenly believing it is running out of VRAM (due to some coding errors) and immediately loading / unloading textures on the background threats; b) changes in how texture are actually downloaded and passed to the decode thread as a result of the move to HTTP that may be having an impact.
    • [Video: 28:53-29:35] In respect of this last bullet point above, it was indicated that TPVs tend to handle texture decoding, etc., somewhat differently, this is not believed to be an issue. A request has been made for a TPV to consider making a code contribution on this, so that LL can investigate making similar changes.
    • [Video: 32:53-44:20] Further discussion on texture fetching and the way the viewer code is generally conservative in this area.
      • [Video: 36:41-41:28] (overlapping with the above)] there is a restatement of the concern that raising the UDP bandwidth setting “because higher is better” could trigger a microburst buffer overrun on the server-side routers were the setting to be raised across all viewers. It is believed the servers are fairly well protected, but this needs to be confirmed by the infrastructure team before any such change is made.
  • [Video: 25:55-30:48] VRAM detection / use: changes are being tested (on Windows at present) whereby rather than setting a minimum default for VRAM (512 MB, a long-time sticking point for many users), LL are shifting to having the viewer query the operating system as to how much VRAM is free.
    • As an example of the potential improvement this has given, a system with 10 GB VRAM will see the viewer use as much of that VRAM as is available, whereas previously, the viewer would get up to using around 1.5 GB and then switch to texture paging.
    • Finding a similar solution for Mac system is somewhat more difficult due to the fact the only reliable report OS X provides is on the amount of installed VRAM, not how much may actually be available for an application to use / how much a process is using.
  • [Video: 45:14-47:16] does increasing the bandwidth setting improve teleporting between region?
    • Anecdotally, this appears to be the case for some.
    • However, whether there is a direct correlation between increasing the UDP bandwidth and inter-region TPs improving is hard to prove, although it is possible a message packet related to TPs is hitting the throttle and getting dropped without any attempted re-try.
  • [Video: 49:11-54:43] custom chat ranges: server-side support for extending chat ranges within regions beyond the default 20 metres (seen as useful for venues hosting meetings, presentations, etc.), was deployed some time ago, but is currently only available on Linden-controlled regions.
    • Wider availability of the capability has hit some privacy concerns (e.g. people believing their chat is limited to 20m in a public region being overheard by someone on the other side of the region). As such, the capability is awaiting viewer-side updates that make it clear to people entering regions where the chat range has been extended that this is the case.
    • This information is actually being sent to the viewer (RegionInfo in the RegionInfo 5 block), but the IU to handle it has yet to be added (and TPVs may not have been aware of its availability so they could create their own notifications).

2022 CCUG + TPVD meetings week #11 summary: mirrors! (maybe)

Aurora Falls, February 2022 – blog post

The following notes were taken from:

  • My audio recording and chat log of the Content Creation User Group (CCUG) meeting held on Thursday, March 17th 2022 at 13:00 SLT.
  • My audio recording and the video recording by Pantera (embedded at the end of this piece, my thanks to her as always for recording the meetings) from the Third-Party Viewer Developer (TPVD) meeting on Friday, March 4th, 2022 at 13:00  SLT.

These meetings are chaired by Vir Linden, and their respective dates and times can be obtained from the SL Public Calendar.

This is a summary of the key topics discussed in each meeting and is not intended to be a full transcript of either. However, the video does provide a complete recording of the TPVD meeting, and timestamps to the relevant points within it are included in the notes below.

Available Viewers

[Video: 0:35-3:15 + notes from CCUG]

  • The Performance Floater project viewer updated to version 6.5.4.569531, on March 18th. This viewer includes the Lab’s implementation of automatic adjustments to the viewer to try to maintain FPS. Monday, March 21st: Appears to have either been rolled back, or update to official viewers list was premature.

The list below reflects the rest of the currently available official Second Life viewers:

  • Release viewer: version 6.5.3.568554 – formerly the Maintenance J&K RC viewer, promoted Monday, February 28 – No Change
  • Release channel cohorts (please see my notes on manually installing RC viewer versions if you wish to install any release candidate(s) yourself).
    • MFA RC viewer, version 6.5.4.569309, issued on March 15.
    • Performance Improvements RC viewer version 6.6.0.569349, dated March 14.
    • Lao-Lao Maintenance RC viewer, version 6.5.4.569191, issued on March 11.
  • Project viewers:
    • Mesh Optimizer project viewer, version 6.5.2.566858, dated January 5, issued after January 10.
    • Legacy Profiles viewer, version 6.4.11.550519, dated October 26, 2020.
    • Copy / Paste viewer, version 6.3.5.533365, dated December 9, 2019.

General Viewer Notes

  • It is hoped that those using the official viewer and who are in the Performance Improvements RC cohort (or opt to manually install this viewer) will see noticeable performance improvements in terms of frame rates and fewer viewer stalls, when compared to previous SLV releases.
    • The RC has already seen some new bugs raised against it, and these are being worked on (e.g. BUG-231936).
    • It is still hoped this will be the next promotion to de facto release status, but this hinges on bug fixing and a decision on whether or not to release MFA as a dedicated viewer.
    • It is acknowledged that the work in this viewer and the Performance Floater project viewer needs to be reconciled with the work carried out by Beq Janus of the Firestorm team, whose code will be in the upcoming Firestorm 6.5.3 release.

MFA Viewer

  • Summary:
    • Multi-factor authentication (MFA) is coming to the viewer.
    • As MFA is implemented in the official viewer, there will be a “grace” period to allow TPV adopt the viewer code.
    • During this period, users will be able to access SL on TPVs as they currently do now, regardless of whether or not they have opted-in to MFA.
    • After this “grace” period, all users who have opted in to MFA will be required to authenticate themselves when using any viewer to log-in to Second Life (with the usual 30-day period of valid authentication, as per secondlife.com MFA), but those who have not opted-in to MFA will see no difference in their log-in steps, regardless of whether the viewer they are using supports MFA.
  • The RC version of the viewer, version 6.5.4.569309, was released on March 15th. This appears to have an authentication bug – BUG-231938 – related to how pass codes are parsed by the viewer.
The MFA RC viewer prompts those who have opted in to SL’s MFA capability to provide an authentication code / key (once every 30 days) in order to log-in to SL
  • [CCUG meeting] The decision has yet to be taken on whether to maintain MFA as a dedicated viewer update or possibly merge it with another RC viewer (e.g. the Maintenance RC) to streamline the number of active viewer versions and the QA process.

Mirrors! (Maybe)

[Video: 4:05-16:29]

  • In-world mirrors that reflect that reflect their surroundings – including avatars – have long been a requested capability in SL. Over the years, various attempts have been made to fake mirrors, such as using Linden Water and static photographic sets, though to “cheating” using projectors (albeit sans reflecting avatars) and the old means of duplicating sections of a build and inverting it so it appears to be reflections on a polished floor.
  • In 2014, Zi Ree of the Firestorm team developed a means of generating real time reflections, including avatars, within the viewer, and produced a video on the idea. At the time, due to various reasons (most notably the impact on performance), LL decided mirrors could not be supported, which has tended to remain their position since.

  • However, Mojo Linden (VP of Engineering) is now prepared to consider possibly enabling some implementation of mirrors in SL, although how this might be done is open to discussion, particularly as the potential for a massive performance impact is still very much a concern.
  • Suggestions made by Mojo on how this might be done included:
    • To have user-initiated “mirrors” (that is, there are “mirror” objects in a space, but the rendering of their “reflections” is only triggered for a viewer based on something like their proximity to the object).
    • To possibly limit mirrors in terms of what they reflect (such is things that are directly in front of them, rather than much further in the background or only render avatars with the background left white.
  • In terms of “triggering” mirrors, there was discussion on whether this should be automated or with user-controlled input:
    • Automated within the viewer:
      • The viewer detects the “mirror” object based on proximity, per above & renders the reflections. Discussion on this included the ideas that there could also be a Graphics preference option to completely enable or disable all mirror rendering by the viewer and a slider / drop-down to set the overall quality of the rendering of reflections (as is we already have for graphics quality (slider) and water reflections quality (drop-down)).
      • Automated via LSL (setting / unsetting flags on objects that trigger “reflection” rendering) or possibly using the interest list.
    • User controlled input: reflections are toggled in a manner similar to Media On A Prim: the user touches the “mirror” surface  and “reflections” are rendered only by their viewer – although this seems clunky / immersion breaking, even if it is an approach taken by games such as Cyberpunk 2077.
  • One suggestion from those at the meeting was to take the Linden Water planar reflections (which are rendered anyway, whether the Linden Water is visible or not) and render them at a lower resolution in screen space.
    • Using the Water planar could help with things like reflective floors, mirror walls, etc., although screen space rendering in SL can be subject to clipping.
    • Screenspace reflections (SSR) have appeared in some TPVs – like Firestorm and Niran’s Viewer, but how well these work is open to question – for Firestorm, there were issues with the release of materials that resulted in the code being removed.
    • One  suggestion make for limiting performance impact was to limit the viewer to rendering only the nearest mirror surface and either use SSR for the remaining mirrors or, don’t render them at all
  •  A lot depends on potential use-cases, and whether expectations can be managed – as there is a potential that any solution will not be able to meet all requirements, simply because of the risk of performance impact.
  • Everything on mirrors is purely at the discussion stage right now and there is currently no formal project – and indeed, there might never actually be any project to implement mirrors; however, that the topic is being discussed by LL marks a significant shift in thinking.

In Brief

From the Content Creation Meeting

A lot of general discussion on a number of topics, none of which is currently the focus of any Lab project, including:

  • Using physics to allow more “wiggling parts” – such as ears, etc., – on mesh avatars: a lot of this would come down to positioning the most suitable bones and rigging to them.
  • Controlling / ordering joint position overrides (BUG-231904 / BUG-231579): this is currently handled by mesh UUID – which can be random from the POV of the user. However, trying to order using the order things are added to an avatar could lead to race conditions, as the outfit system doesn’t have any concept of prioritising attachments, therefore a more structured schema – such as adding a specific field that could be set for objects – but even this could have conflicts and also likely to be a non-trivial piece of work.
  • Expansion of supported upload formats for mesh (e.g. glTF) and use of techniques such as PBR, with a stated preference (from creators) for SL handling of reflections / reflectivity to be overhauled before any attempt is made to add PBR support.
  • Expanding Bakes on Mesh to support materials – which as noted over the last several meetings would require a significant update to the Bake Service, which LL is not planning on doing in the foreseeable future.
    • A further complexity here is managing the proper ordering of the additional maps. Example: some users may want their shirt partially blended with their bra / vest normal; others might want their shirt to cover their bra /vest normal map whilst others may not want their bra / vest to have a normal at all; so how can these three states be collectively handled in terms of layering?
  • Further discussion on terrain – which is the subject of a project for 2022, although there is some split about increasing the texel density / increasing the resolution/repeats (and thus reducing the blurriness) + allowing normal maps, or allowing more in the way of mesh terrain (heightmaps, etc.).
    • Another request for terrain has been to allow greater compositing of textures (e.g. for more graduation in changes of textures by height or offering greater depth to terrain by layering-up textures.
    • A further request has been to allow terrain painting – e.g., being able to “paint in” dirt patches on grass, etc.
  • A request for a scripted means to apply EEP settings to oneself beyond the inventory Apply to Self such that (as an example), you buy a pair of sunglasses or tinted goggles, and they apply EEP setting that make your surrounding look darker. This would require a means to read and apply the contents of an object,

From the TPVD Meeting

  • [Video: 16:31-27:45 and 28:58-42:30] A broad-ranging discussion on the viewer build process and tool chain, moving to more recent graphics APIs (the likes of Vulkan and Metals are under consideration), resource utilisation within the Lab, future work on improving the viewer’s threading capabilities, etc.
    • Outside of the ongoing (/periodic) tool chain updates and graphics API investigations, none of discussion points are subject to any immediate / near-term project.
    • It was again pointed out that a issue in considering replacements for / alternatives to OpenGL is that a lot of users run older PC harder which is incapable of running more recent APIs like Vulkan.
    • As most of which will likely only be of interest to viewer devs, please refer to the video.
  • [Video 42:44-43:28] ARCTan project and Legacy Profiles:
    • Initiated in 2020, ARCTan is an attempt to re-evaluate both avatar rendering costs and the cost of in-world scene rendering, with the initial focus on avatar rendering cost / impact, itself running on two tracks:
      • Developing a new UI element in the viewer pull together information from various menus / debugs to display useable information on avatars / attachments that are heavy in rendering cost, and what can be done.
      • Gathering data with the intent to revise and improve the actual formulas used for calculating avatar complexity, making them more relevant.
    • ARCTan effectively went into hibernation as a singular project in the latter part of 2021, and is currently awaiting development bandwidth.
    • [Video 45:09-46:05] One of the issues with ARCTan was being able to pull together the data in a fine enough detail to make any UI used to make changes worthwhile. Beq Janus has tackled a lot of this work for the upcoming Firestorm release, and this is liable to be fed into projects like ARCTan and the Lab’s own work in improving viewer performance and making options visible to users.
    • Legacy Profiles is a project to move avatar profile information back into the viewer and away from using web pages. There is project viewer (see the list at the top of this article), but it has been awaiting some back-end server work to be completed, and it is hoped that the project will be moving forward “Soon™”.
  • [Video: 43:54-44:44] CEF: Chrome Embedded Framework (CEF) is the API used to manage media in SL. The SL version is now running several releases behind the current CEF version, and while a need to update has been noted, it is liable to require some significant work (e.g. updated UI elements as well as under-the-hood changes).
  • [Video 46:05-end] miscellany text conversations, mostly on the topics noted above.